diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2014-12-07 23:05:48 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2014-12-07 23:09:46 +0100 |
commit | be05086a4b9de42ba7c596905e8980d8713eae49 (patch) | |
tree | 579058e3ee11fcfe22d997720d795527a63556e8 /kern/task.h | |
parent | cd76999cd1cf590b95df3e22d2eb2a7dad333499 (diff) | |
download | gnumach-be05086a4b9de42ba7c596905e8980d8713eae49.tar.gz gnumach-be05086a4b9de42ba7c596905e8980d8713eae49.tar.bz2 gnumach-be05086a4b9de42ba7c596905e8980d8713eae49.zip |
Fix pthread_create warning on translator termination
This was due to task_terminate not actually properly suspending threads
before disable the task port, which was thus preventing pthread_create
from being able to create a stack. Thanks Gabriele Giacone for finding
out a reproducer of this.
* kern/task.h (task_hold_locked): New declaration.
* kern/task.c (task_hold): Move the locked part of the code into...
(task_hold_locked): ... new function.
(task_terminate): Call task_hold_locked just before deactivating the
task. Call ipc_task_disable after waiting for threads to actually
suspend with task_dowait.
Diffstat (limited to 'kern/task.h')
-rw-r--r-- | kern/task.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/kern/task.h b/kern/task.h index 3c10dc0c..2a4c28fc 100644 --- a/kern/task.h +++ b/kern/task.h @@ -182,6 +182,7 @@ extern void consider_task_collect(void); extern void task_init(void); extern void task_reference(task_t); extern void task_deallocate(task_t); +extern void task_hold_locked(task_t); extern kern_return_t task_hold(task_t); extern kern_return_t task_dowait(task_t, boolean_t); extern kern_return_t task_release(task_t); |