Deleted Added
full compact
32c32
< * $FreeBSD: head/lib/libkse/thread/thr_sig.c 115080 2003-05-16 19:58:30Z deischen $
---
> * $FreeBSD: head/lib/libkse/thread/thr_sig.c 115278 2003-05-24 02:29:25Z deischen $
154,155c154,155
<
< if ((thread = thr_sig_find(curkse, sig, info)) != NULL) {
---
> stderr_debug("dispatch sig:%d\n", sig);
> while ((thread = thr_sig_find(curkse, sig, info)) != NULL) {
161,162c161,171
< _thr_sig_add(thread, sig, info);
< KSE_SCHED_UNLOCK(curkse, thread->kseg);
---
> if ((thread->state == PS_DEAD) ||
> (thread->state == PS_DEADLOCK) ||
> THR_IS_EXITING(thread) || THR_IS_SUSPENDED(thread)) {
> KSE_SCHED_UNLOCK(curkse, thread->kseg);
> _thr_ref_delete(NULL, thread);
> } else {
> _thr_sig_add(thread, sig, info);
> KSE_SCHED_UNLOCK(curkse, thread->kseg);
> _thr_ref_delete(NULL, thread);
> break;
> }
324c333
< if (suspended_thread == NULL)
---
> if (suspended_thread == NULL) {
326c335,337
< } else if (signaled_thread == NULL)
---
> suspended_thread->refcount++;
> }
> } else if (signaled_thread == NULL) {
327a339,340
> signaled_thread->refcount++;
> }
362c375
< if (suspended_thread != NULL)
---
> if (suspended_thread != NULL) {
364c377,378
< else
---
> _thr_ref_delete(NULL, signaled_thread);
> } else