Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

userret(9) [netbsd man page]

USERRET(9)						   BSD 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 com- pleted its time slice. o Update the scheduler state. SEE ALSO
cpu_need_resched(9), postsig(9), preempt(9), scheduler(9) BSD
December 20, 2005 BSD

Check Out this Related Man Page

SCHED_4BSD(9)						   BSD Kernel Developer's Manual					     SCHED_4BSD(9)

NAME
sched_4bsd -- The 4.4BSD thread scheduler SYNOPSIS
#include <sys/sched.h> void resetpriority(lwp_t *l); void sched_tick(struct cpu_info *ci); void sched_schedclock(lwp_t *l); void sched_pstats_hook(struct proc *p, int minslp); void sched_setrunnable(lwp_t *l); void updatepri(lwp_t *l); DESCRIPTION
The traditional 4.4BSD scheduler employs a ``multilevel feedback queues'' algorithm, favouring interactive, short-running threads to CPU- bound ones. resetpriority() recomputes the priority of a thread running in user mode. If the resulting priority is higher than that of the current thread, a reschedule is arranged. sched_tick() gets called from hardclock(9) every 100ms to force a switch between equal priority threads. The priority of the current thread is adjusted through sched_schedclock(). The priority of a thread gets worse as it accumulates CPU time. sched_pstats_hook() gets called from sched_pstats() every Hz ticks in order to recompute the priorities of all threads. sched_setrunnable() checks if an LWP has slept for more than one second. If so, its priority is updated by updatepri(). CODE REFERENCES
The 4.4BSD scheduler subsystem is implemented within the file sys/kern/sched_4bsd.c. SEE ALSO
csf(9), hardclock(9), mi_switch(9), sched_m2(9), userret(9) Marshall Kirk McKusick, Keith Bostic, Michael J. Karels, and John S. Quarterman, The Design and Implementation of the 4.4BSD Operating System, Addison Wesley, 1996. BSD
July 14, 2007 BSD
Man Page