diff options
Diffstat (limited to 'lib/libc_r/uthread/uthread_init.c')
-rw-r--r-- | lib/libc_r/uthread/uthread_init.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/libc_r/uthread/uthread_init.c b/lib/libc_r/uthread/uthread_init.c index b6429bb..dd5f53f 100644 --- a/lib/libc_r/uthread/uthread_init.c +++ b/lib/libc_r/uthread/uthread_init.c @@ -184,6 +184,10 @@ _thread_init(void) /* Initialize the scheduling switch hook routine: */ _sched_switch_hook = NULL; + /* Give this thread default attributes: */ + memcpy((void *) &_thread_initial->attr, &pthread_attr_default, + sizeof(struct pthread_attr)); + /* Initialize the thread stack cache: */ SLIST_INIT(&_stackq); @@ -199,6 +203,14 @@ _thread_init(void) -1, 0) == MAP_FAILED) PANIC("Cannot allocate red zone for initial thread"); + /* Set the main thread stack pointer. */ + _thread_initial->stack = (void *) USRSTACK - + PTHREAD_STACK_INITIAL; + + /* Set the stack attributes: */ + _thread_initial->attr.stackaddr_attr = _thread_initial->stack; + _thread_initial->attr.stacksize_attr = PTHREAD_STACK_INITIAL; + /* * Write a magic value to the thread structure * to help identify valid ones: |