summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>2002-07-24 23:21:05 +0000
committerjulian <julian@FreeBSD.org>2002-07-24 23:21:05 +0000
commit7e6f866aa8e76c60d6bc939bab8979a5c58f90b3 (patch)
tree0d67be6bc16fdfd806adda3eb61d6dee48acfdff
parentcd6fa919eedca7a9881c0b7885e563a1adb1a36b (diff)
downloadFreeBSD-src-7e6f866aa8e76c60d6bc939bab8979a5c58f90b3.zip
FreeBSD-src-7e6f866aa8e76c60d6bc939bab8979a5c58f90b3.tar.gz
Add some locking asserts and some comments
-rw-r--r--sys/amd64/amd64/trap.c1
-rw-r--r--sys/i386/i386/trap.c1
-rw-r--r--sys/kern/kern_kse.c4
-rw-r--r--sys/kern/kern_thread.c4
4 files changed, 10 insertions, 0 deletions
diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c
index 474b16d..8077d1f 100644
--- a/sys/amd64/amd64/trap.c
+++ b/sys/amd64/amd64/trap.c
@@ -271,6 +271,7 @@ trap(frame)
/*
* First check that we shouldn't just abort.
* But check if we are the single thread first!
+ * XXX p_singlethread not locked, but should be safe.
*/
if ((p->p_flag & P_WEXIT) && (p->p_singlethread != td)) {
PROC_LOCK(p); /* check if thisis really needed */
diff --git a/sys/i386/i386/trap.c b/sys/i386/i386/trap.c
index 474b16d..8077d1f 100644
--- a/sys/i386/i386/trap.c
+++ b/sys/i386/i386/trap.c
@@ -271,6 +271,7 @@ trap(frame)
/*
* First check that we shouldn't just abort.
* But check if we are the single thread first!
+ * XXX p_singlethread not locked, but should be safe.
*/
if ((p->p_flag & P_WEXIT) && (p->p_singlethread != td)) {
PROC_LOCK(p); /* check if thisis really needed */
diff --git a/sys/kern/kern_kse.c b/sys/kern/kern_kse.c
index 2772abb..36ffb7e 100644
--- a/sys/kern/kern_kse.c
+++ b/sys/kern/kern_kse.c
@@ -589,6 +589,7 @@ thread_single(int force_exit)
td = curthread;
p = td->td_proc;
+ mtx_assert(&sched_lock, MA_OWNED);
PROC_LOCK_ASSERT(p, MA_OWNED);
KASSERT((td != NULL), ("curthread is NULL"));
@@ -707,6 +708,8 @@ thread_suspend_check(int return_instead)
* a single-threading. Treat it ever
* so slightly different if it is
* in a special situation.
+ * XXX Should be safe to access unlocked
+ * as it can only be set to be true by us.
*/
if (p->p_singlethread == td) {
return (0); /* Exempt from stopping. */
@@ -772,6 +775,7 @@ thread_unsuspend(struct proc *p)
{
struct thread *td;
+ mtx_assert(&sched_lock, MA_OWNED);
PROC_LOCK_ASSERT(p, MA_OWNED);
if (!P_SHOULDSTOP(p)) {
while (( td = TAILQ_FIRST(&p->p_suspended))) {
diff --git a/sys/kern/kern_thread.c b/sys/kern/kern_thread.c
index 2772abb..36ffb7e 100644
--- a/sys/kern/kern_thread.c
+++ b/sys/kern/kern_thread.c
@@ -589,6 +589,7 @@ thread_single(int force_exit)
td = curthread;
p = td->td_proc;
+ mtx_assert(&sched_lock, MA_OWNED);
PROC_LOCK_ASSERT(p, MA_OWNED);
KASSERT((td != NULL), ("curthread is NULL"));
@@ -707,6 +708,8 @@ thread_suspend_check(int return_instead)
* a single-threading. Treat it ever
* so slightly different if it is
* in a special situation.
+ * XXX Should be safe to access unlocked
+ * as it can only be set to be true by us.
*/
if (p->p_singlethread == td) {
return (0); /* Exempt from stopping. */
@@ -772,6 +775,7 @@ thread_unsuspend(struct proc *p)
{
struct thread *td;
+ mtx_assert(&sched_lock, MA_OWNED);
PROC_LOCK_ASSERT(p, MA_OWNED);
if (!P_SHOULDSTOP(p)) {
while (( td = TAILQ_FIRST(&p->p_suspended))) {
OpenPOWER on IntegriCloud