aboutsummaryrefslogtreecommitdiff
path: root/src/orphanage.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/orphanage.c')
-rw-r--r--src/orphanage.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/orphanage.c b/src/orphanage.c
index 7415e8b..4760f73 100644
--- a/src/orphanage.c
+++ b/src/orphanage.c
@@ -14,17 +14,17 @@
bool orphan(struct tcb *t)
{
- struct tcb *r = get_rproc(t);
- return !r || r->dead;
+ return is_set(t->state, TCB_ORPHAN);
}
void orphanize(struct tcb *t)
{
- catastrophic_assert(!is_rpc(t));
+ set_bit(t->state, TCB_ORPHAN);
+}
- struct tcb *r = get_tcb(t->rid);
- if (r)
- unreference_proc(r);
+void unorphanize(struct tcb *t)
+{
+ catastrophic_assert(!is_rpc(t));
/* attach to init process */
struct tcb *init = get_tcb(1);
@@ -35,6 +35,7 @@ void orphanize(struct tcb *t)
t->eid = 1;
t->proc = init->proc;
+ t->rpc_stack = RPC_STACK_BASE;
use_vmem(t->proc.vmem);
catastrophic_assert(init->callback);