通常、このフラグは割り込みおよびシステムコールの戻りパスでチェックされます - 割り込みまたはシステムコールから戻るときにフラグが設定されていて、(割り込みの場合) カーネルがプリエンプティブルである場合、カーネルは戻る前に再スケジューリング関数の 1 つを呼び出します。 .
たとえば、arch/x86/kernel/entry_32.S では:
358 ENTRY(resume_userspace)
359 LOCKDEP_SYS_EXIT
360 DISABLE_INTERRUPTS(CLBR_ANY) # make sure we don't miss an interrupt
361 # setting need_resched or sigpending
362 # between sampling and the iret
363 TRACE_IRQS_OFF
364 movl TI_flags(%ebp), %ecx
365 andl $_TIF_WORK_MASK, %ecx # is there any work to be done on
366 # int/exception return?
367 jne work_pending
368 jmp restore_all
369 END(ret_from_exception)
need_resched は TI_flags のビット フラグであり、need_resched のビットを_TIF_WORK_MASK
含むほとんどの TI_flags ビットを含むことに注意してください。他にも同様のチェックが多数あり、カーネルへの戻りパスにも明示的なチェックがあります。