diff options
author | julian <julian@FreeBSD.org> | 2002-07-24 23:21:05 +0000 |
---|---|---|
committer | julian <julian@FreeBSD.org> | 2002-07-24 23:21:05 +0000 |
commit | 7e6f866aa8e76c60d6bc939bab8979a5c58f90b3 (patch) | |
tree | 0d67be6bc16fdfd806adda3eb61d6dee48acfdff | |
parent | cd6fa919eedca7a9881c0b7885e563a1adb1a36b (diff) | |
download | FreeBSD-src-7e6f866aa8e76c60d6bc939bab8979a5c58f90b3.zip FreeBSD-src-7e6f866aa8e76c60d6bc939bab8979a5c58f90b3.tar.gz |
Add some locking asserts and some comments
-rw-r--r-- | sys/amd64/amd64/trap.c | 1 | ||||
-rw-r--r-- | sys/i386/i386/trap.c | 1 | ||||
-rw-r--r-- | sys/kern/kern_kse.c | 4 | ||||
-rw-r--r-- | sys/kern/kern_thread.c | 4 |
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))) { |