#ifndef _KERNEL_PROC_PROCGROUP_H #define _KERNEL_PROC_PROCGROUP_H #include #include #include #include #include #include struct proc; struct proc_mapping { struct list_node_link proc_mappings_link; uintptr_t paddr; uintptr_t vaddr; size_t size; }; struct procgroup { int pgid; 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; }; struct procgroup* procgroup_create (void); void procgroup_attach (struct procgroup* procgroup, struct proc* proc); void procgroup_detach (struct procgroup* procgroup, struct proc* proc); uintptr_t procgroup_map (struct procgroup* procgroup, uintptr_t vaddr, size_t pages, uint32_t flags, uintptr_t* out_paddr); bool procgroup_unmap (struct procgroup* procgroup, uintptr_t start_vaddr, size_t pages); #endif // _KERNEL_PROC_PROCGROUP_H