Add dev_delhandle() syscall to delete a device handle from process resources
This commit is contained in:
@ -135,3 +135,21 @@ int32_t SYSCALL4(sys_dev_cmd, dev1, cmd1, argbuf1, len1) {
|
||||
done:
|
||||
return ret;
|
||||
}
|
||||
|
||||
int32_t SYSCALL1(sys_dev_delhandle, dev1) {
|
||||
uint64_t *devh = (uint64_t *)dev1;
|
||||
int32_t ret = E_OK;
|
||||
|
||||
if (devh == NULL) {
|
||||
return E_NOMEMORY;
|
||||
}
|
||||
|
||||
spinlock_acquire(&PROCS.spinlock);
|
||||
Proc *proc = NULL;
|
||||
LL_FINDPROP(PROCS.procs, proc, pid, _caller_pid);
|
||||
spinlock_release(&PROCS.spinlock);
|
||||
|
||||
proc->devs[*devh] = NULL;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user