Subversion Repositories HelenOS

Rev

Rev 1086 | Rev 1104 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1086 Rev 1103
Line 83... Line 83...
83
{
83
{
84
    void (*f)(void *) = THREAD->thread_code;
84
    void (*f)(void *) = THREAD->thread_code;
85
    void *arg = THREAD->thread_arg;
85
    void *arg = THREAD->thread_arg;
86
 
86
 
87
    /* this is where each thread wakes up after its creation */
87
    /* this is where each thread wakes up after its creation */
88
    before_thread_runs();
-
 
89
 
-
 
90
    spinlock_unlock(&THREAD->lock);
88
    spinlock_unlock(&THREAD->lock);
91
    interrupts_enable();
89
    interrupts_enable();
92
 
90
 
93
    f(arg);
91
    f(arg);
94
    thread_exit();
92
    thread_exit();
Line 435... Line 433...
435
 */
433
 */
436
__native sys_thread_create(uspace_arg_t *uspace_uarg, char *uspace_name)
434
__native sys_thread_create(uspace_arg_t *uspace_uarg, char *uspace_name)
437
{
435
{
438
        thread_t *t;
436
        thread_t *t;
439
        char namebuf[THREAD_NAME_BUFLEN];
437
        char namebuf[THREAD_NAME_BUFLEN];
440
    uspace_arg_t *kernel_uarg;      /* TODO: store kernel_uarg in thread_t */
438
    uspace_arg_t *kernel_uarg;
441
    __u32 tid;
439
    __u32 tid;
442
 
440
 
443
        copy_from_uspace(namebuf, uspace_name, THREAD_NAME_BUFLEN);
441
        copy_from_uspace(namebuf, uspace_name, THREAD_NAME_BUFLEN);
444
 
442
 
445
    kernel_uarg = (uspace_arg_t *) malloc(sizeof(uspace_arg_t), 0);
443
    kernel_uarg = (uspace_arg_t *) malloc(sizeof(uspace_arg_t), 0);