diff --git a/kernel/proc/procgroup.c b/kernel/proc/procgroup.c index 7926fcf..c47b089 100644 --- a/kernel/proc/procgroup.c +++ b/kernel/proc/procgroup.c @@ -145,7 +145,6 @@ struct procgroup* procgroup_create (void) { memset (procgroup, 0, sizeof (*procgroup)); - procgroup->refs = 0; procgroup->memb_proc_tree = NULL; procgroup->lock = SPIN_LOCK_INIT; procgroup->pgid = atomic_fetch_add (&pgids, 1); @@ -171,7 +170,6 @@ void procgroup_attach (struct procgroup* procgroup, struct proc* proc) { rbtree_insert (struct proc, &procgroup->memb_proc_tree, &proc->procgroup_memb_tree_link, procgroup_memb_tree_link, pid); - atomic_fetch_add (&procgroup->refs, 1); spin_unlock (&proc->lock); spin_unlock (&procgroup->lock); @@ -183,12 +181,12 @@ void procgroup_detach (struct procgroup* procgroup, struct proc* proc, spin_lock (&proc->lock); rbtree_delete (&procgroup->memb_proc_tree, &proc->procgroup_memb_tree_link); - int refs = atomic_fetch_sub (&procgroup->refs, 1); + struct rb_node_link* memb_tree = procgroup->memb_proc_tree; spin_unlock (&proc->lock); spin_unlock (&procgroup->lock); - if (refs == 1) { + if (memb_tree == NULL) { spin_lock (&procgroup_tree_lock); spin_lock (&procgroup->lock); diff --git a/kernel/proc/procgroup.h b/kernel/proc/procgroup.h index b283909..26cb150 100644 --- a/kernel/proc/procgroup.h +++ b/kernel/proc/procgroup.h @@ -25,9 +25,7 @@ struct procgroup { struct rb_node_link procgroup_tree_link; struct rb_node_link* memb_proc_tree; spin_lock_t lock; - atomic_int refs; struct rb_node_link* resource_tree; - atomic_int sys_rids; struct pd pd; struct list_node_link* mappings; uintptr_t map_base;