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:
- 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).
- 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.
- Update the scheduler state.
SEE ALSO
cpu_need_resched(9),
postsig(9),
preempt(9),
scheduler(9)