scheduler: don't depend on devfs being mounted

This commit is contained in:
Matheus
2023-07-26 00:17:29 -03:00
parent c4bdf020f4
commit 755fd1a8d1
+11 -9
View File
@@ -9,6 +9,7 @@
#include <kernel/elf.h> #include <kernel/elf.h>
#include <kernel/file.h> #include <kernel/file.h>
#include <semaphore.h> #include <semaphore.h>
#include <kernel/devfs.h>
#define QUANTUM_US 100000 #define QUANTUM_US 100000
#define SCHEDULER_STACK_SIZE 4096 #define SCHEDULER_STACK_SIZE 4096
@@ -438,20 +439,21 @@ void sched_runinit() {
__assert(interpinterp == NULL); __assert(interpinterp == NULL);
} }
vnode_t *stdinnode; vnode_t *consolenode;
__assert(vfs_open(vfsroot, "/dev/console", V_FFLAGS_READ, &stdinnode) == 0); __assert(devfs_getbyname("console", &consolenode) == 0);
vnode_t *stdoutnode; __assert(VOP_OPEN(&consolenode, V_FFLAGS_READ, &proc->cred) == 0)
__assert(vfs_open(vfsroot, "/dev/console", V_FFLAGS_WRITE, &stdoutnode) == 0); VOP_HOLD(consolenode);
vnode_t *stderrnode; __assert(VOP_OPEN(&consolenode, V_FFLAGS_WRITE, &proc->cred) == 0)
__assert(vfs_open(vfsroot, "/dev/console", V_FFLAGS_WRITE, &stderrnode) == 0); VOP_HOLD(consolenode);
__assert(VOP_OPEN(&consolenode, V_FFLAGS_WRITE, &proc->cred) == 0)
file_t *stdin = fd_allocate(); file_t *stdin = fd_allocate();
file_t *stdout = fd_allocate(); file_t *stdout = fd_allocate();
file_t *stderr = fd_allocate(); file_t *stderr = fd_allocate();
stdin->vnode = stdinnode; stdin->vnode = consolenode;
stdout->vnode = stdoutnode; stdout->vnode = consolenode;
stderr->vnode = stderrnode; stderr->vnode = consolenode;
stdin->flags = FILE_READ; stdin->flags = FILE_READ;
stdout->flags = stderr->flags = FILE_WRITE; stdout->flags = stderr->flags = FILE_WRITE;