Subversion Repositories HelenOS

Rev

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

Rev 1684 Rev 1687
Line 298... Line 298...
298
    spinlock_lock(&ta->lock);
298
    spinlock_lock(&ta->lock);
299
    ta->accept_new_threads = false;
299
    ta->accept_new_threads = false;
300
    ta->refcount--;
300
    ta->refcount--;
301
 
301
 
302
    /*
302
    /*
303
     * Interrupt all threads except this one.
303
     * Interrupt all threads except ktaskclnp.
304
     */
304
     */
305
    for (cur = ta->th_head.next; cur != &ta->th_head; cur = cur->next) {
305
    for (cur = ta->th_head.next; cur != &ta->th_head; cur = cur->next) {
306
        thread_t *thr;
306
        thread_t *thr;
307
        bool  sleeping = false;
307
        bool  sleeping = false;
308
       
308
       
Line 465... Line 465...
465
        spinlock_lock(&TASK->lock);
465
        spinlock_lock(&TASK->lock);
466
       
466
       
467
        for (cur = TASK->th_head.next; cur != &TASK->th_head; cur = cur->next) {
467
        for (cur = TASK->th_head.next; cur != &TASK->th_head; cur = cur->next) {
468
            thr = list_get_instance(cur, thread_t, th_link);
468
            thr = list_get_instance(cur, thread_t, th_link);
469
            spinlock_lock(&thr->lock);
469
            spinlock_lock(&thr->lock);
470
            if (thr->state == Undead && thr->join_type == None) {
470
            if (thr != t && thr->state == Undead && thr->join_type == None) {
471
                thr->join_type = TaskGC;
471
                thr->join_type = TaskGC;
472
                spinlock_unlock(&thr->lock);
472
                spinlock_unlock(&thr->lock);
473
                break;
473
                break;
474
            }
474
            }
475
            spinlock_unlock(&thr->lock);
475
            spinlock_unlock(&thr->lock);