Remove vobjcnt field of Proc
This commit is contained in:
@ -180,7 +180,7 @@ void proc_reaper(void) {
|
|||||||
Proc *zombie = head;
|
Proc *zombie = head;
|
||||||
LL_REMOVE(PROCS.procs, zombie);
|
LL_REMOVE(PROCS.procs, zombie);
|
||||||
|
|
||||||
for (size_t i = 0; i < zombie->vobjcnt; i++) {
|
for (size_t i = 0; i < PROC_VFSHANDLES_MAX; i++) {
|
||||||
if (zombie->vobjs[i] != NULL) {
|
if (zombie->vobjs[i] != NULL) {
|
||||||
vfs_close(zombie->vobjs[i]);
|
vfs_close(zombie->vobjs[i]);
|
||||||
zombie->vobjs[i] = NULL;
|
zombie->vobjs[i] = NULL;
|
||||||
|
|||||||
@ -55,7 +55,6 @@ typedef struct Proc {
|
|||||||
VasRange *vas;
|
VasRange *vas;
|
||||||
|
|
||||||
VfsObj *vobjs[PROC_VFSHANDLES_MAX];
|
VfsObj *vobjs[PROC_VFSHANDLES_MAX];
|
||||||
uint64_t vobjcnt;
|
|
||||||
|
|
||||||
IpcPipe *pipes[PROC_PIPEHANDLES_MAX];
|
IpcPipe *pipes[PROC_PIPEHANDLES_MAX];
|
||||||
SpinLock pipes_spinlock;
|
SpinLock pipes_spinlock;
|
||||||
|
|||||||
@ -38,18 +38,16 @@ int32_t SYSCALL2(sys_fs_openf, opath1, oflags1) {
|
|||||||
Proc *proc = PROCS.current;
|
Proc *proc = PROCS.current;
|
||||||
spinlock_release(&PROCS.spinlock);
|
spinlock_release(&PROCS.spinlock);
|
||||||
|
|
||||||
if (proc->vobjcnt < PROC_VFSHANDLES_MAX) {
|
for (size_t i = 0; i < PROC_VFSHANDLES_MAX; i++) {
|
||||||
for (size_t i = 0; i < PROC_VFSHANDLES_MAX; i++) {
|
if (proc->vobjs[i] == NULL) {
|
||||||
if (proc->vobjs[i] == NULL) {
|
proc->vobjs[i] = vobj;
|
||||||
proc->vobjs[i] = vobj;
|
ret = i;
|
||||||
ret = i;
|
goto done;
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
ret = E_NOMEMORY;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ret = E_NOMEMORY;
|
||||||
|
|
||||||
done:
|
done:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user