From fe8180d88540bfa96595dcc58290de5425e534e3 Mon Sep 17 00:00:00 2001 From: Miguel Date: Fri, 5 Oct 2018 23:41:51 +0200 Subject: drunken proggin --- kernel/syscalls.c | 46 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 14 deletions(-) (limited to 'kernel/syscalls.c') diff --git a/kernel/syscalls.c b/kernel/syscalls.c index 4bf63fc..130e6dd 100644 --- a/kernel/syscalls.c +++ b/kernel/syscalls.c @@ -31,36 +31,46 @@ static fd fds[MAX_PID][MAX_FD]; static bool open_fd[MAX_PID][MAX_FD]; -void fd_init_std_streams(uint32_t pid,bool fb) +fd *get_fd(uint32_t pid,uint32_t file) { + return &(fds[pid][file]); +} + +void fd_init_std_streams(uint32_t pid) +{ + // fds[pid][0]=fd_from_ringbuffer(); + // open_fd[pid][0]=true; + return; + static bool first=true; if(pid==0&&first) { first=false; //stdin / stdout /stderr fds[0][0]=fd_from_ringbuffer(); - if(!fb) // ega text mode + +// if(!fb) // ega text mode { - fds[0][1]=fd_from_term(); - fds[0][2]=fd_from_term(); + // fds[0][1]=fd_from_term(); + // fds[0][2]=fd_from_term(); } - else +// else { - fds[0][1]=fd_from_fb_term(); - fds[0][2]=fd_from_fb_term(); + //fds[0][1]=fd_from_fb_term(); + //fds[0][2]=fd_from_fb_term(); } open_fd[0][0]=true; - open_fd[0][1]=true; - open_fd[0][2]=true; +// open_fd[0][1]=true; +// open_fd[0][2]=true; } else { fds[pid][0]=fds[0][0]; - fds[pid][1]=fds[0][1]; - fds[pid][2]=fds[0][2]; +// fds[pid][1]=fds[0][1]; +// fds[pid][2]=fds[0][2]; open_fd[pid][0]=true; - open_fd[pid][1]=true; - open_fd[pid][2]=true; +// open_fd[pid][1]=true; +// open_fd[pid][2]=true; } } // @@ -178,6 +188,7 @@ int syscall_lseek(int file,int ptr,int dir,uint32_t pid) // TODO: /dev/console or /dev/tty1 - /dev/ttyN int syscall_write(int file, char *buf, int len,uint32_t pid) { + if(!open_fd[pid][file])kpanic("writing to closed file descriptor"); for(int i=0;i