Subversion Repositories HelenOS

Rev

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

Rev 2451 Rev 2470
Line 383... Line 383...
383
     * It is safe to destroy the task.
383
     * It is safe to destroy the task.
384
     */
384
     */
385
    if (atomic_predec(&t->task->refcount) == 0)
385
    if (atomic_predec(&t->task->refcount) == 0)
386
        task_destroy(t->task);
386
        task_destroy(t->task);
387
   
387
   
388
    /*
-
 
389
     * If the thread had a userspace context, free up its kernel_uarg
-
 
390
     * structure.
-
 
391
     */
-
 
392
    if (t->flags & THREAD_FLAG_USPACE) {
-
 
393
        ASSERT(t->thread_arg);
-
 
394
        free(t->thread_arg);
-
 
395
    }
-
 
396
 
-
 
397
    slab_free(thread_slab, t);
388
    slab_free(thread_slab, t);
398
}
389
}
399
 
390
 
400
/** Make the thread visible to the system.
391
/** Make the thread visible to the system.
401
 *
392
 *
Line 680... Line 671...
680
 
671
 
681
    rc = copy_from_uspace(namebuf, uspace_name, THREAD_NAME_BUFLEN);
672
    rc = copy_from_uspace(namebuf, uspace_name, THREAD_NAME_BUFLEN);
682
    if (rc != 0)
673
    if (rc != 0)
683
        return (unative_t) rc;
674
        return (unative_t) rc;
684
 
675
 
-
 
676
    /*
-
 
677
     * In case of failure, kernel_uarg will be deallocated in this function.
-
 
678
     * In case of success, kernel_uarg will be freed in uinit().
-
 
679
     */
685
    kernel_uarg = (uspace_arg_t *) malloc(sizeof(uspace_arg_t), 0);
680
    kernel_uarg = (uspace_arg_t *) malloc(sizeof(uspace_arg_t), 0);
-
 
681
   
686
    rc = copy_from_uspace(kernel_uarg, uspace_uarg, sizeof(uspace_arg_t));
682
    rc = copy_from_uspace(kernel_uarg, uspace_uarg, sizeof(uspace_arg_t));
687
    if (rc != 0) {
683
    if (rc != 0) {
688
        free(kernel_uarg);
684
        free(kernel_uarg);
689
        return (unative_t) rc;
685
        return (unative_t) rc;
690
    }
686
    }