Re: preemption

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



asmlinkage void __sched preempt_schedule(void)
{
        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


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux