📄 syscalls.c
字号:
#include <_ansi.h>#include <sys/types.h>#include <sys/stat.h>#include "sys/syscall.h"int errno;int_read (int file, char *ptr, int len){ return __trap3 (SYS_read, file, ptr, len);}int_lseek (int file, int ptr, int dir){ return __trap3 (SYS_lseek, file, ptr, dir);}staticwritechar (char c){ asm ("mov %0,r0"::"r" (c)); asm ("trapa #1");}int_write ( int file, char *ptr, int len){ return __trap3 (SYS_write, file, ptr, len);}int_close (int file){ return __trap3 (SYS_close, file, 0, 0);}register char *stack_ptr asm ("r15");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 > 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 __trap3 (SYS_open, path, flags, 0);}int_unlink (){ return -1;}isatty (fd) int fd;{ return 1;}_exit (n){ return __trap3 (SYS_exit, n, 0, 0);}_kill (n, m){ return __trap3 (SYS_exit, 0xdead, 0, 0);}_getpid (n){ return 1;}_raise (){}int_stat (const char *path, struct stat *st){ return _trap3 (SYS_stat, path, st, 0);}int_chmod (const char *path, short mode){ return _trap3 (SYS_chmod, path, mode);}int_chown (const char *path, short owner, short group){ return _trap3 (SYS_chown, path, owner, group);}int_utime (path, times) const char *path; char *times;{ return _trap3 (SYS_utime, path, times);}int_fork (){ return _trap3 (SYS_fork);}int_wait (statusp) int *statusp;{ return _trap3 (SYS_wait);}int_execve (const char *path, char *const argv[], char *const envp[]){ return _trap3 (SYS_execve, path, argv, envp);}int_execv (const char *path, char *const argv[]){ return _trap3 (SYS_execv, path, argv);}int_pipe (int *fd){ return _trap3 (SYS_pipe, fd);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -