diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-01-31 09:50:45 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-01-31 09:50:45 +0100 |
commit | 1fd5083234c1657b9d7c22dcc2cd31255176c8e6 (patch) | |
tree | 98dd661e7a1a872f0606f3104deff21176e9a723 /freebsd | |
parent | rtems-bsd-mutex: Use thread queue name (diff) | |
download | rtems-libbsd-1fd5083234c1657b9d7c22dcc2cd31255176c8e6.tar.bz2 |
SLEEPQUEUE(9): Add wmesg to thread wait info
Diffstat (limited to 'freebsd')
-rw-r--r-- | freebsd/sys/kern/subr_sleepqueue.c | 5 | ||||
-rw-r--r-- | freebsd/sys/sys/proc.h | 2 |
2 files changed, 5 insertions, 2 deletions
diff --git a/freebsd/sys/kern/subr_sleepqueue.c b/freebsd/sys/kern/subr_sleepqueue.c index d0288d67..971f92dd 100644 --- a/freebsd/sys/kern/subr_sleepqueue.c +++ b/freebsd/sys/kern/subr_sleepqueue.c @@ -399,12 +399,13 @@ sleepq_add(void *wchan, struct lock_object *lock, const char *wmesg, int flags, executing = td->td_thread; _Thread_Wait_acquire_default(executing, &lock_context); td->td_sq_state = TD_SQ_TIRED; + executing->Wait.return_argument_second.immutable_object = wmesg; #endif /* __rtems__ */ td->td_sleepqueue = NULL; td->td_sqqueue = queue; td->td_wchan = wchan; - td->td_wmesg = wmesg; #ifndef __rtems__ + td->td_wmesg = wmesg; if (flags & SLEEPQ_INTERRUPTIBLE) { td->td_flags |= TDF_SINTR; td->td_flags &= ~TDF_SLEEPABORT; @@ -968,7 +969,9 @@ sleepq_resume_thread(struct sleepqueue *sq, struct thread *td, int pri) _Thread_Wait_acquire_default_critical(thread, &lock_context); #endif /* __rtems__ */ +#ifndef __rtems__ td->td_wmesg = NULL; +#endif /* __rtems__ */ td->td_wchan = NULL; #ifndef __rtems__ td->td_flags &= ~TDF_SINTR; diff --git a/freebsd/sys/sys/proc.h b/freebsd/sys/sys/proc.h index 81d96de0..ee43997f 100644 --- a/freebsd/sys/sys/proc.h +++ b/freebsd/sys/sys/proc.h @@ -260,8 +260,8 @@ struct thread { #endif /* __rtems__ */ int td_sqqueue; /* (t) Sleepqueue queue blocked on. */ void *td_wchan; /* (t) Sleep address. */ - const char *td_wmesg; /* (t) Reason for sleep. */ #ifndef __rtems__ + const char *td_wmesg; /* (t) Reason for sleep. */ volatile u_char td_owepreempt; /* (k*) Preempt on last critical_exit */ u_char td_tsqueue; /* (t) Turnstile queue blocked on. */ short td_locks; /* (k) Debug: count of non-spin locks */ |