{
struct thread_info *ti = current_thread_info();
#ifdef CONFIG_PREEMPT_BKL
struct task_struct *task = current;
int saved_lock_depth;
#endif
/*
* If there is a non-zero preempt_count or interrupts are disabled,* we do not want to preempt the current task. Just return..
*/
if (likely(ti->preempt_count || irqs_disabled()))
return;
The above line from sched.c file shows that If we have any lock on the current process means preempt_count is > 0 , then we can't preempt that process; even if any process higher than that comes.
On Thu, Jul 30, 2009 at 2:31 PM, er krishna <erkrishna@xxxxxxxxx> wrote:
Dear All,
I have some confusion about preemption. Can anybody please clear my query :
1) If there are two process running in kernel space & one of them has a lock & its preempt_count value is +ve , can the other process preempt it ? If it preempt the first process ( which is in running state with a lock ) , then how ( weather the second process has its priority must be higher than the running one ? )?
Thanks & Best Regards,
Krishna