2013年3月9日

内核中的原子上下文

摘要: 引述自:http://blog.csdn.net/lizhibin1091666592/article/details/6976254 内核的一个基本原则就是:在中断或者说原子上下文中,内核不能访问用户空间,而且内核是不能睡眠的。也就是说在这种情况下,内核是不能调用有可能引起睡眠的任何函数。一般来讲原子上下文指的是在中断或软中断中,以及在持有自旋锁的时候。内核提供了四个宏来判断是否处于这几种情况里:#define in_irq() (hardirq_count()) //在处理硬中断中#define in_softirq() (softirq_count()) //在处理软中断... 阅读全文

posted @ 2013-03-09 22:09 阿加 阅读(1470) 评论(0) 推荐(0) 编辑

PREEMPT_ACTIVE

摘要: thread_info中的preempt_count域设置当前进程是否可被抢占,但是我们还得注意下内核中会用到preempt_count() & PREEMPT_ACTIVE,这就是判断preempt_count 的PREEMPT_ACTIVE是否被置位,preempt_count的PREEMPT_ACTIVE位只有在内核抢占中才会被置位。__irq_svc: svc_entry#ifdef CONFIG_PREEMPT get_thread_info tsk ldr r8, [tsk, #TI_PREEMPT] @ get preempt count add... 阅读全文

posted @ 2013-03-09 22:01 阿加 阅读(2042) 评论(1) 推荐(1) 编辑

导航