summaryrefslogtreecommitdiff
path: root/kernel/syscalls.c
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-09-21 12:56:51 +0200
committerMiguel <m.i@gmx.at>2018-09-21 12:56:51 +0200
commitc298ca7e6beaad0bcc32af6d4cf50d41b79f13b7 (patch)
treeb28e9c052cff3264439cad3c41b29262c60ba6ac /kernel/syscalls.c
parentf5281689c95758f17628f0286e0265ecf3385a8e (diff)
fix framebufffer/ textmode and clean userspace a little bit more
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)