QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1031|回复: 0

弱问 :2.6下的softirq是如何被触发的?

[复制链接]
发表于 2005-3-26 17:50:00 | 显示全部楼层 |阅读模式
1 :   2.6下的硬件中断,在do_IRQ()中好象没有调用(直接或间接)do_softirq()

2:    entry.S 中ret_from_intr只有跳到resume_kernel
ENTRY(resume_kernel)
        cli
        cmpl $0,TI_preempt_count(%ebp)        # non-zero preempt_count ?
        jnz restore_all
need_resched:
        movl TI_flags(%ebp), %ecx        # need_resched set ?
        testb $_TIF_NEED_RESCHED, %cl
        jz restore_all
        testl $IF_MASK,EFLAGS(%esp)     # interrupts off (exception path) ?
        jz restore_all
        call preempt_schedule_irq
        jmp need_resched
#endif

才出现了call preempt_schedule_irq,但在preempt_schedule_irq()中,我也没找到调用(直接或间接)do_softirq()。

3: 在一些lock中却有调用(直接或间接)do_softirq()。
    如seqlock.h
#define write_sequnlock_bh(lock)                                        \
        do { write_sequnlock(lock); local_bh_enable(); } while(0)



所以现在我很糊涂,不知在哪执行的softirq(),请高手指教。谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 11:49 , Processed in 0.039956 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表