diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ChangeLog | 6 | ||||
-rw-r--r-- | lib/thread.c | 5 | ||||
-rw-r--r-- | lib/thread.h | 2 |
3 files changed, 11 insertions, 2 deletions
diff --git a/lib/ChangeLog b/lib/ChangeLog index 5a0eff55..82ea6fd1 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,9 @@ +2005-05-19 Paul Jakma <paul@dishone.st> + + * thread.c: (thread_cancel_event) the number of pending events + cancelled is potentially useful information, dont throw it away, + pass it back to the caller. + 2005-05-15 Paul Jakma <paul@dishone.st> * getopt.h: It's not just __GNU_LIBRARY__ which defines diff --git a/lib/thread.c b/lib/thread.c index a18db25a..32fc15ef 100644 --- a/lib/thread.c +++ b/lib/thread.c @@ -663,9 +663,10 @@ thread_cancel (struct thread *thread) } /* Delete all events which has argument value arg. */ -void +unsigned int thread_cancel_event (struct thread_master *m, void *arg) { + unsigned int ret = 0; struct thread *thread; thread = m->event.head; @@ -678,11 +679,13 @@ thread_cancel_event (struct thread_master *m, void *arg) if (t->arg == arg) { + ret++; thread_list_delete (&m->event, t); t->type = THREAD_UNUSED; thread_add_unuse (m, t); } } + return ret; } static struct timeval * diff --git a/lib/thread.h b/lib/thread.h index 4a3bbbe5..f693ff5a 100644 --- a/lib/thread.h +++ b/lib/thread.h @@ -185,7 +185,7 @@ extern struct thread *funcname_thread_execute (struct thread_master *, int (*)(struct thread *), void *, int, const char *); extern void thread_cancel (struct thread *); -extern void thread_cancel_event (struct thread_master *, void *); +extern unsigned int thread_cancel_event (struct thread_master *, void *); extern struct thread *thread_fetch (struct thread_master *, struct thread *); extern void thread_call (struct thread *); extern unsigned long thread_timer_remain_second (struct thread *); |