78 关于 ksoftirqd 进程

前言

这个 主要是 最开始的时候了解驱动的时候, 看到的一系列的 case, 这里 来大致剖析一下 相关的道理

这些模块 是怎么和内核交互的, 内核的这些业务是怎么实现的 

这里主要是一个模块创建了一个 hrtimer, 然后 0.3秒后执行, 然后 在执行的过程中递归加入当前任务到下一次队列   

然后这里主要是设计了 模块来调用 timer 的相关系统函数, 以及 kthread 的相关知识  

ksoftirqd 的执行主要是处理 相关软中断 

 

 

ksoftirqd 的执行

ksoftirqd 进程的执行主要是处理 未执行的软中断相关

如果没有活干了, 则 ksoftirqd 会阻塞 

如果是在 __do_softirq 处理的期间又有新的 软中断 加入队列, 则此处会唤醒 ksoftirqd 进程来处理具体的软中断 

 

__do_softirq 的执行是在那些进程? 

根据代码 以及汇编 以及上下文 推到, task 是放在 rcx 

 

比如这里的 apic_timer_interrupt 是由 244号 进程 sh 来触发的 

 比如这种 中断的处理 是由 8号 进程 ksoftirqd 来触发的 

 

ksoftirqd 工作线程的主要业务如下 

循环检查 是否有待处理的软中断, 如果有 则进行处理, 如果没有 调用 schedule 调度其他进程 

 

 

发送软中断, 也会尝试唤醒 ksoftirqd

 

 

ksoftirqd 进程的创建 

 

然后在 kthread_create_on_node 中会将 ksoftirqd 放到 create->list, 中由 kthreadd 来创建该进程 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值