ksoftirqd 被中断-小问题
本帖最后由 wzw200 于 2015-02-01 22:00 编辑内核线程ksoftirqd 在执行do_softirq处理一个软中断--taskletA时候被中断的了,
进而执行irq_exit->do_softirq--taskletA,这个函数又是可重入的了
这样会不会出问题
1、中断退出执行的irq_exit
2、内核线程ksoftirqd
这两种情况是怎能么实现互互斥的呢,
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1966733
asmlinkage void do_softirq(void)
{
__u32 pending;
unsigned long flags;
//
// 这个函数判断,如果当前有硬件中断嵌套,或者
// 有软中断正在执行时候,则马上返回。在这个
// 入口判断主要是为了与 ksoftirqd 互斥。
//
if (in_interrupt())
return;
没看明白! do_softirq
{
//禁止中断,保存中断标志
local_irq_save(flags);
。。。。。。。
//恢复之
local_irq_restore(flags);
}
看了其它人的帖子,好像有这个 软中断是不能再被其他软中断打断的,只有硬中断可以打断软中断去执行中断上半部,所以你说的这个问题应该不存在啊。 回复 3# ran4029
那个软中断线程,在执行do_softirq的时候,应该是这样的,只是想不通他是怎么实现的
do_softirq()中有两个非常值得注意的地方:
asmlinkage void do_softirq(void)
{
/* 如果当前CPU指令运行于中断或者软中断文境中,必须直接返回。
这可以回答guotie的问题, local_bh_disable()的实际作用是标志当前任务_互斥_软中断。
1. 如果软中断文境下,任务在__do_softirq()函数时,被中断打断,进入中断处理,中断执行完后,再次进入软中断,到达这里就会返回。
2. 还有一个,就是如果在内核任务ksoftirqd文境中执行 do_softirq()的时候,被中断打断后,也不会实质进入软中断,这样可以避免大部分的内核同步问题 */
if (in_interrupt())
return;
local_irq_save(flags);
if (local_softirq_pending()) {
curctx = current_thread_info();
这是我查的资料,我想不通,第二种情况是怎么实现的, asmlinkage void do_softirq(void)
{
__u32 pending;
unsigned long flags;
if (in_interrupt())
return;
local_irq_save(flags);
pending = local_softirq_pending();
if (pending)
__do_softirq();
local_irq_restore(flags);
}
asmlinkage void __do_softirq(void)
{
struct softirq_action *h;
__u32 pending;
int max_restart = MAX_SOFTIRQ_RESTART;
int cpu;
pending = local_softirq_pending();
account_system_vtime(current);
__local_bh_disable((unsigned long)__builtin_return_address(0));
lockdep_softirq_enter();
cpu = smp_processor_id();
............................
_local_bh_enable();
}
static inline void __local_bh_disable(unsigned long ip)
{
add_preempt_count(SOFTIRQ_OFFSET);
barrier();
}
好吧,我想明白了 回复 6# wzw200
http://bbs.chinaunix.net/thread-4165519-1-1.html
我之前有发过一个帖子。应该跟你这个疑问略有相同之处。只不过我现在也还未完全明白
其中的关键点儿应该集中在 中断返回 时堆栈恢复 与 软中断调度的区别
回复 7# anyhit
中断返回 时堆栈恢复 与 软中断调度的区别
这个这几天,我看明白了,我一会到你那里给你回下,
我看这块的时候,都是自己想偏了,CPU怎么运行,还要看代码
QQ:88486969
页:
[1]