mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-30 22:18:21 +00:00
/dev/console
This commit is contained in:
+2
-2
@@ -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);
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user