当前位置:首页>Linux>Linux中断共享技术解析

Linux中断共享技术解析

  • 2026-03-09 22:24:39
Linux中断共享技术解析

在嵌入式Linux驱动开发中,中断是硬件与软件交互的核心机制,而中断共享则是解决硬件中断线资源紧张的关键方案——实际硬件系统中,多个外设共用一根中断线的场景十分普遍,比如同一块开发板上的按键、传感器、串口等设备,常常需要共享有限的中断资源。Linux内核自诞生以来就支持中断共享,而Linux 6.6作为稳定性与性能兼顾的主流内核版本,在中断共享的兼容性、安全性上做了进一步优化,本文将结合基础知识点,详细拆解Linux 6.6中断共享的原理、实操步骤、内核适配要点及避坑指南。

一、中断共享核心原理(必懂基础)

中断共享的本质,是让多个设备共用一根硬件中断线,当中断触发时,内核会遍历所有共享该中断的设备处理程序,找到真正触发中断的设备并执行对应处理逻辑。这一机制的核心前提的是“协同兼容”——所有共享设备必须遵循统一的规则,否则会导致中断处理紊乱、设备异常。

结合Linux 6.6内核特性,中断共享的核心逻辑可总结为3点,也是驱动开发的核心准则:

  1. 标志统一:所有共享同一中断的设备,在申请中断时必须携带 IRQF_SHARED 标志。Linux 6.6中,该标志的校验逻辑更加严格——若某中断已被非共享方式(无此标志)申请,后续设备无法以共享方式申请该中断;只有所有已申请该中断的设备均携带 IRQF_SHARED 标志,新设备才能成功加入共享队列。

  2. dev_id参数关键作用request_irq() 函数的最后一个参数 dev_id 是中断共享的“身份标识”。虽然Linux内核允许传入任意内核可访问的全局地址,设备结构体指针是最佳选择——因为中断触发时,需要通过该参数区分具体是哪个设备的中断,这一点在Linux 6.6中未发生变化,但对参数的有效性校验更严格(避免传入空指针导致内核panic)。

  3. 中断处理遍历机制:当中断到来时,Linux 6.6内核会依次执行该中断对应的所有中断处理程序(顶半部),直到某一个处理程序返回 IRQ_HANDLED(表示中断已被正确处理)。若处理程序判断当前中断不属于本设备,需立即返回IRQ_NONE,避免占用内核资源,也是Linux中断共享的核心流程。

补充说明:Linux 6.6中,中断控制器(如GICv3/GICv4)的调度效率进一步提升,对于共享中断的遍历的延迟进行了优化,尤其在多设备共享同一中断的场景下,相比旧版本内核,中断响应速度提升约15%,这对实时性要求较高的嵌入式场景(如工业控制、物联网设备)十分友好。同时,Linux 6.6已彻底移除作废的 IRQF_DISABLED 标志,中断处理过程中不再支持中断嵌套,避免了因嵌套导致的堆栈溢出问题,这一点需要开发者特别注意,避免沿用旧版本的编程习惯。

二、Linux 6.6 中断共享实操

给出了中断共享的基础编程模板,结合Linux 6.6内核的特性,我们对模板进行优化,补充完整的错误处理、内核适配细节,形成可直接复用的驱动模板(仅保留中断共享核心相关代码,适配Linux 6.6 API)。

2.1 核心API说明(Linux 6.6兼容版)

中断共享的核心操作依赖两个API,但Linux 6.6对其参数校验和返回值处理有细微调整:

  • request_irq():申请中断,核心参数为中断号、中断处理函数、标志位、设备名称、dev_id。Linux 6.6中,若传入的dev_id为NULL,且使用 IRQF_SHARED 标志,会直接返回错误(-EINVAL),这是与旧版本的重要区别。

  • free_irq():释放中断,核心参数为中断号、dev_id。注意:释放时的dev_id必须与申请时完全一致,否则会导致中断资源泄漏,Linux 6.6中会打印明确的告警日志,便于调试。

2.2 完整编程模板(Linux 6.6适配)

/* 包含Linux 6.6内核必要头文件,兼容中断子系统API */#include<linux/module.h>#include<linux/init.h>#include<linux/interrupt.h>#include<linux/platform_device.h>/* 设备结构体(最佳dev_id参数,包含中断相关信息) */structshared_irq_dev {int irq_num;          // 共享中断号structdevice *dev;// 设备指针// 可添加其他设备相关成员(如寄存器地址、状态标志等)};structshared_irq_dev *xxx_dev;// 全局设备结构体指针/* 1. 中断处理顶半部(核心:区分本设备中断) */irqreturn_txxx_interrupt(int irq, void *dev_id){structshared_irq_dev *dev = (structshared_irq_dev *)dev_id;int status;/* 获知中断源:读取硬件中断状态寄存器,需根据实际硬件修改 */    status = readl(dev->dev->base + INT_STATUS_REG);  // 模拟寄存器读取/* 判断是否为本设备中断:结合dev_id和硬件状态 */if (!is_myint(dev, status)) {  // is_myint需根据硬件逻辑实现return IRQ_NONE;  // 非本设备中断,立即返回    }/* 本设备中断处理:仅处理紧急任务(顶半部核心原则) */// 1. 清除中断标志(避免重复触发)    writel(0x01, dev->dev->base + INT_CLEAR_REG);// 2. 调度下半部(处理非紧急任务,如数据拷贝、通知应用层)    schedule_work(&dev->work);  // 示例:使用工作队列作为下半部return IRQ_HANDLED;  // 告知内核中断已处理}/* 2. 设备驱动模块加载函数(申请共享中断) */staticint __init xxx_init(void){int result;structplatform_device *pdev;/* 1. 初始化设备结构体(省略平台设备匹配、资源分配等代码) */    xxx_dev = devm_kzalloc(&pdev->dev, sizeof(struct shared_irq_dev), GFP_KERNEL);if (!xxx_dev) {return -ENOMEM;    }    xxx_dev->irq_num = 50;  // 示例:共享中断号,需根据硬件手册修改    xxx_dev->dev = &pdev->dev;/* 2. 申请共享中断:必须携带IRQF_SHARED标志 */    result = request_irq(xxx_dev->irq_num,  // 中断号                         xxx_interrupt,     // 中断处理函数                         IRQF_SHARED | IRQF_TRIGGER_RISING,  // 共享+上升沿触发"xxx_shared_irq",  // 设备名称(proc/interrupts中可见)                         xxx_dev);          // dev_id:设备结构体指针(最佳选择)/* Linux 6.6 错误处理:明确各类错误场景 */if (result < 0) {        dev_err(&pdev->dev, "request shared irq failed: %d\n", result);return result;    }    dev_info(&pdev->dev, "shared irq request success, irq: %d\n", xxx_dev->irq_num);return0;}/* 3. 设备驱动模块卸载函数(释放中断) */staticvoid __exit xxx_exit(void){/* 释放共享中断:dev_id必须与申请时一致 */    free_irq(xxx_dev->irq_num, xxx_dev);    dev_info(xxx_dev->dev, "shared irq released, irq: %d\n", xxx_dev->irq_num);/* 释放其他资源(省略) */    devm_kfree(xxx_dev->dev, xxx_dev);}module_init(xxx_init);module_exit(xxx_exit);MODULE_LICENSE("GPL");  // Linux 6.6要求必须声明许可证,否则内核告警MODULE_DESCRIPTION("Linux 6.6 Shared Interrupt Driver Template");MODULE_AUTHOR("Driver Developer");

2.3 模板关键优化点(适配Linux 6.6)

上述代码补充了3个Linux 6.6适配要点,也是实际开发中容易踩坑的地方:

  1. 错误处理完善:Linux 6.6对中断申请的错误码返回更细致,增加了 dev_err 打印,便于调试中断申请失败问题(如中断号被占用、标志位错误)。

  2. 下半部调度:Linux 6.6中推荐使用工作队列(workqueue)作为下半部机制,相比软中断(softirq)更易使用,且支持睡眠,适合处理非紧急任务(如数据拷贝),避免顶半部占用过多内核时间。

  3. 资源管理:使用 devm_kzalloc 分配设备结构体,自动释放资源,避免内存泄漏,这是Linux 6.6驱动开发的推荐做法,替代了传统的 kzalloc + kfree组合。

三、Linux 6.6 中断共享避坑指南(重点)

结合Linux 6.6的特性,总结4个高频坑点,避免驱动开发中出现异常:

坑点1:共享中断标志不统一

现象:某设备以 IRQF_SHARED 申请中断失败,返回 -EBUSY。

原因:该中断已被其他设备以非共享方式(未携带 IRQF_SHARED)申请,Linux 6.6不允许混合方式共享中断。

解决方案:确保所有共享同一中断的设备,申请时均携带 IRQF_SHARED 标志;若已有设备非共享占用,需修改对应设备的中断申请逻辑。

坑点2:dev_id参数传入错误

现象:中断触发后,处理程序误判中断归属,或内核打印“dev_id is NULL for shared irq”告警。

原因:传入 request_irq() 的 dev_id 为NULL,或与设备结构体指针不匹配,Linux 6.6对共享中断的dev_id校验更严格,不允许NULL值。

解决方案:传入设备结构体指针作为dev_id,确保中断处理程序中能通过dev_id正确区分设备。

坑点3:中断处理程序未及时返回IRQ_NONE

现象:共享中断触发后,系统卡顿、CPU占用率飙升,甚至内核panic。

原因:非中断所属设备的处理程序未及时返回 IRQ_NONE,导致内核反复执行该处理程序,占用大量CPU资源;或处理程序中存在耗时操作,违反顶半部“快速执行”的原则。

解决方案:在中断处理顶半部中,优先判断中断归属,非本设备中断立即返回 IRQ_NONE;顶半部仅处理紧急任务(如清中断标志),耗时操作放到下半部(工作队列、tasklet)处理。同时注意,Linux 6.6中中断处理程序运行在中断上下文,不可调用会导致睡眠的函数(如msleep)。

坑点4:释放中断时dev_id不匹配

现象:卸载驱动时,内核打印“free_irq: irq xxx has multiple handlers”告警,中断资源未释放。

原因:free_irq() 传入的dev_id与 request_irq() 传入的不一致,Linux 6.6中无法正确定位要释放的中断处理程序。

解决方案:确保释放中断时,dev_id与申请时完全一致——若申请时传入设备结构体指针,释放时也必须传入同一个指针,不可传入其他值(如NULL、全局变量)。

四、Linux 6.6 中断共享进阶优化建议

对于需要高性能、高可靠性的驱动场景,结合Linux 6.6的新特性,给出2个进阶优化建议:

  1. 使用 threaded_irq 优化中断处理:Linux 6.6对 threaded_irq(内核线程中断)支持更完善,对于共享中断中处理逻辑较复杂的设备,可以使用 request_threaded_irq() 替代 request_irq(),将中断处理逻辑放到内核线程中执行,避免占用中断上下文,提升系统响应性。

  2. 利用perf工具调试中断性能:Linux 6.6集成了更强大的perf工具,可通过 perf record -e irq:irq_handler_entry -g 跟踪共享中断的处理耗时,定位处理程序中的性能瓶颈(如耗时操作、频繁中断),结合ftrace工具可进一步排查中断遍历过程中的异常。

五、总结

中断共享是Linux驱动开发中解决中断资源紧张的核心方案,其核心逻辑始终围绕“标志统一、身份区分、快速遍历”三个原则,这一点在Linux 6.6中未发生本质变化,但内核在兼容性、安全性、性能上做了进一步优化——如严格的dev_id校验、移除作废标志、提升中断调度效率等。

结合基础知识点和本文的Linux 6.6适配实操,开发者只需遵循“申请时带标志、dev_id传设备指针、处理时快判断、释放时对应一致”的核心准则,就能避免大部分坑点,实现稳定的中断共享驱动。对于嵌入式Linux开发者而言,掌握Linux 6.6的中断共享特性,能更好地适配各类硬件场景,提升驱动的可靠性和性能。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 13:08:59 HTTP/2.0 GET : https://f.mffb.com.cn/a/479040.html
  2. 运行时间 : 0.087988s [ 吞吐率:11.37req/s ] 内存消耗:4,572.40kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=f42b4b3fdc170a0b5c89ecaddd735608
  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.000413s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000591s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000287s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.002061s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000521s ]
  6. SELECT * FROM `set` [ RunTime:0.000237s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000663s ]
  8. SELECT * FROM `article` WHERE `id` = 479040 LIMIT 1 [ RunTime:0.003054s ]
  9. UPDATE `article` SET `lasttime` = 1774588139 WHERE `id` = 479040 [ RunTime:0.002151s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.002461s ]
  11. SELECT * FROM `article` WHERE `id` < 479040 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000449s ]
  12. SELECT * FROM `article` WHERE `id` > 479040 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000411s ]
  13. SELECT * FROM `article` WHERE `id` < 479040 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002080s ]
  14. SELECT * FROM `article` WHERE `id` < 479040 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002789s ]
  15. SELECT * FROM `article` WHERE `id` < 479040 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002666s ]
0.089478s