lib.h 3.4 KB

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