首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ftrace如何跟踪中断服务例程?

ftrace如何跟踪中断服务例程?
EN

Stack Overflow用户
提问于 2017-01-08 15:40:58
回答 1查看 774关注 0票数 1

ftrace用于内核的函数跟踪。现在它是如何对中断起作用的。能在中断模式下跟踪内核功能吗?如果是的话,你能解释一下它是如何工作的吗?我正在尝试编写一个跟踪函数调用的函数,它在Supervisor模式下工作良好,但在中断模式(进入循环)中不工作。我需要使它在IRQ模式下工作。

EN

回答 1

Stack Overflow用户

发布于 2017-01-08 20:45:25

Linux内核ARM异常堆栈init的细节一样,Linux使用的IRQ堆栈的数量很少。ARM有几个存储寄存器,包括用于IRQ模式的lrsp。在Linux内核中,这些寄存器仅用于向监管器(8K)堆栈传输信息。这个监督堆栈是每个内核进程分配的,还包含一个任务上下文块,其中包含指向内存管理器、调度程序和文件系统信息的指针。

因此,在Linux中,监控程序栈拥有所有模式的堆栈信息,包括FIQ、IRQ、未定义指令、数据和指令错误。这意味着只需要跟踪一个堆栈。entry-armv.S中包含特殊信息(伪汇编程序),例如UNWIND(.fnend)ENDPROC(__irq_usr),它们用ELF信息对内核进行注释,以创建允许堆栈跟踪代码理解堆栈上数据布局的展开表。

ARM Linux中的矢量页面映射还有一些额外的细节,比如vector_name汇编程序宏,它执行堆栈/模式切换。vector_name汇编程序宏是在IRQ模式下实际执行的唯一代码。irq_usrirq_svc在监控器模式下执行,并使用主管堆栈。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41534450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档