发布时间:2013-04-04 11:31:22
spinlock的实现 2011-12-31 14:26:33分类: LINUXLinux spin_lock的实现 Spin_lock是Linux内核的一种同步机制。内核代码可以通过获得spin_lock宣称对某一资源的占有,直到其释放该spin_lock;如果内核代码试图获得一个已经锁定的.........【阅读全文】
发布时间:2013-04-03 14:37:23
由于2.6内核可以抢占,应该在驱动程序中使用 preempt_disable() 和 preempt_enable(),从而保护代码段不被抢占(禁止 IRQ 同时也就隐式地禁止了抢占)。preempt_disable和preempt_enable调用。spin_lock_irq的功能和上面的spin_lock提供的功能差不多,只不过它还多做了一步,就是把中断也关上,主要用于当前保护的数据在.........【阅读全文】
发布时间:2013-04-02 18:00:10
当从内核态返回到用户态的时候,要检查是否进行调度,而调度要看两个条件:1.preempt_count是否为02.rescheduled是否置位 ret_from_exception: preempt_stop(CLBR_ANY)ret_from_intr: GET_THREAD_INFO(%ebp)check_userspace: movl PT_EFLAGS(%esp), %eax # mi.........【阅读全文】
发布时间:2013-04-02 17:44:53
Linux 关中断 与 开中断 如果你要禁止所有的中断该怎么办? 在2.6内核中,可以通过下面两个函数中的其中任何一个关闭当前处理器上的所有中断处理,这两个函数定义在 <asm/system.h>中: void local_irq_save(unsigned long flags); void local_irq_di.........【阅读全文】
发布时间:2013-04-02 15:25:13
Linux 的softirq机制是与SMP紧密不可分的。为此,整个softirq机制的设计与实现中自始自终都贯彻了一个思想:“谁触发,谁执行”(Who marks,Who runs),也即触发软中断的那个CPU负责执行它所触发的软中断,而且每个CPU都由它自己的软中断触发与控制机制。这个设计思想也使得softirq 机制充分利用了SMP系.........【阅读全文】