Manage RIDs via id_alloc
All checks were successful
Build documentation / build-and-deploy (push) Successful in 2m2s

This commit is contained in:
2026-02-22 21:09:06 +01:00
parent 084809ac99
commit 62a6543dab
9 changed files with 97 additions and 55 deletions

View File

@@ -156,9 +156,17 @@ struct procgroup* procgroup_create (void) {
return NULL;
}
if (!id_alloc_init (&procgroup->rid_alloc, PROCGROUP_RESOURCES_MAX)) {
id_alloc_fini (&procgroup->vfs_handle_id_alloc);
free (procgroup);
return NULL;
}
procgroup->pgid = id_alloc (&pgid_alloc);
if (procgroup->pgid < 0) {
id_alloc_fini (&procgroup->rid_alloc);
id_alloc_fini (&procgroup->vfs_handle_id_alloc);
free (procgroup);
return NULL;
}
@@ -168,7 +176,9 @@ struct procgroup* procgroup_create (void) {
procgroup->pd.cr3_paddr = mm_alloc_user_pd_phys ();
procgroup->map_base = PROC_MAP_BASE;
if (proc_create_resource_mail (procgroup, 1) == NULL) {
if (proc_create_resource_mail (procgroup) == NULL) {
id_alloc_fini (&procgroup->rid_alloc);
id_alloc_fini (&procgroup->vfs_handle_id_alloc);
free (procgroup);
return NULL;
}
@@ -224,7 +234,7 @@ static void procgroup_delete (struct procgroup* procgroup, struct reschedule_ctx
list_remove (resource_delete_list, &resource->delete_list_link);
proc_delete_resource (resource, rctx);
proc_delete_resource (procgroup, resource, rctx);
}
/* unlock VFS owned mountpoints */
@@ -245,6 +255,7 @@ static void procgroup_delete (struct procgroup* procgroup, struct reschedule_ctx
free (procgroup->tls.tls_tmpl);
id_alloc_fini (&procgroup->vfs_handle_id_alloc);
id_alloc_fini (&procgroup->rid_alloc);
id_free (&pgid_alloc, procgroup->pgid);
free (procgroup);