USERRET(9)             NetBSD Kernel Developer's Manual             USERRET(9)

NAME
     userret -- return path to user-mode execution

SYNOPSIS
     #include <sys/lwp.h>
     #include <sys/sched.h>

     void
     userret(struct lwp *l);

DESCRIPTION
     The userret() function is executed after processing a trap (e.g., a
     system call or interrupt) before returning to user-mode execution.  The
     implementation is machine dependent and is never invoked from machine-
     independent code.  The function prototype for each architecture may be
     different to the prototype above, however the functionally provided by
     the userret() function on each architecture is essentially the same.

     Specifically, the userret() function performs the following procedure:

           o   Detect a change in the signal disposition of the current
               process and invoke postsig(9) to post the signal to the
               process.  This may occur when the outcome of the trap or
               syscall posted a signal to the process (e.g., invalid
               instruction trap).

           o   Check the want_resched flag to see if the scheduler requires
               the current process to be preempted by invoking preempt(9) (see
               cpu_need_resched(9)).  This may occur if the clock interrupt
               causes the scheduler to determine that the current process has
               completed its time slice.

           o   Update the scheduler state.

SEE ALSO
     cpu_need_resched(9), postsig(9), preempt(9), scheduler(9)

NetBSD 5.0_STABLE              December 20, 2005             NetBSD 5.0_STABLE
