summaryrefslogtreecommitdiff
path: root/kernel/syscalls.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/syscalls.c')
-rw-r--r--kernel/syscalls.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/kernel/syscalls.c b/kernel/syscalls.c
index edc4751..2952c11 100644
--- a/kernel/syscalls.c
+++ b/kernel/syscalls.c
@@ -30,14 +30,24 @@
static fd fds[MAX_PID][MAX_FD];
static bool open_fd[MAX_PID][MAX_FD];
-void fd_init_std_streams(uint32_t pid)
+void fd_init_std_streams(uint32_t pid,bool fb)
{
- if(pid==0)
+ static bool first=true;
+ if(pid==0&&first)
{
+ first=false;
//stdin / stdout /stderr
fds[0][0]=fd_from_ringbuffer();
- fds[0][1]=fd_from_fb_term();
- fds[0][2]=fd_from_fb_term();
+ if(!fb) // ega text mode
+ {
+ fds[0][1]=fd_from_term();
+ fds[0][2]=fd_from_term();
+ }
+ else
+ {
+ 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;
@@ -52,6 +62,7 @@ void fd_init_std_streams(uint32_t pid)
open_fd[pid][2]=true;
}
}
+//
/** errno helper */
void set_errno(int no)