1 /* 2 * functions (possibly) linked in, complete, from libc. 3 */ 4 5 /* 6 * mem routines 7 */ 8 extern void* memccpy(void*, void*, int, long); 9 extern void* memset(void*, int, long); 10 extern int memcmp(void*, void*, long); 11 extern void* memmove(void*, void*, long); 12 extern void* memchr(void*, int, long); 13 14 /* 15 * string routines 16 */ 17 extern char* strcat(char*, char*); 18 extern char* strchr(char*, char); 19 extern int strcmp(char*, char*); 20 extern char* strcpy(char*, char*); 21 extern char* strncat(char*, char*, long); 22 extern char* strncpy(char*, char*, long); 23 extern int strncmp(char*, char*, long); 24 extern long strlen(char*); 25 extern char* strrchr(char*, char); 26 extern char* strstr(char*, char*); 27 28 /* 29 * print routines 30 * Fconv isn't used but is defined to satisfy prototypes in libg.h 31 * that are never called. 32 */ 33 typedef struct Fconv Fconv; 34 35 extern char* donprint(char*, char*, char*, void*); 36 extern int sprint(char*, char*, ...); 37 extern int print(char*, ...); 38 39 #define PRINTSIZE 256 40 41 /* 42 * one-of-a-kind 43 */ 44 extern int atoi(char*); 45 extern long strtol(char*, char**, int); 46 extern ulong strtoul(char*, char**, int); 47 extern char end[]; 48 extern char edata[]; 49 50 /* 51 * Syscall data structures 52 */ 53 54 #define MORDER 0x0003 /* mask for bits defining order of mounting */ 55 #define MREPL 0x0000 /* mount replaces object */ 56 #define MBEFORE 0x0001 /* mount goes before others in union directory */ 57 #define MAFTER 0x0002 /* mount goes after others in union directory */ 58 #define MCREATE 0x0004 /* permit creation in mounted directory */ 59 #define MMASK 0x0007 /* all bits on */ 60 61 #define OREAD 0 /* open for read */ 62 #define OWRITE 1 /* write */ 63 #define ORDWR 2 /* read and write */ 64 #define OEXEC 3 /* execute, == read but check execute permission */ 65 #define OTRUNC 16 /* or'ed in (except for exec), truncate file first */ 66 #define OCEXEC 32 /* or'ed in, close on exec */ 67 #define ORCLOSE 64 /* or'ed in, remove on close */ 68 69 #define NCONT 0 /* continue after note */ 70 #define NDFLT 1 /* terminate after note */ 71 72 typedef struct Qid Qid; 73 typedef struct Dir Dir; 74 typedef struct Waitmsg Waitmsg; 75 76 #define ERRLEN 64 77 #define DIRLEN 116 78 #define NAMELEN 28 79 80 struct Qid 81 { 82 ulong path; 83 ulong vers; 84 }; 85 86 struct Dir 87 { 88 char name[NAMELEN]; 89 char uid[NAMELEN]; 90 char gid[NAMELEN]; 91 Qid qid; 92 ulong mode; 93 long atime; 94 long mtime; 95 ulong length; 96 short type; 97 short dev; 98 }; 99 100 struct Waitmsg 101 { 102 int pid; /* of loved one */ 103 int status; /* unused; a placeholder */ 104 ulong time[3]; /* of loved one */ 105 char msg[ERRLEN]; 106 }; 107 #define nelem(x) (sizeof(x)/sizeof((x)[0])) 108