syscalls.c
134 lines
| 1.6 KiB
| text/x-c
|
CLexer
jeandet@pc-de-jeandet3.LAB-LPP.LOCAL
|
r18 | #include <stdlib.h> | ||
#include <errno.h> | ||||
#include <string.h> | ||||
#include <sys/stat.h> | ||||
#include <sys/types.h> | ||||
#include <sys/times.h> | ||||
#undef errno | ||||
#ifdef __cplusplus | ||||
extern "C" { | ||||
#endif | ||||
extern int errno; | ||||
char *__env[1] = { 0 }; | ||||
char **environ = __env; | ||||
int _exit() | ||||
{ | ||||
while(1); | ||||
} | ||||
int _close(int file) { | ||||
return -1; | ||||
} | ||||
int _write(int file, char *ptr, int len) { | ||||
int todo; | ||||
for (todo = 0; todo < len; todo++) { | ||||
//outbyte (*ptr++); | ||||
} | ||||
return len; | ||||
} | ||||
int _execve(char *name, char **argv, char **env) { | ||||
errno = ENOMEM; | ||||
return -1; | ||||
} | ||||
int _fork(void) { | ||||
errno = EAGAIN; | ||||
return -1; | ||||
} | ||||
int _fstat(int file, struct stat *st) { | ||||
st->st_mode = S_IFCHR; | ||||
return 0; | ||||
} | ||||
int _getpid(void) { | ||||
return 1; | ||||
} | ||||
int _isatty(int file) { | ||||
return 1; | ||||
} | ||||
int _kill(int pid, int sig) { | ||||
errno = EINVAL; | ||||
return -1; | ||||
} | ||||
int _link(char *old, char *new) { | ||||
errno = EMLINK; | ||||
return -1; | ||||
} | ||||
int _lseek(int file, int ptr, int dir) { | ||||
return 0; | ||||
} | ||||
int _open(const char *name, int flags, int mode) { | ||||
return -1; | ||||
} | ||||
int _read(int file, char *ptr, int len) { | ||||
return 0; | ||||
} | ||||
caddr_t _sbrk(int incr) { | ||||
register char * stack_ptr __asm__ ("sp"); | ||||
extern char _end; /* Defined by the linker */ | ||||
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; | ||||
} | ||||
int _stat(char *file, struct stat *st) { | ||||
st->st_mode = S_IFCHR; | ||||
return 0; | ||||
} | ||||
int _times(struct tms *buf) { | ||||
return -1; | ||||
} | ||||
int _unlink(char *name) { | ||||
errno = ENOENT; | ||||
return -1; | ||||
} | ||||
int _wait(int *status) { | ||||
errno = ECHILD; | ||||
return -1; | ||||
} | ||||
#ifdef __cplusplus | ||||
} | ||||
#endif | ||||