Remove procgroup->refs
All checks were successful
Build documentation / build-and-deploy (push) Successful in 3m12s
All checks were successful
Build documentation / build-and-deploy (push) Successful in 3m12s
This commit is contained in:
@@ -145,7 +145,6 @@ struct procgroup* procgroup_create (void) {
|
|||||||
|
|
||||||
memset (procgroup, 0, sizeof (*procgroup));
|
memset (procgroup, 0, sizeof (*procgroup));
|
||||||
|
|
||||||
procgroup->refs = 0;
|
|
||||||
procgroup->memb_proc_tree = NULL;
|
procgroup->memb_proc_tree = NULL;
|
||||||
procgroup->lock = SPIN_LOCK_INIT;
|
procgroup->lock = SPIN_LOCK_INIT;
|
||||||
procgroup->pgid = atomic_fetch_add (&pgids, 1);
|
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,
|
rbtree_insert (struct proc, &procgroup->memb_proc_tree, &proc->procgroup_memb_tree_link,
|
||||||
procgroup_memb_tree_link, pid);
|
procgroup_memb_tree_link, pid);
|
||||||
atomic_fetch_add (&procgroup->refs, 1);
|
|
||||||
|
|
||||||
spin_unlock (&proc->lock);
|
spin_unlock (&proc->lock);
|
||||||
spin_unlock (&procgroup->lock);
|
spin_unlock (&procgroup->lock);
|
||||||
@@ -183,12 +181,12 @@ void procgroup_detach (struct procgroup* procgroup, struct proc* proc,
|
|||||||
spin_lock (&proc->lock);
|
spin_lock (&proc->lock);
|
||||||
|
|
||||||
rbtree_delete (&procgroup->memb_proc_tree, &proc->procgroup_memb_tree_link);
|
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 (&proc->lock);
|
||||||
spin_unlock (&procgroup->lock);
|
spin_unlock (&procgroup->lock);
|
||||||
|
|
||||||
if (refs == 1) {
|
if (memb_tree == NULL) {
|
||||||
spin_lock (&procgroup_tree_lock);
|
spin_lock (&procgroup_tree_lock);
|
||||||
spin_lock (&procgroup->lock);
|
spin_lock (&procgroup->lock);
|
||||||
|
|
||||||
|
|||||||
@@ -25,9 +25,7 @@ struct procgroup {
|
|||||||
struct rb_node_link procgroup_tree_link;
|
struct rb_node_link procgroup_tree_link;
|
||||||
struct rb_node_link* memb_proc_tree;
|
struct rb_node_link* memb_proc_tree;
|
||||||
spin_lock_t lock;
|
spin_lock_t lock;
|
||||||
atomic_int refs;
|
|
||||||
struct rb_node_link* resource_tree;
|
struct rb_node_link* resource_tree;
|
||||||
atomic_int sys_rids;
|
|
||||||
struct pd pd;
|
struct pd pd;
|
||||||
struct list_node_link* mappings;
|
struct list_node_link* mappings;
|
||||||
uintptr_t map_base;
|
uintptr_t map_base;
|
||||||
|
|||||||
Reference in New Issue
Block a user