当前位置:首页>Linux>Linux 6.6设备驱动分层技术解析:从思想到实战落地

Linux 6.6设备驱动分层技术解析:从思想到实战落地

  • 2026-07-01 00:45:15
Linux 6.6设备驱动分层技术解析:从思想到实战落地

在Linux内核的演进过程中,设备驱动的分层设计始终是核心思想之一——它通过“分而治之”的思路,将复杂的驱动逻辑拆解为不同层级,隔离硬件差异与通用逻辑,既提升了代码复用性,又降低了驱动开发与维护的成本。Linux 6.6作为近年来的稳定版内核,在保留经典分层架构的基础上,对各层的接口、性能和兼容性进行了进一步优化,让分层思想的落地更高效、更灵活。

本文将结合Linux设备驱动分层的核心理论,搭配Linux 6.6内核的实际案例,从分层思想本质、核心分层实例、6.6版本优化、实战建议四个维度,带你彻底搞懂Linux设备驱动的分层技术。

一、分层思想的本质:用面向对象思维解耦驱动逻辑

很多开发者误以为Linux内核是纯C语言实现,就没有面向对象的设计——但实际上,设备驱动的分层设计,正是面向对象“继承、多态”思想的C语言落地。Linux内核为同类设备设计通用框架,核心层实现通用功能,底层驱动只需关注硬件相关逻辑,必要时重写核心层函数,这正是“基类(核心层)+ 子类(底层驱动)”的设计思路。

分层设计的核心目标是解耦,具体可拆解为三个维度:

  • 隔离硬件差异:底层驱动只处理与具体硬件相关的操作(如GPIO配置、寄存器读写),无需关心内核VFS接口、I/O模型等通用逻辑;

  • 复用通用代码:核心层实现同类设备的共性逻辑(如缓冲区管理、事件上报、设备注册),所有底层驱动可直接复用,避免重复开发;

  • 降低维护成本:当硬件迭代或内核升级时,只需修改底层驱动的硬件适配部分,核心层逻辑无需改动,提升驱动的可移植性。

Linux 6.6对这种思想的延续,体现在对核心层接口的标准化和简化上——无论是input、RTC还是tty驱动,核心层都提供了更简洁、更安全的API,让底层驱动开发更聚焦于硬件本身。

二、Linux 6.6核心设备驱动分层实例解析

详细介绍了input、RTC、Framebuffer、tty、misc等设备的分层架构,结合Linux 6.6的内核特性,我们重点解析几个高频使用的分层实例,看看新版本如何优化分层体验。

1. 输入设备驱动(input子系统):标准化事件上报,兼容更多设备

输入设备(按键、键盘、触摸屏等)是嵌入式系统中最常见的设备,其分层架构在Linux 6.6中更加完善,核心分为三层:核心层(input core)、事件层(evdev)、底层驱动层

核心层(drivers/input/input.c)提供设备分配、注册、事件上报的通用API,如input_allocate_device()、input_register_device(),这些接口在Linux 6.6中增加了更多参数校验,避免非法注册导致的内核崩溃;事件层(drivers/input/evdev.c)实现了file_operations接口,负责将底层上报的事件转发给用户空间,Linux 6.6优化了evdev的缓冲区管理,减少了事件丢失的概率;底层驱动层则负责硬件中断处理、键值/坐标读取,只需调用核心层API上报事件即可。

以GPIO按键驱动为例(drivers/input/keyboard/gpio_keys.c),Linux 6.6中该驱动的分层优势更加明显:

  • 底层驱动只需配置GPIO中断、按键电平等硬件参数,通过input_event()、input_report_key()上报事件;

  • 核心层自动处理事件缓冲区、同步机制,无需底层驱动关注;

  • 用户空间通过/dev/input/eventX节点读取事件,无需关心底层硬件差异——无论是GPIO按键还是I2C键盘,用户接口完全统一。

代码片段(Linux 6.6简化版):

// 底层中断处理函数,仅负责上报事件staticirqreturn_tgpio_keys_irq_isr(int irq, void *dev_id){structgpio_button_data *bdata = dev_id;structinput_dev *input = bdata->input;    spin_lock_irqsave(&bdata->lock, flags);// 上报按键按下事件    input_event(input, EV_KEY, button->code, 1);    input_sync(input); // 同步事件    spin_unlock_irqrestore(&bdata->lock, flags);return IRQ_HANDLED;}

2. RTC设备驱动:通用核心层+底层硬件适配,简化开发

RTC(实时钟)驱动的分层核心是“通用核心层(rtc-dev.c)+ 底层硬件驱动”,Linux 6.6延续了这一架构,并优化了rtc_device_register()接口的兼容性,支持更多新型RTC芯片。

核心层(drivers/rtc/rtc-dev.c)实现了file_operations接口(open、read、ioctl等),以及RTC时间设置、闹钟配置等通用逻辑;底层驱动只需实现rtc_class_ops结构体中的硬件相关函数(read_time、set_time等),并通过rtc_device_register()注册设备,核心层会自动“转发”用户空间的请求到底层。

例如S3C6410的RTC驱动(drivers/rtc/rtc-s3c.c),在Linux 6.6中只需实现rtc_class_ops实例,即可完成驱动开发,无需关注字符设备的注册、I/O模型等通用逻辑:

// 底层硬件操作集staticconststructrtc_class_opss3c_rtcops = {    .read_time     = s3c_rtc_gettime,  // 读取硬件时间    .set_time      = s3c_rtc_settime,  // 设置硬件时间    .read_alarm    = s3c_rtc_getalarm, // 读取闹钟    .set_alarm     = s3c_rtc_setalarm, // 设置闹钟};// probe函数中注册RTC设备,核心层自动处理通用逻辑staticints3c_rtc_probe(struct platform_device *pdev){structrtc_device *rtc;    rtc = devm_rtc_device_register(&pdev->dev, "s3c", &s3c_rtcops, THIS_MODULE);if (IS_ERR(rtc)) return PTR_ERR(rtc);return0;}

3. misc设备驱动:简化非标准字符设备开发

对于globalfifo这类无法归类的非标准字符设备,Linux提供了miscdevice框架,其分层核心是“misc核心层(misc.c)+ 底层驱动”,Linux 6.6进一步优化了misc_register()接口,支持动态分配次设备号,简化了驱动注册流程。

misc核心层的主设备号固定为10,核心层通过register_chrdev()注册通用字符设备,底层驱动只需填充miscdevice结构体(指定设备名、file_operations),调用misc_register()即可完成注册,核心层会自动创建设备节点、管理次设备号。

Linux 6.6中globalfifo驱动(基于miscdevice+platform架构)的核心优化:

  • 支持devm_xxx接口,自动管理内存,无需手动释放;

  • misc核心层自动将miscdevice实例赋值为file->private_data,底层驱动可通过container_of()快速获取设备结构体;

  • 结合platform_driver架构,实现驱动与设备的分离,提升可移植性。

4. tty/串口驱动:多层泛化,适配更多串口设备

tty驱动的分层的是“cdev层 → tty核心层 → 串口核心层 → 底层UART驱动”,Linux 6.6优化了serial_core.c中的uart_driver接口,支持更多高速串口(如115200bps以上速率),并简化了uart_ops结构体的实现。

核心逻辑:tty核心层(tty_io.c)实现file_operations接口,串口核心层(serial_core.c)将tty_operations泛化为uart_ops,底层UART驱动只需实现uart_ops中的硬件操作(start_tx、stop_tx等),即可完成串口驱动开发,无需关注tty核心层的通用逻辑。

5. Framebuffer设备驱动小结(Linux 6.6特性适配)

Framebuffer(帧缓冲)驱动作为图形显示类设备的核心,其分层架构延续“核心层(fb_core)+ 底层硬件驱动”的设计,Linux 6.6对其进行了针对性优化,进一步强化分层解耦与性能表现。核心层(drivers/video/fbdev/core/fbmem.c)实现了file_operations通用接口、显存管理、显示参数配置等核心逻辑,统一了用户空间访问接口(/dev/fbX),开发者无需手动实现显示数据的传输、格式转换等通用操作。

底层驱动仅需聚焦硬件适配,实现fb_ops结构体中的硬件相关函数,如显存地址映射、显示时序配置、像素格式设置等,通过register_framebuffer()接口注册设备,核心层会自动完成后续的通用逻辑调度。Linux 6.6的关键优化的在于,优化了fb_core与底层驱动的显存交互效率,减少了数据拷贝开销,同时新增了对高分辨率、高刷新率显示设备的支持,适配更多新型显示面板。

小结来看,Framebuffer驱动的分层设计,与input、RTC等子系统逻辑一致,核心仍是“通用逻辑复用、硬件差异隔离”,Linux 6.6的优化让其在图形显示场景下,既保证了驱动的可移植性,又提升了显示性能,适配嵌入式设备中多样化的显示需求。

三、Linux 6.6对驱动分层的关键优化

相比旧版本内核,Linux 6.6在驱动分层方面的优化,主要集中在“简化开发、提升性能、增强兼容性”三个方面,重点优化了以下几点:

1. 通用API的标准化与简化

Linux 6.6对input、RTC、misc等核心层的API进行了梳理,删除了过时接口,新增了devm_xxx系列接口(如devm_input_allocate_device、devm_rtc_device_register),实现内存自动管理,减少底层驱动的内存泄漏风险;同时统一了各层接口的参数格式,降低了跨版本移植的成本。

2. 性能优化:减少分层调用开销

分层设计不可避免会带来函数调用开销,Linux 6.6通过两个方式优化:一是简化核心层与底层驱动的调用链路,减少不必要的参数校验;二是对高频调用的接口(如input_event、fb_write)进行inline优化,提升执行效率。例如Framebuffer驱动的fb_write()函数,Linux 6.6中优化了通用逻辑与底层重写的切换逻辑,减少了条件判断的开销。

3. 兼容性提升:支持更多新型硬件

Linux 6.6扩展了各核心层的适配范围,例如input核心层新增了对触摸手势的支持,RTC核心层支持更多低功耗RTC芯片,misc核心层优化了动态次设备号的分配逻辑,避免次设备号冲突,让分层架构能够适配更多新型硬件。

4. 调试体验优化

Linux 6.6为各分层核心层增加了更多调试日志,通过printk分级输出核心层与底层驱动的交互过程,开发者可通过dmesg快速定位驱动问题(如设备注册失败、事件上报异常);同时新增了sysfs接口,可通过/sys/class/xxx查看设备的分层状态,简化调试流程。

四、分层驱动开发实战建议(基于Linux 6.6)

给开发者提供几点实战建议,帮助快速上手分层驱动开发:

1. 优先复用核心层API,避免重复开发

开发驱动时,首先查看Linux 6.6内核是否已提供对应设备的核心层框架,例如开发按键驱动优先基于input子系统,开发非标准字符设备优先使用miscdevice框架,不要直接实现file_operations接口——这样既能减少代码量,又能保证驱动的兼容性和稳定性。

2. 严格遵循分层边界,不跨层操作

底层驱动只处理硬件相关逻辑(寄存器读写、中断处理),不直接操作VFS接口、缓冲区等核心层负责的内容;核心层只实现通用逻辑,不涉及具体硬件的细节。例如,底层驱动不要直接调用vfs_write(),应通过核心层提供的API上报数据。

3. 利用platform架构分离驱动与设备

结合platform_driver与platform_device架构,将硬件参数(如GPIO号、缓冲区大小)与驱动逻辑分离,底层驱动通过platform_data或设备树获取硬件参数,实现驱动的跨平台复用——这也是Linux 6.6推荐的驱动开发模式。

4. 关注内核版本差异,做好移植适配

如果从旧版本内核移植驱动到Linux 6.6,需重点关注核心层API的变化,例如某些旧接口(如input_register_device的旧参数)已被废弃,需替换为新版本接口;同时注意devm_xxx接口的使用,避免内存泄漏。

五、总结:分层思想的核心价值与未来趋势

Linux设备驱动的分层设计,本质上是“通用逻辑复用、硬件差异隔离”的设计哲学,而Linux 6.6的优化,让这种哲学的落地更加高效。无论是input、RTC等标准设备,还是misc这类非标准设备,分层架构都能让驱动开发更简单、维护更高效。

未来,随着嵌入式硬件的多样化和内核的不断演进,驱动分层架构将进一步完善——核心层会更加通用、标准化,底层驱动会更加轻量化,甚至出现更多自动化生成工具,让开发者无需关注分层细节,只需聚焦硬件适配即可。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 20:46:31 HTTP/2.0 GET : https://f.mffb.com.cn/a/493019.html
  2. 运行时间 : 0.250861s [ 吞吐率:3.99req/s ] 内存消耗:4,699.91kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=9fc281937e7b70f8abe205b1accb767f
  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.001014s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001511s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001112s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.049823s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001617s ]
  6. SELECT * FROM `set` [ RunTime:0.005032s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001648s ]
  8. SELECT * FROM `article` WHERE `id` = 493019 LIMIT 1 [ RunTime:0.002815s ]
  9. UPDATE `article` SET `lasttime` = 1783082791 WHERE `id` = 493019 [ RunTime:0.044524s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.002123s ]
  11. SELECT * FROM `article` WHERE `id` < 493019 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.002014s ]
  12. SELECT * FROM `article` WHERE `id` > 493019 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.013941s ]
  13. SELECT * FROM `article` WHERE `id` < 493019 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.006545s ]
  14. SELECT * FROM `article` WHERE `id` < 493019 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.017562s ]
  15. SELECT * FROM `article` WHERE `id` < 493019 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.018710s ]
0.252551s