summaryrefslogtreecommitdiff
path: root/task/task.c
diff options
context:
space:
mode:
Diffstat (limited to 'task/task.c')
-rw-r--r--task/task.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/task/task.c b/task/task.c
index cefc355..ef1a23a 100644
--- a/task/task.c
+++ b/task/task.c
@@ -99,11 +99,15 @@ create_bootstrap_caps (hurd_cap_bucket_t bucket)
debug ("Creating task cap for 0x%x:", task_id);
err = task_alloc (task_id, nr_threads, threads, &obj);
-
if (err)
panic ("task_alloc: %i\n", err);
+
hurd_cap_obj_unlock (obj);
+ err = task_id_enter ((task_t) obj);
+ if (err)
+ panic ("task_id_enter: %i\n", err);
+
err = hurd_cap_bucket_inject (bucket, obj, task_id, &cap);
if (err)
panic ("hurd_cap_bucket_inject: %i\n", err);
@@ -204,6 +208,9 @@ task_server (void *arg)
/* No root object is provided by the task server. */
/* FIXME: Use a worker timeout. */
+ /* FIXME: Use a no-sender callback that deletes the resources from a
+ dead task and turns it into a zombie or removes it from the hash
+ table completely. */
err = hurd_cap_bucket_manage_mt (bucket, NULL, 0, 0);
if (err)
debug ("bucket_manage_mt failed: %i\n", err);