Remove references to the old giant kernel lock in various comments.

This commit is contained in:
John Baldwin 2001-08-24 16:46:15 +00:00
parent ccdbd10cb7
commit a0f831f573
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=82279
5 changed files with 12 additions and 84 deletions

View File

@ -76,18 +76,6 @@
* must restore them prior to calling 'iret'. The cpu adjusts the %cs and
* %ss segment registers, but does not mess with %ds, %es, or %fs. Thus we
* must load them with appropriate values for supervisor mode operation.
*
* On entry to a trap or interrupt WE DO NOT OWN THE MP LOCK. This means
* that we must be careful in regards to accessing global variables. We
* save (push) the current cpl (our software interrupt disable mask), call
* the trap function, then call doreti to restore the cpl and deal with
* ASTs (software interrupts). doreti will determine if the restoration
* of the cpl unmasked any pending interrupts and will issue those interrupts
* synchronously prior to doing the iret.
*
* At the moment we must own the MP lock to do any cpl manipulation, which
* means we must own it prior to calling doreti. The syscall case attempts
* to avoid this by handling a reduced set of cases itself and iret'ing.
*/
#define IDTVEC(name) ALIGN_TEXT; .globl __CONCAT(X,name); \
.type __CONCAT(X,name),@function; __CONCAT(X,name):
@ -197,9 +185,6 @@ calltrap:
* final spot. It has to be done this way because esp can't be just
* temporarily altered for the pushfl - an interrupt might come in
* and clobber the saved cs/eip.
*
* We do not obtain the MP lock, but the call to syscall might. If it
* does it will release the lock prior to returning.
*/
SUPERALIGN_TEXT
IDTVEC(lcall_syscall)
@ -214,9 +199,6 @@ IDTVEC(lcall_syscall)
* Even though the name says 'int0x80', this is actually a TGT (trap gate)
* rather then an IGT (interrupt gate). Thus interrupts are enabled on
* entry just as they are for a normal syscall.
*
* We do not obtain the MP lock, but the call to syscall might. If it
* does it will release the lock prior to returning.
*/
SUPERALIGN_TEXT
IDTVEC(int0x80_syscall)

View File

@ -76,18 +76,6 @@
* must restore them prior to calling 'iret'. The cpu adjusts the %cs and
* %ss segment registers, but does not mess with %ds, %es, or %fs. Thus we
* must load them with appropriate values for supervisor mode operation.
*
* On entry to a trap or interrupt WE DO NOT OWN THE MP LOCK. This means
* that we must be careful in regards to accessing global variables. We
* save (push) the current cpl (our software interrupt disable mask), call
* the trap function, then call doreti to restore the cpl and deal with
* ASTs (software interrupts). doreti will determine if the restoration
* of the cpl unmasked any pending interrupts and will issue those interrupts
* synchronously prior to doing the iret.
*
* At the moment we must own the MP lock to do any cpl manipulation, which
* means we must own it prior to calling doreti. The syscall case attempts
* to avoid this by handling a reduced set of cases itself and iret'ing.
*/
#define IDTVEC(name) ALIGN_TEXT; .globl __CONCAT(X,name); \
.type __CONCAT(X,name),@function; __CONCAT(X,name):
@ -197,9 +185,6 @@ calltrap:
* final spot. It has to be done this way because esp can't be just
* temporarily altered for the pushfl - an interrupt might come in
* and clobber the saved cs/eip.
*
* We do not obtain the MP lock, but the call to syscall might. If it
* does it will release the lock prior to returning.
*/
SUPERALIGN_TEXT
IDTVEC(lcall_syscall)
@ -214,9 +199,6 @@ IDTVEC(lcall_syscall)
* Even though the name says 'int0x80', this is actually a TGT (trap gate)
* rather then an IGT (interrupt gate). Thus interrupts are enabled on
* entry just as they are for a normal syscall.
*
* We do not obtain the MP lock, but the call to syscall might. If it
* does it will release the lock prior to returning.
*/
SUPERALIGN_TEXT
IDTVEC(int0x80_syscall)

View File

@ -1012,15 +1012,9 @@ int trapwrite(addr)
}
/*
* syscall - MP aware system call request C handler
* syscall - system call request C handler
*
* A system call is essentially treated as a trap except that the
* MP lock is not held on entry or return. We are responsible for
* obtaining the MP lock if necessary and for handling ASTs
* (e.g. a task switch) prior to return.
*
* In general, only simple access and manipulation of curproc and
* the current stack is allowed without having to hold MP lock.
* A system call is essentially treated as a trap.
*/
void
syscall(frame)
@ -1103,7 +1097,7 @@ syscall(frame)
}
/*
* Try to run the syscall without the MP lock if the syscall
* Try to run the syscall without Giant if the syscall
* is MP safe.
*/
if ((callp->sy_narg & SYF_MPSAFE) == 0) {
@ -1112,7 +1106,7 @@ syscall(frame)
#ifdef KTRACE
/*
* We have to obtain the MP lock no matter what if
* We have to obtain Giant no matter what if
* we are ktracing
*/
if (KTRPOINT(p, KTR_SYSCALL)) {
@ -1124,13 +1118,10 @@ syscall(frame)
p->p_retval[0] = 0;
p->p_retval[1] = frame.tf_edx;
STOPEVENT(p, S_SCE, narg); /* MP aware */
STOPEVENT(p, S_SCE, narg);
error = (*callp->sy_call)(p, args);
/*
* MP SAFE (we may or may not have the MP lock at this point)
*/
switch (error) {
case 0:
frame.tf_eax = p->p_retval[0];
@ -1163,7 +1154,7 @@ syscall(frame)
}
/*
* Traced syscall. trapsignal() is not MP aware.
* Traced syscall.
*/
if ((frame.tf_eflags & PSL_T) && !(frame.tf_eflags & PSL_VM)) {
if (!mtx_owned(&Giant))

View File

@ -76,18 +76,6 @@
* must restore them prior to calling 'iret'. The cpu adjusts the %cs and
* %ss segment registers, but does not mess with %ds, %es, or %fs. Thus we
* must load them with appropriate values for supervisor mode operation.
*
* On entry to a trap or interrupt WE DO NOT OWN THE MP LOCK. This means
* that we must be careful in regards to accessing global variables. We
* save (push) the current cpl (our software interrupt disable mask), call
* the trap function, then call doreti to restore the cpl and deal with
* ASTs (software interrupts). doreti will determine if the restoration
* of the cpl unmasked any pending interrupts and will issue those interrupts
* synchronously prior to doing the iret.
*
* At the moment we must own the MP lock to do any cpl manipulation, which
* means we must own it prior to calling doreti. The syscall case attempts
* to avoid this by handling a reduced set of cases itself and iret'ing.
*/
#define IDTVEC(name) ALIGN_TEXT; .globl __CONCAT(X,name); \
.type __CONCAT(X,name),@function; __CONCAT(X,name):
@ -197,9 +185,6 @@ calltrap:
* final spot. It has to be done this way because esp can't be just
* temporarily altered for the pushfl - an interrupt might come in
* and clobber the saved cs/eip.
*
* We do not obtain the MP lock, but the call to syscall might. If it
* does it will release the lock prior to returning.
*/
SUPERALIGN_TEXT
IDTVEC(lcall_syscall)
@ -214,9 +199,6 @@ IDTVEC(lcall_syscall)
* Even though the name says 'int0x80', this is actually a TGT (trap gate)
* rather then an IGT (interrupt gate). Thus interrupts are enabled on
* entry just as they are for a normal syscall.
*
* We do not obtain the MP lock, but the call to syscall might. If it
* does it will release the lock prior to returning.
*/
SUPERALIGN_TEXT
IDTVEC(int0x80_syscall)

View File

@ -1012,15 +1012,9 @@ int trapwrite(addr)
}
/*
* syscall - MP aware system call request C handler
* syscall - system call request C handler
*
* A system call is essentially treated as a trap except that the
* MP lock is not held on entry or return. We are responsible for
* obtaining the MP lock if necessary and for handling ASTs
* (e.g. a task switch) prior to return.
*
* In general, only simple access and manipulation of curproc and
* the current stack is allowed without having to hold MP lock.
* A system call is essentially treated as a trap.
*/
void
syscall(frame)
@ -1103,7 +1097,7 @@ syscall(frame)
}
/*
* Try to run the syscall without the MP lock if the syscall
* Try to run the syscall without Giant if the syscall
* is MP safe.
*/
if ((callp->sy_narg & SYF_MPSAFE) == 0) {
@ -1112,7 +1106,7 @@ syscall(frame)
#ifdef KTRACE
/*
* We have to obtain the MP lock no matter what if
* We have to obtain Giant no matter what if
* we are ktracing
*/
if (KTRPOINT(p, KTR_SYSCALL)) {
@ -1124,13 +1118,10 @@ syscall(frame)
p->p_retval[0] = 0;
p->p_retval[1] = frame.tf_edx;
STOPEVENT(p, S_SCE, narg); /* MP aware */
STOPEVENT(p, S_SCE, narg);
error = (*callp->sy_call)(p, args);
/*
* MP SAFE (we may or may not have the MP lock at this point)
*/
switch (error) {
case 0:
frame.tf_eax = p->p_retval[0];
@ -1163,7 +1154,7 @@ syscall(frame)
}
/*
* Traced syscall. trapsignal() is not MP aware.
* Traced syscall.
*/
if ((frame.tf_eflags & PSL_T) && !(frame.tf_eflags & PSL_VM)) {
if (!mtx_owned(&Giant))