From 8e933fac9fd068343bb602f13175c8d70a6c5768 Mon Sep 17 00:00:00 2001 From: Jake Mannens Date: Wed, 1 Aug 2018 02:27:57 +1000 Subject: Defined EOF as -1 in stdio.h. Implemented the sprintf() library function in lib/stdio.c which uses the vsprintf() function. Implemented a very primative controlling TTY for each process. This is achieved by a switch in the sys_puts system call which uses the 'ctty' element of the process' task structure to determine an appropriate I/O channel. A negative ctty value doesn't equate to any I/O channel effectively disabling the process' output. Added the sys_ctty system call which allows a process to set it's own ctty value. Removed the sys_rsputs system call. Output to serial is now performed by the process first setting it's ctty value to 1, then invoking sys_puts. --- lib/stdio.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/stdio.c b/lib/stdio.c index a718ee4..67f0a54 100644 --- a/lib/stdio.c +++ b/lib/stdio.c @@ -3,7 +3,7 @@ #include _syscall1(int, puts, char*, s); -_syscall1(int, rsputs, char*, s); +_syscall1(int, ctty, int, ctty); int printf(char *fmt, ...) { int ret; @@ -18,15 +18,13 @@ int printf(char *fmt, ...) { return ret; } -int rsprintf(char *fmt, ...) { +int sprintf(char *str, char *fmt, ...) { int ret; - char buf[1024]; va_list ap; va_start(ap, fmt); - ret = vsprintf(buf, fmt, ap); + ret = vsprintf(str, fmt, ap); va_end(ap); - rsputs(buf); return ret; } -- cgit v1.3