Messages in this thread | | | From | Duncan Sands <> | Subject | Use of sti in entry.S question | Date | Thu, 22 May 2003 09:39:13 +0200 |
| |
2.5/arch/i386/kernel/entry.S:
In work_resched, schedule may be called with interrupts off:
work_resched: call schedule cli # make sure we don't miss an interrupt # setting need_resched or sigpending # between sampling and the iret movl TI_FLAGS(%ebp), %ecx andl $_TIF_WORK_MASK, %ecx # is there any work to be done other # than syscall tracing? jz restore_all testb $_TIF_NEED_RESCHED, %cl jnz work_resched <====== schedule with interrupts disabled
Is this a mistake or an optimization? Elsewhere in entry.S, interrupts are turned on before calling schedule:
#ifdef CONFIG_PREEMPT ENTRY(resume_kernel) cmpl $0,TI_PRE_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 movl $PREEMPT_ACTIVE,TI_PRE_COUNT(%ebp) sti <====== schedule with interrupts enabled call schedule movl $0,TI_PRE_COUNT(%ebp) cli jmp need_resched #endif
Thanks,
Duncan. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |