Let the user application decide upon the resource ID (RID)
All checks were successful
Build documentation / build-and-deploy (push) Successful in 22s
All checks were successful
Build documentation / build-and-deploy (push) Successful in 22s
This commit is contained in:
@@ -57,14 +57,18 @@ DEFINE_SYSCALL (sys_proc_unmap) {
|
||||
return ok ? SR_OK : -SR_OOM_ERROR;
|
||||
}
|
||||
|
||||
/* int proc_create_resource_mem (size_t pages, int vis, uintptr_t* out_paddr) */
|
||||
/* int proc_create_resource_mem (int rid, size_t pages, int vis, uintptr_t* out_paddr) */
|
||||
DEFINE_SYSCALL (sys_proc_create_resource_mem) {
|
||||
struct limine_hhdm_response* hhdm = limine_hhdm_request.response;
|
||||
spin_lock_ctx_t ctxprpd;
|
||||
|
||||
size_t pages = (size_t)a1;
|
||||
int vis = (int)a2;
|
||||
uintptr_t* out_paddr_buf = (uintptr_t*)a3;
|
||||
int rid = (int)a1;
|
||||
size_t pages = (size_t)a2;
|
||||
int vis = (int)a3;
|
||||
uintptr_t* out_paddr_buf = (uintptr_t*)a4;
|
||||
|
||||
if (rid < 0)
|
||||
return -SR_BAD_RESOURCE;
|
||||
|
||||
spin_lock (&proc->pd->lock, &ctxprpd);
|
||||
|
||||
@@ -79,7 +83,6 @@ DEFINE_SYSCALL (sys_proc_create_resource_mem) {
|
||||
|
||||
uintptr_t* out_paddr_buf_vaddr = (uintptr_t*)((uintptr_t)hhdm->offset + out_paddr_buf_paddr);
|
||||
|
||||
int rid = atomic_fetch_add (&proc->rids, 1);
|
||||
struct proc_resource_mem_init mem_init = {.pages = pages};
|
||||
struct proc_resource* r = proc_create_resource (proc, rid, PR_MEM, vis, &mem_init);
|
||||
|
||||
@@ -91,11 +94,14 @@ DEFINE_SYSCALL (sys_proc_create_resource_mem) {
|
||||
}
|
||||
}
|
||||
|
||||
/* int proc_create_resource_mutex (int vis) */
|
||||
/* int proc_create_resource_mutex (int rid, int vis) */
|
||||
DEFINE_SYSCALL (sys_proc_create_resource_mutex) {
|
||||
int vis = (int)a1;
|
||||
int rid = (int)a1;
|
||||
int vis = (int)a2;
|
||||
|
||||
if (rid < 0)
|
||||
return -SR_BAD_RESOURCE;
|
||||
|
||||
int rid = atomic_fetch_add (&proc->rids, 1);
|
||||
struct proc_resource* r = proc_create_resource (proc, rid, PR_MUTEX, vis, NULL);
|
||||
if (r != NULL)
|
||||
return r->rid;
|
||||
|
||||
Reference in New Issue
Block a user