# 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
};
#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) \
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 {
/* 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;
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);