Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/proc/task.c

    r5d0500c r2f2beb4  
    9090        TASK = NULL;
    9191        avltree_create(&tasks_tree);
    92         task_slab = slab_cache_create("task_slab", sizeof(task_t), 0,
     92        task_slab = slab_cache_create("task_t", sizeof(task_t), 0,
    9393            tsk_constructor, NULL, 0);
    9494}
     
    125125{
    126126        size_t tasks_left;
     127
     128        if (ipc_phone_0) {
     129                task_t *task_0 = ipc_phone_0->task;
     130                ipc_phone_0 = NULL;
     131                /*
     132                 * The first task is held by kinit(), we need to release it or
     133                 * it will never finish cleanup.
     134                 */
     135                task_release(task_0);
     136        }
    127137       
    128138        /* Repeat until there are any tasks except TASK */
     
    156166       
    157167        list_initialize(&task->threads);
    158         list_initialize(&task->sync_boxes);
    159168       
    160169        ipc_answerbox_init(&task->answerbox, task);
     
    162171        size_t i;
    163172        for (i = 0; i < IPC_MAX_PHONES; i++)
    164                 ipc_phone_init(&task->phones[i]);
     173                ipc_phone_init(&task->phones[i], task);
     174
     175        spinlock_initialize(&task->active_calls_lock, "active_calls_lock");
     176        list_initialize(&task->active_calls);
    165177       
    166178#ifdef CONFIG_UDEBUG
     
    194206        task->ucycles = 0;
    195207        task->kcycles = 0;
    196        
     208
    197209        task->ipc_info.call_sent = 0;
    198210        task->ipc_info.call_received = 0;
     
    204216        event_task_init(task);
    205217       
     218        task->answerbox.active = true;
     219
    206220#ifdef CONFIG_UDEBUG
    207221        /* Init debugging stuff */
     
    209223       
    210224        /* Init kbox stuff */
     225        task->kb.box.active = true;
    211226        task->kb.finished = false;
    212227#endif
     
    214229        if ((ipc_phone_0) &&
    215230            (container_check(ipc_phone_0->task->container, task->container)))
    216                 ipc_phone_connect(&task->phones[0], ipc_phone_0);
     231                (void) ipc_phone_connect(&task->phones[0], ipc_phone_0);
    217232       
    218233        btree_create(&task->futexes);
Note: See TracChangeset for help on using the changeset viewer.