/dev/console

This commit is contained in:
Matheus
2022-08-20 15:15:10 -03:00
parent f7e5b5ba67
commit 9c6ce452f8
8 changed files with 56 additions and 43 deletions
+2 -2
View File
@@ -17,6 +17,7 @@ int devman_newdevice(char* name, int type, int major, int minor, devcalls* calls
if(!addr)
return ENOMEM;
majorcalls = addr;
highestmajor = major;
}
majorcalls[major] = calls;
@@ -26,10 +27,9 @@ int devman_newdevice(char* name, int type, int major, int minor, devcalls* calls
}
int devman_write(int *error, int dev, void* buff, size_t count, size_t offset){
if(major(dev) > highestmajor)
return ENODEV;
return majorcalls[major(dev)]->write(error, minor(dev), buff, count, offset);
+4 -12
View File
@@ -295,31 +295,23 @@ void sched_runinit(){
fd_t* stdoutfd = &proc->fds[1];
fd_t* stderrfd = &proc->fds[2];
// dummy file before console actually gets implemented and a devfs node
#define CONSOLE_DUMMY "etc/consoledummy"
#define CONSOLE_PATH "dev/console"
size_t ret = vfs_create(vfs_root(), CONSOLE_DUMMY, 0777);
if(ret){
printf("Create failed: %s\n", strerror(ret));
_panic("Failed to create dummy console", 0);
}
ret = vfs_open(&stdinfd->node, vfs_root(), CONSOLE_DUMMY);
int ret = vfs_open(&stdinfd->node, vfs_root(), CONSOLE_PATH);
if(ret){
printf("Open failed: %s\n", strerror(ret));
_panic("Could not open stdin for init", 0);
}
ret = vfs_open(&stdoutfd->node, vfs_root(), CONSOLE_DUMMY);
ret = vfs_open(&stdoutfd->node, vfs_root(), CONSOLE_PATH);
if(ret){
printf("Open failed: %s\n", strerror(ret));
_panic("Could not open stdout for init", 0);
}
ret = vfs_open(&stderrfd->node, vfs_root(), CONSOLE_DUMMY);
ret = vfs_open(&stderrfd->node, vfs_root(), CONSOLE_PATH);
if(ret){
printf("Open failed: %s\n", strerror(ret));
+3
View File
@@ -59,6 +59,9 @@ syscallret syscall_write(int ifd, void* buff, size_t count){
fd->offset += writec;
if(fd->node->st.st_size < fd->offset)
fd->offset = fd->node->st.st_size;
retv.errno = 0;
retv.ret = writec;