当前位置:首页>Linux>Linux驱动软件架构解析

Linux驱动软件架构解析

  • 2026-03-26 09:14:58
Linux驱动软件架构解析

作为连接Linux内核与硬件的核心纽带,驱动程序的架构设计直接决定了系统的兼容性、可维护性与可扩展性。Linux从诞生之初就致力于打破“硬件与驱动强耦合”的困境,而随着Linux 6.6内核的发布,这一理念得到了进一步强化——新增的硬件支持、优化的驱动框架,让“一次编写、多平台复用”的目标变得更加易实现。本文将深入解析Linux 6.6驱动软件架构的设计精髓、核心原则,并结合实操场景说明其落地逻辑。

一、核心前提:Linux驱动架构的设计初衷

与RTOS或无操作系统环境下“为单一硬件定制驱动”的简单模式不同,Linux作为支持约30种体系结构、上百种硬件的通用操作系统,其驱动架构的核心诉求只有一个:最大化可重用性与跨平台能力

编写DM9000网卡驱动时,理想状态是“一行代码不改,就能在所有支持该网卡的硬件平台上运行”。但在早期驱动编写中,开发者常陷入这样的困境——为适配不同板子的基地址、中断号,不得不写大量嵌套的#ifdef条件判断

#ifdef  BOARD_XXX#define DM9000_BASE 0x10000#define DM9000_IRQ 8#elif defined(BOARD_YYY)#define DM9000_BASE 0x20000#define DM9000_IRQ 7#elif defined(BOARD_ZZZ)#define DM9000_BASE 0x30000#define DM9000_IRQ 9…#endif

这种写法在Linux 6.6中已被彻底摒弃,因为它存在三大致命问题,完全违背了通用驱动的设计理念:

  1. 可维护性极差:适配100个板子就需要100次if/else判断,新增硬件时必须修改驱动源码,属于典型的“复制-粘贴”式冗余开发,不仅效率低,还极易引入bug;

  2. 扩展性不足:无法支持同一板子上多个同类型设备(如两个DM9000网卡),需重复定义多个宏,新增设备时需重构代码;

  3. 耦合度极高:依赖make menuconfig的编译选项决定代码逻辑,不符合Linux 3.x以来“一个映像适配多个硬件”的目标,也与Linux 6.6强调的“动态适配”理念相悖。

Linux 6.6之所以能高效支持Atheros QCA8081、MediaTek MT7988等新型网络硬件,以及惠普BIOS管理、ASUS设备充电模式控制等新功能,核心就在于其架构设计彻底解决了上述痛点——通过“分离”与“分层”,实现驱动与硬件、驱动与内核的解耦。

二、架构核心:三大设计思想(Linux 6.6落地强化)

Linux驱动架构的灵魂,重点强调的“分层”“分隔”与“总线-设备-驱动”三大思想。Linux 6.6在继承这些核心逻辑的基础上,对细节进行了优化,让架构更贴合现代硬件的发展需求,同时降低了驱动开发门槛。

1. 总线-设备-驱动模型:解耦硬件与驱动的核心

解决“驱动与硬件强耦合”的关键,就是将“设备信息”与“驱动逻辑”彻底分离——这正是Linux总线-设备-驱动(Bus-Device-Driver)模型的核心。Linux 6.6进一步强化了这一模型的灵活性,尤其是在设备树(Device Tree)的支持上,让设备信息的配置更便捷、更通用。

其核心逻辑可概括为“三分离、一匹配”:

  • 设备(Device):负责存储硬件的具体信息(基地址、中断号、引脚配置等),在Linux 6.6中,这些信息主要通过设备树(.dts文件)定义,无需写入驱动源码。例如,DM9000网卡的基地址和中断号,可直接在设备树中配置,驱动通过标准API读取即可;

  • 驱动(Driver):只负责实现硬件的操作逻辑(如网卡的数据收发、按键的中断处理),不包含任何与具体硬件平台相关的硬编码,实现“驱动通用化”。Linux 6.6中,驱动的probe函数会自动匹配设备树中兼容的设备,无需手动绑定;

  • 总线(Bus):作为“中间人”,负责管理设备和驱动的匹配逻辑。Linux 6.6支持的总线类型(PCI、USB、I2C、SPI、Platform等)均优化了匹配算法,例如Platform总线优先通过设备树的compatible属性匹配,I2C总线通过设备地址匹配,匹配成功后自动调用驱动的probe函数初始化设备。

这种模型让“驱动放之四海而皆准”成为现实:同一DM9000驱动,无需修改任何代码,只需在不同硬件的设备树中配置对应的设备信息,就能在该平台上正常运行。这也是Linux 6.6能快速适配大量新型硬件的关键——开发者只需编写通用驱动,再通过设备树适配不同硬件,极大提升了开发效率。

2. 分层设计:简化驱动开发,提升复用性

编写按键驱动时,开发者只想处理“中断触发、汇报按键值”的硬件操作,而不想关注file_operations、阻塞/非阻塞I/O、多路复用等与内核接口相关的复杂逻辑。Linux的分层设计,正是为了解决这个问题——将驱动分为“核心层”和“硬件抽象层”,各司其职、互不干扰。

Linux 6.6进一步完善了分层架构,以输入设备(按键、触摸屏、鼠标)为例,其分层逻辑分为三层:

  1. 用户层:通过read()、write()等系统调用与驱动交互,无需关注底层实现;

  2. 核心层(Input Core):由内核提供,统一实现file_operations、I/O模型、事件汇报机制等通用逻辑,所有输入设备都可复用这部分代码。Linux 6.6中,Input核心层优化了事件上报效率,同时支持更多新型输入设备(如GameSir T4 Kaleid控制器)的事件类型;

  3. 硬件抽象层(Driver):由开发者编写,仅关注具体的硬件操作(如按键中断的注册、按键值的读取),通过input_event()等核心层提供的API,将硬件事件上报给核心层,无需处理与内核接口相关的复杂逻辑。

这种分层设计的优势极为明显:对于所有输入设备,核心层代码完全复用,开发者只需编写硬件抽象层的少量代码,就能完成驱动开发。例如,编写按键驱动时,只需注册中断、读取按键状态,再调用核心层API上报事件,无需实现file_operations结构体——这也是Linux 6.6降低驱动开发门槛的重要手段。

3. 分隔设计:解决M:N耦合,实现最大化复用

除了分层,Linux驱动架构还引入了“分隔”思想,核心是解决“主机控制器与外设驱动强耦合”的问题。以SPI总线为例,揭示了一个典型的网状耦合困境:若有M个主机控制器、N个外设,不进行分隔则需要编写M×N个驱动,而分隔后只需M+N个驱动,复用性呈指数级提升。

Linux 6.6对分隔思想进行了进一步优化,以SPI、I2C总线为例,其核心逻辑是“提炼中间核心层,将主机控制器与外设驱动分离”:

  • 主机控制器驱动:负责实现主机控制器的底层操作(如SPI控制器的寄存器读写、时钟配置),不关心具体连接的外设,只需向核心层提供通用API;

  • 外设驱动:负责实现外设的具体逻辑(如SPI外设的数据处理),不关心连接的是哪个主机控制器,只需调用核心层提供的通用API与主机控制器交互;

  • 核心层:负责统一管理主机控制器和外设,提供标准化的API接口,实现主机与外设的任意组合。

举个实际例子:Linux 6.6支持的高通Wi-Fi 7(ath12k)驱动,就采用了这种分隔设计——ath12k驱动作为外设驱动,无需关心底层的SPI/PCI主机控制器是哪一款,只需调用核心层API即可完成数据传输;而不同CPU的SPI控制器驱动,也无需关心连接的是Wi-Fi芯片还是其他外设,只需实现核心层要求的接口。这种设计,让ath12k驱动能快速适配不同CPU平台,也让SPI控制器驱动能复用在多种外设上。

分隔设计将原本的M:N网状耦合,转化为M:1:N的星形耦合,既符合“高内聚、低耦合”的软件工程原则,也让Linux 6.6能高效支持多主机、多外设的复杂硬件场景。

三、Linux 6.6驱动架构的新增优化与实践要点

基于上述三大核心思想,Linux 6.6在驱动架构上做了诸多细节优化,进一步提升了驱动的可复用性、稳定性和开发效率,同时适配了更多新型硬件,以下是几个关键实践要点:

1. 设备树的强化:简化设备信息配置

Linux 6.6完善了设备树的解析机制,支持更多硬件属性的动态配置,开发者无需修改驱动源码,只需通过设备树就能完成硬件信息的适配。例如,对于DM9000网卡,只需在设备树中配置其基地址、中断号、引脚等信息,驱动通过of_address_get()、of_irq_get()等API读取这些信息,即可完成初始化,彻底摒弃了早期的#ifdef条件判断

此外,Linux 6.6新增了对龙芯LoongArch架构的设备树支持,同时优化了RISC-V架构的设备树接口,让设备树能更好地适配异构架构硬件,进一步提升了跨平台能力。

2. 核心层API的优化:降低开发门槛

Linux 6.6对Input、SPI、I2C等核心层的API进行了优化,提供了更多便捷的接口,简化了驱动开发流程。例如:

  • Input核心层新增了input_register_device_with_properties()函数,支持驱动在注册设备时动态设置设备属性,无需手动配置sysfs节点;

  • SPI核心层优化了spi_message_add_tail()函数的性能,减少了外设与主机控制器之间的数据传输延迟,提升了SPI设备的响应速度;

  • 引入devm_kzalloc()等资源管理函数,自动回收驱动卸载时的内存资源,避免内存泄漏,简化了驱动的生命周期管理。

3. 新增硬件支持:架构适配新型设备

Linux 6.6新增了大量硬件驱动,这些驱动均严格遵循“分层、分隔、总线-设备-驱动”的架构设计,例如:

  • 网络硬件:支持Atheros QCA8081、MediaTek MT7988/MT7981等新型PHY芯片,Realtek rtl8xxxu Wi-Fi芯片新增AP模式支持,高通ath12k驱动支持EHT PHY,提升Wi-Fi 7的传输性能;

  • 外设驱动:新增HP-BIOSCFG驱动,支持在Linux中直接管理惠普笔记本的BIOS设置;新增Cirrus Logic CS42L43音频编解码器驱动、GMC LED驱动等,丰富了外设支持范围;

  • 图形驱动:优化了英伟达、英特尔、AMD的开源图形驱动,支持NVIDIA T4 GPU的Secondary Bus Reset功能,提升图形设备的稳定性和性能。

4. 安全性与稳定性优化

Linux 6.6引入了Shadow Stack硬件安全功能,用于保护Intel CPU免受堆栈覆盖攻击,同时优化了驱动的内存管理机制,减少了驱动导致的内核崩溃问题。此外,完全移除了无线USB和Ultra-Wideband的代码,精简了内核体积,也降低了驱动架构的维护成本。

四、总结:Linux 6.6驱动架构的核心价值与开发启示

Linux 6.6的驱动软件架构,本质上是对“可复用、低耦合、跨平台”理念的进一步落地与强化。其核心价值在于:通过“总线-设备-驱动”模型实现硬件与驱动的解耦,通过分层设计简化开发流程,通过分隔设计最大化代码复用,最终让开发者能以更低的成本、更高的效率,编写适配多平台、多硬件的通用驱动。

对于驱动开发者而言,理解Linux 6.6的架构设计,能让我们跳出“为单一硬件写驱动”的局限,学会用“分层、分隔”的思维设计驱动——核心就是“各司其职”:驱动只管硬件操作,设备只管硬件信息,总线只管匹配,核心层只管通用逻辑。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 11:42:14 HTTP/2.0 GET : https://f.mffb.com.cn/a/482511.html
  2. 运行时间 : 0.313287s [ 吞吐率:3.19req/s ] 内存消耗:4,816.03kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=56ac437014b0e943d8c1245987a9c6ea
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000818s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001382s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.003794s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000708s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001292s ]
  6. SELECT * FROM `set` [ RunTime:0.001891s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001527s ]
  8. SELECT * FROM `article` WHERE `id` = 482511 LIMIT 1 [ RunTime:0.015205s ]
  9. UPDATE `article` SET `lasttime` = 1774582934 WHERE `id` = 482511 [ RunTime:0.004418s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.003057s ]
  11. SELECT * FROM `article` WHERE `id` < 482511 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001454s ]
  12. SELECT * FROM `article` WHERE `id` > 482511 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.003477s ]
  13. SELECT * FROM `article` WHERE `id` < 482511 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.046232s ]
  14. SELECT * FROM `article` WHERE `id` < 482511 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.031196s ]
  15. SELECT * FROM `article` WHERE `id` < 482511 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.033311s ]
0.317212s