[kernel] simple thread local storage
diff --git a/kernel/thread.c b/kernel/thread.c
index fc9d9ca..1a23478 100644
--- a/kernel/thread.c
+++ b/kernel/thread.c
@@ -122,6 +122,11 @@
t->stack_size = stack_size;
+ /* inheirit thread local storage from the parent */
+ int i;
+ for (i=0; i < MAX_TLS_ENTRY; i++)
+ t->tls[i] = current_thread->tls[i];
+
/* set up the initial stack frame */
arch_thread_initialize(t);
@@ -456,6 +461,12 @@
dprintf(INFO, "\tstack %p, stack_size %zd\n", t->stack, t->stack_size);
dprintf(INFO, "\tentry %p, arg %p\n", t->entry, t->arg);
dprintf(INFO, "\twait queue %p, wait queue ret %d\n", t->blocking_wait_queue, t->wait_queue_block_ret);
+ dprintf(INFO, "\ttls:");
+ int i;
+ for (i=0; i < MAX_TLS_ENTRY; i++) {
+ dprintf(INFO, " 0x%x", t->tls[i]);
+ }
+ dprintf(INFO, "\n");
}
void dump_all_threads(void)