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 + -
显示快捷键?