📄 syscalls.c
字号:
#include <_ansi.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/time.h>#include "sys/syscall.h"int errno;/* This is used by _sbrk. */register char *stack_ptr asm ("r15");int_read (int file, char *ptr, int len){ return __trap34 (SYS_read, file, ptr, len);}int_lseek (int file, int ptr, int dir){ return __trap34 (SYS_lseek, file, ptr, dir);}int_write ( int file, char *ptr, int len){ return __trap34 (SYS_write, file, ptr, len);}int_close (int file){ return __trap34 (SYS_close, file, 0, 0);}int_link (char *old, char *new){ return -1;}caddr_t_sbrk (int incr){ 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_fstat (int file, struct stat *st){ st->st_mode = S_IFCHR; return 0;}int_open (const char *path, int flags){ return __trap34 (SYS_open, path, flags, 0);}int_creat (const char *path, int mode){ return __trap34 (SYS_creat, path, mode, 0);}int_unlink (){ return -1;}isatty (fd) int fd;{ return 1;}_exit (n){ return __trap34 (SYS_exit, n, 0, 0);}_kill (n, m){ return __trap34 (SYS_exit, 0xdead, 0, 0);}_getpid (n){ return 1;}_raise (){}int_stat (const char *path, struct stat *st){ return __trap34 (SYS_stat, path, st, 0);}int_chmod (const char *path, short mode){ return __trap34 (SYS_chmod, path, mode);}int_chown (const char *path, short owner, short group){ return __trap34 (SYS_chown, path, owner, group);}int_utime (path, times) const char *path; char *times;{ return __trap34 (SYS_utime, path, times);}int_fork (){ return __trap34 (SYS_fork);}int_wait (statusp) int *statusp;{ return __trap34 (SYS_wait);}int_execve (const char *path, char *const argv[], char *const envp[]){ return __trap34 (SYS_execve, path, argv, envp);}int_execv (const char *path, char *const argv[]){ return __trap34 (SYS_execv, path, argv);}int_pipe (int *fd){ return __trap34 (SYS_pipe, fd);}/* This is only provided because _gettimeofday_r and _times_r are defined in the same module, so we avoid a link error. */clock_t_times (struct tms *tp){ return -1;}int_gettimeofday (struct timeval *tv, struct timezone *tz){ tv->tv_usec = 0; tv->tv_sec = __trap34 (SYS_time); return 0;}static inline int__setup_argv_for_main (int argc){ char **argv; int i = argc; argv = __builtin_alloca ((1 + argc) * sizeof (*argv)); argv[i] = NULL; while (i--) { argv[i] = __builtin_alloca (1 + __trap34 (SYS_argnlen, i)); __trap34 (SYS_argn, i, argv[i]); } return main (argc, argv);}int__setup_argv_and_call_main (){ int argc = __trap34 (SYS_argc); if (argc <= 0) return main (argc, NULL); else return __setup_argv_for_main (argc);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -