syscalls.c
来自「标准c库代码,可以应用于各个系统提供了大量的基本函数」· C语言 代码 · 共 198 行
C
198 行
#include <_ansi.h>#include <sys/types.h>#include <sys/stat.h>#include "swi.h"int errno;int_read (int file, char *ptr, int len){ asm ("swi %a0" :: "i" (SWI_Read ));}int_lseek (int file, int ptr, int dir){ asm ("swi %a0" :: "i" (SWI_Seek));}staticwritechar (char c){ asm ("swi %a0" :: "i" (SWI_WriteC));}int_write ( int file, char *ptr, int len){ asm ("swi %a0" :: "i" (SWI_Write));}int_close (int file){ asm ("swi %a0" :: "i" (SWI_Close));}register char *stack_ptr asm ("sp");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){ asm ("swi %a0" :: "i" (SWI_Open));}int_unlink (){ return -1;}isatty (fd) int fd;{ return 1;}_exit (n){ asm ("swi %a0" :: "i" (SWI_Exit));}abort (){ asm ("mov r0,#17\nswi %a0" :: "i" (SWI_Exit));}_kill (n, m){ asm ("swi %a0" :: "i" (SWI_Exit));}_getpid (n){ return 1;}_raise (){}#if 0int_stat (const char *path, struct stat *st){ asm ("swi %a0" :: "i" (SWI_Stat));}int_chmod (const char *path, short mode){ asm ("swi %a0" :: "i" (SWI_Chmod));}int_chown (const char *path, short owner, short group){ asm ("swi %a0" :: "i" (SWI_Chown));}int_utime (path, times) const char *path; char *times;{ asm ("swi %a0" :: "i" (SWI_Utime));}int_fork (){ asm ("swi %a0" :: "i" (SWI_Fork));}int_wait (statusp) int *statusp;{ asm ("swi %a0" :: "i" (SWI_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);}#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?