May 18, 2007 CPU_NEED_RESCHED 9

### NAME

cpu_need_resched - context switch notification

### SYNOPSIS

```void` cpu_need_resched(```struct cpu_info *ci``, int flags`)

### DESCRIPTION

The cpu_need_resched(``) function is the machine-independent interface for the scheduler to notify machine-dependent code that a context switch from the current LWP, on the cpu ```ci`, is required. This event may occur if a higher priority LWP appears on the run queue or if the current LWP has exceeded its time slice.

If ```RESCHED_IMMED` flag is specified in ```flags`, machine-dependent code should make a context switch happen as soon as possible. In that case, for example, if ```ci` is not the current processor, cpu_need_resched(``) typically issues an inter processor call to the processor to make it notice the need of a context switch as soon as possible.

### EXAMPLES

Specifically, the cpu_need_resched(``) function will perform the following operations:

- Set a per-processor flag which is checked by userret(9) when returning to user-mode execution.

- Post an asynchronous software trap (AST).

- Send an inter processor interrupt to wake up cpu_idle(``).

### SEE ALSO

sched_4bsd(9), userret(9)