Fix this up a bit to match reality. Needs more work, and so do some

other manpages describing scheduling-related functions.
This commit is contained in:
fvdl 2003-05-13 09:56:27 +00:00
parent 15c573fc50
commit c6626dc295
1 changed files with 28 additions and 25 deletions

View File

@ -1,4 +1,4 @@
.\" $NetBSD: ctxsw.9,v 1.15 2003/04/04 20:33:21 wiz Exp $
.\" $NetBSD: ctxsw.9,v 1.16 2003/05/13 09:56:27 fvdl Exp $
.\"
.\" Copyright (c) 1996, 2002 The NetBSD Foundation, Inc.
.\" All rights reserved.
@ -40,16 +40,16 @@
.Sh NAME
.Nm mi_switch ,
.Nm cpu_switch
.Nd switch to another process context
.Nd switch to another light weight process
.Sh SYNOPSIS
.Ft void
.Fn mi_switch "struct proc *curp" "struct proc *newp"
.Ft void
.Fn cpu_switch "struct proc *curp" "struct proc *newp"
.Ft int
.Fn mi_switch "struct lwp *cur" "struct lwp *new"
.Ft int
.Fn cpu_switch "struct lwp *cur" "struct lwp *new"
.Sh DESCRIPTION
The
.Fn mi_switch
function implements the machine-independent prelude to a process
function implements the machine-independent prelude to an LWP
context switch.
It is called from only a few distinguished places in the kernel code
as a result of the principle of non-preemptable kernel mode execution.
@ -60,27 +60,27 @@ can be enumerated as follows:
.It
From within
.Xr tsleep 9
when the current process voluntarily relinquishes the CPU to wait for
when the current LWP voluntarily relinquishes the CPU to wait for
some resource to become available.
.It
From within
.Xr preempt 9
when the current process voluntarily relinquishes the CPU or when the
when the current LWP voluntarily relinquishes the CPU or when the
kernel prepares a return to user-mode execution.
.It
In the signal handling code
if a signal is delivered that causes a process to stop
if a signal is delivered that causes an LWP to stop
.Pq see Xr issignal 9 .
.El
.Pp
.Fn mi_switch
records the amount of time the current process has been running in the
process structure and checks this value against the CPU time limits
allocated to the process
records the amount of time the current LWP has been running in the
LWP structure and checks this value against the CPU time limits
allocated to the LWP
.Pq see Xr getrlimit 2 .
Exceeding the soft limit results in a
.Dv SIGXCPU
signal to be posted to the process, while exceeding the hard limit will
signal to be posted to the LWP, while exceeding the hard limit will
cause a
.Dv SIGKILL .
If
@ -90,27 +90,27 @@ is
.Fn mi_switch
will invoke
.Xr chooseproc 9
to select a new process from the system run queue.
If the new process is the same as the current process, then control is
returned immediately to the process, avoiding any unnecessary overhead
associated with switching in a new process.
to select a new LWP from the system run queue.
If the new LWP is the same as the current LWP, then control is
returned immediately to the LWP, avoiding any unnecessary overhead
associated with switching in a new LWP.
Otherwise,
.Fn mi_switch
hands over control to the machine-dependent function
.Fn cpu_switch ,
which will perform the actual process context switch.
which will perform the actual LWP context switch.
.Pp
The
.Fn cpu_switch
function switches the new process onto the CPU.
This procedure is performed by saving the process context of the current
process in its process control block (PCB) and restoring the process
context of the new process.
The address space of the new process is activated using
function switches the new LWP onto the CPU.
This procedure is performed by saving the LWP context of the current
LWP in its process control block (PCB) and restoring the LWP
context of the new LWP.
The address space of the new LWP is activated using
.Fn pmap_activate
(see
.Xr pmap 9 ) .
Finally, the new process is checked to see if it was previously
Finally, the new LWP is checked to see if it was previously
preempted while inside a restartable atomic sequence
.Pq see Xr ras 9 .
.Pp
@ -121,6 +121,9 @@ and at the
.Xr splsched 9
interrupt protection level.
Both functions return with the scheduler lock released.
.Sh RETURN VALUES
These functions return 1 if a context switch was performed to a different
LWP, 0 otherwise.
.Sh SEE ALSO
.Xr SCHED_LOCK 9 ,
.Xr chooseproc 9 ,