]> rtime.felk.cvut.cz Git - l4.git/blobdiff - l4/pkg/uclibc/lib/libpthread/src/internals.h
update
[l4.git] / l4 / pkg / uclibc / lib / libpthread / src / internals.h
index 95e2a17150f504c45f9fdd30abba57e74ae905ad..add61ba03bf7aea028f5f36ca2e7c6142ca321a5 100644 (file)
 # define THREAD_GETMEM(descr, member) descr->member
 #endif
 #ifndef THREAD_GETMEM_NC
-# define THREAD_GETMEM_NC(descr, member) descr->member
+# define THREAD_GETMEM_NC(descr, member, idx) descr->member[idx]
 #endif
 #ifndef THREAD_SETMEM
 # define THREAD_SETMEM(descr, member, value) descr->member = (value)
 #endif
 #ifndef THREAD_SETMEM_NC
-# define THREAD_SETMEM_NC(descr, member, value) descr->member = (value)
+# define THREAD_SETMEM_NC(descr, member, idx, value) descr->member[idx] = (value)
 #endif
 
 #if !defined NOT_IN_libc
@@ -72,7 +72,7 @@ struct pthread_key_struct {
 };
 
 #include <l4/sys/kdebug.h>
-#define UNIMPL(x...) do { outstring("UNIMPL\n"); /*printf("UNIMPLEMENTED:%s:%s %s:", __FILE__, __LINE__, __func__);*/ }while(0)
+#define UNIMPL(x...) do { outstring("UNIMPL: " x "\n"); } while(0)
 
 
 #define PTHREAD_START_ARGS_INITIALIZER(fct) \
@@ -87,7 +87,8 @@ typedef l4_utcb_t *pthread_handle;
 
 enum pthread_request_rq {                        /* Request kind */
     REQ_CREATE, REQ_FREE, REQ_PROCESS_EXIT, REQ_MAIN_THREAD_EXIT,
-    REQ_POST, REQ_DEBUG, REQ_KICK, REQ_FOR_EACH_THREAD
+    REQ_POST, REQ_DEBUG, REQ_KICK, REQ_FOR_EACH_THREAD,
+    REQ_THREAD_EXIT
 };
 
 struct pthread_request {
@@ -285,6 +286,7 @@ extern int __librt_multiple_threads;
 /* Internal global functions */
 __BEGIN_DECLS
 extern int __pthread_l4_initialize_main_thread(pthread_descr th) attribute_hidden;
+extern void __l4_add_utcbs(l4_addr_t start, l4_addr_t utcbs_end);
 
 
 extern int __pthread_sched_idle_prio;
@@ -578,7 +580,7 @@ check_thread_self (void)
         initialized, so that the thread register might still point to the
         manager thread.  Double check that this is really the manager
         thread.  */
-      self = __pthread_self_stack();
+      self = handle_to_descr(l4_utcb());
       if (self != __manager_thread)
        /* Oops, thread_self() isn't working yet..  */
        INIT_THREAD_SELF(self, self->p_nr);