summaryrefslogtreecommitdiff
path: root/sysdeps/l4/pt-docancel.c
diff options
context:
space:
mode:
authorNeal H. Walfield <neal@gnu.org>2007-11-20 17:39:57 +0000
committerThomas Schwinge <tschwinge@gnu.org>2009-04-07 23:09:57 +0200
commit961d71afd49f55395e6dbfe203d6b968e4105ee0 (patch)
tree97f99e363a54786ad2323f6b1c5a5e004d5965e8 /sysdeps/l4/pt-docancel.c
parent43e3246eb6a26162ef931dadcd4a8a649c57289b (diff)
2007-11-20 Neal H. Walfield <neal@gnu.org>
* Makefile.am (libpthread_a_SOURCES): Remove pt-create-np.c. * sysdeps/l4/pt-create-np.c: Remove file. * sysdeps/l4/pt-pool-np.c (pthread_pool_add_np): Change tid from an _L4_thread_id_t to an l4_thread_id_t. (pthread_pool_get_np): Return an l4_thread_id_t, not a _L4_thread_id_t. * sysdeps/l4/bits/pthread-np.h (pthread_create_from_l4_tid_np): Remove declaration. (pthread_pool_add_np): Change tid from an _L4_thread_id_t to an l4_thread_id_t. (pthread_pool_get_np): Return an l4_thread_id_t, not a _L4_thread_id_t. * sysdeps/l4/pt-docancel.c (__pthread_do_cancel): Implement for the case that the target thread is not the executing thread. * sysdeps/l4/pt-thread-alloc.c (__pthread_thread_alloc): Return EAGAIN if pthread_pool_get_np does not return a thread. Update comments. * sysdeps/l4/pt-thread-start.c (__pthread_thread_start): Don't set the thread's pager. Assert that if this is the first thread, then THREAD->THREADID is designates the running thread. * sysdeps/l4/pt-timedblock.c (__pthread_timedblock): Add warning about incomplete implementation. * Makefile.am (libpthread_a_SOURCES): Remove pt-thread-init.c. * sysdeps/l4/pt-thread-init.c: Remove dead file. * sysdeps/l4/pt-start.c: Remove dead file.
Diffstat (limited to 'sysdeps/l4/pt-docancel.c')
-rw-r--r--sysdeps/l4/pt-docancel.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/sysdeps/l4/pt-docancel.c b/sysdeps/l4/pt-docancel.c
index e832e26e..a3965d0d 100644
--- a/sysdeps/l4/pt-docancel.c
+++ b/sysdeps/l4/pt-docancel.c
@@ -1,5 +1,5 @@
/* Cancel a thread.
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -30,23 +30,13 @@ call_exit (void)
int
__pthread_do_cancel (struct __pthread *p)
{
-#if 0
- assert (p->cancel_pending = 1);
+ assert (p->cancel_pending == 1);
assert (p->cancel_state == PTHREAD_CANCEL_ENABLE);
- if (L4_SameThreads (L4_Myself (), p->threadid))
+ if (l4_is_thread_equal (l4_myself (), p->threadid))
call_exit ();
else
- {
- L4_Word_t dummy;
- L4_ThreadId_t dummy_id;
-
- /* Change the ip of the target thread to make it exit. */
- L4_ExchangeRegisters (p->threadid, (1 << 4), 0, call_exit,
- 0, 0, L4_nilthread,
- &dummy, &dummy, &dummy, &dummy, &dummy,
- &dummy_id);
- }
-#endif
+ l4_start_sp_ip (p->threadid, (l4_word_t) p->mcontext.sp,
+ (l4_word_t) call_exit);
return 0;
}