Rev 2848 | Rev 2865 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2848 | Rev 2854 | ||
---|---|---|---|
Line 420... | Line 420... | ||
420 | static void _thread_attach_task(thread_t *t, task_t *task) |
420 | static void _thread_attach_task(thread_t *t, task_t *task) |
421 | { |
421 | { |
422 | atomic_inc(&task->refcount); |
422 | atomic_inc(&task->refcount); |
423 | atomic_inc(&task->lifecount); |
423 | atomic_inc(&task->lifecount); |
424 | 424 | ||
- | 425 | list_append(&t->th_link, &task->th_head); |
|
- | 426 | ||
- | 427 | /* |
|
- | 428 | * Copy task debugging state to thread struct. |
|
- | 429 | * The thread needs to know it is being debugged, |
|
- | 430 | * otherwise it would neither stop nor respond to |
|
- | 431 | * debug ops. |
|
- | 432 | */ |
|
- | 433 | if (t->flags & THREAD_FLAG_USPACE) { |
|
- | 434 | if (task->dt_state == UDEBUG_TS_BEGINNING || |
|
- | 435 | task->dt_state == UDEBUG_TS_ACTIVE) { |
|
- | 436 | t->debug_active = true; |
|
- | 437 | } |
|
- | 438 | } |
|
- | 439 | ||
425 | /* FIXME: this must be done very carefully.. an unstoppable |
440 | /* FIXME: this must be done very carefully.. an unstoppable |
426 | thread cannot appear just-so, it must be possible to catch it. */ |
441 | thread cannot appear just-so, it must be possible to catch it. */ |
427 | if (t->flags & THREAD_FLAG_USPACE) |
442 | if (t->flags & THREAD_FLAG_USPACE) |
428 | ++task->not_stoppable_count; |
443 | ++task->not_stoppable_count; |
429 | list_append(&t->th_link, &task->th_head); |
- | |
430 | } |
444 | } |
431 | 445 | ||
432 | /** Add thread to the threads tree. |
446 | /** Add thread to the threads tree. |
433 | * |
447 | * |
434 | * Interrupts must be already disabled. |
448 | * Interrupts must be already disabled. |