diff options
Diffstat (limited to 'userspace/test.c')
| -rw-r--r-- | userspace/test.c | 81 |
1 files changed, 1 insertions, 80 deletions
diff --git a/userspace/test.c b/userspace/test.c index bdc6da0..12226d3 100644 --- a/userspace/test.c +++ b/userspace/test.c @@ -1,86 +1,7 @@ #include <stdlib.h> #include <stdio.h> - -//printf needs following syscalls: sbrk write close fstat isatty lseek read -// - -#include <sys/stat.h> - -int close(int file) -{ - return -1; -} - -int fstat(int file, struct stat *st) -{ - st->st_mode = S_IFCHR; - return 0; -} - -int isatty(int file) { - return 1; -} - -int lseek(int file, int ptr, int dir) { - return 0; -} - -int read(int file, char *ptr, int len) { - return 0; -} - -int write(int file, char *ptr, int len) -{ - - int todo; - for (todo = 0; todo < len; todo++) - { - - char byte=(*ptr++); - int byt=byte; - - int ebx; // will hold return value; - // system call - asm("pusha"); - asm("mov $61,%eax"); // select syscall) - - asm("mov %0,%%edx"::"m"(byt)); - //asm("mov $88,%edx"); - - asm("int $0x80"); // actual syscall ! interrupt - asm("mov %%ebx, %0": "=b" (ebx)); - asm("popa"); - // - - } - return len; -} - -caddr_t sbrk(int incr) -{ - -// extern char _end; /* Defined by the linker */ - char _end; - static char *heap_end; - char *prev_heap_end; - - if (heap_end == 0) { - heap_end = &_end; - } - prev_heap_end = heap_end; - /* - if (heap_end + incr > stack_ptr) { - write (1, "Heap and stack collision\n", 25); - abort (); - } - */ - - heap_end += incr; - return (caddr_t) prev_heap_end; -} - -// +#include "syscalls.h> int main() { |
