diff options
Diffstat (limited to 'sysdeps/l4/pt-thread-alloc.c')
-rw-r--r-- | sysdeps/l4/pt-thread-alloc.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/sysdeps/l4/pt-thread-alloc.c b/sysdeps/l4/pt-thread-alloc.c index a9d5e212..fc2f43b4 100644 --- a/sysdeps/l4/pt-thread-alloc.c +++ b/sysdeps/l4/pt-thread-alloc.c @@ -1,5 +1,5 @@ -/* Start thread. L4 version. - Copyright (C) 2002 Free Software Foundation, Inc. +/* Allocate kernel thread. L4 version. + Copyright (C) 2003, 2005 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 @@ -23,20 +23,30 @@ #include <pt-internal.h> -/* Start THREAD. Get the kernel thread scheduled and running. */ int -__pthread_thread_start (struct __pthread *thread) +__pthread_thread_alloc (struct __pthread *thread) { error_t err; /* The main thread is already running of course. */ if (__pthread_num_threads == 1) { + /* XXX: The initialization code needs to make this consistent. + Right now, we have none and this whole library is a hack + anyways. */ +#warning __pthread_total is inconsistent. +#if 0 assert (__pthread_total == 1); - thread->thread_id = L4_Myself (); +#endif + thread->threadid = l4_myself (); } else { + thread->threadid = pthread_pool_get_np (); + if (thread->threadid != l4_nilthread) + return 0; + +#if 0 CORBA_Environment env; env = idl4_default_environment; @@ -45,8 +55,8 @@ __pthread_thread_start (struct __pthread *thread) * (L4_Word_t *) &__system_pager, (L4_Word_t *) &thread->threadid, &env); if (err) +#endif return EAGAIN; } - return 0; } |