summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2004-01-27 04:40:19 +0000
committerrwatson <rwatson@FreeBSD.org>2004-01-27 04:40:19 +0000
commit66ab2daa68fe81f08a9f975d9c778f5d3ea84595 (patch)
tree54a29217c4b5b640b88749cb50615953c6d22e08
parentee9752cd12de59e0da274c35f5eb64ecc0ba7e0d (diff)
downloadFreeBSD-src-66ab2daa68fe81f08a9f975d9c778f5d3ea84595.zip
FreeBSD-src-66ab2daa68fe81f08a9f975d9c778f5d3ea84595.tar.gz
Stick two XXX's in the syscall() code: we call STOPEVENT() twice for
every system call, and that grabs and release the process lock each time. Don't fix it (yet), but document it so we know to fix it. Also should be a 5.3-RELEASE todo item.
-rw-r--r--sys/i386/i386/trap.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/i386/i386/trap.c b/sys/i386/i386/trap.c
index 5c8866a..c929c1b 100644
--- a/sys/i386/i386/trap.c
+++ b/sys/i386/i386/trap.c
@@ -1003,6 +1003,10 @@ syscall(frame)
td->td_retval[0] = 0;
td->td_retval[1] = frame.tf_edx;
+ /*
+ * XXX: This grabs the process lock. A bad thing in
+ * the system call path.
+ */
STOPEVENT(p, S_SCE, narg);
PTRACESTOP_SC(p, td, S_PT_SCE);
@@ -1065,6 +1069,10 @@ syscall(frame)
#endif
/*
+ * XXX: This grabs the process lock. A bad thing in
+ * the system call path.
+ */
+ /*
* This works because errno is findable through the
* register set. If we ever support an emulation where this
* is not the case, this code will need to be revisited.
OpenPOWER on IntegriCloud