BOOK.T
上传用户:jnzhq888
上传日期:2007-01-18
资源大小:51694k
文件大小:987k
源码类别:

操作系统开发

开发平台:

WINDOWS

  1. .fp 5 CW LucidaT   ." To use a font other than Lucida, change 'LucidaT'
  2. .po .9i
  3. .lg 0
  4. .nf
  5. .ec `
  6. .ps 7
  7. .vs 9
  8. .lt 5.25i
  9. `f5
  10. .nr Tb `w'0'
  11. .nr Fp 0
  12. .ta 9u*`n(Tbu 17u*`n(Tbu 25u*`n(Tbu 33u*`n(Tbu 41u*`n(Tbu 49u*`n(Tbu 57u*`n(Tbu 65u*`n(Tbu 73u*`n(Tbu 81u*`n(Tbu
  13. .de Op 
  14. .if ``n(Fp>0 .bp
  15. .nr Fp 1
  16. .sp 0.75i
  17. .tl '``fR``s10MINIX SOURCE CODE``s0'``s11File: ``$2``s0``fP'``fB``s12``n%``s0``fP'
  18. .sp 0.25i
  19. ..
  20. .de Ep 
  21. .if ``n(Fp>0 .bp
  22. .sp 0.75i
  23. .tl '``fB``s12``n%``s0``fP``fR'``s11File: ``$2'``s0``s10MINIX SOURCE CODE``s0``fP'
  24. .nr Fp 1
  25. .sp 0.25i
  26. ..
  27. .Op 1 include/ansi.h
  28. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  29. include/ansi.h    
  30. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  31. 00000 /* The <ansi.h> header attempts to decide whether the compiler has enough
  32. 00001  * conformance to Standard C for Minix to take advantage of.  If so, the
  33. 00002  * symbol _ANSI is defined (as 31415).  Otherwise _ANSI is not defined
  34. 00003  * here, but it may be defined by applications that want to bend the rules.
  35. 00004  * The magic number in the definition is to inhibit unnecessary bending
  36. 00005  * of the rules.  (For consistency with the new '#ifdef _ANSI" tests in
  37. 00006  * the headers, _ANSI should really be defined as nothing, but that would
  38. 00007  * break many library routines that use "#if _ANSI".)
  39. 00008
  40. 00009  * If _ANSI ends up being defined, a macro
  41. 00010  *
  42. 00011  *      _PROTOTYPE(function, params)
  43. 00012  *
  44. 00013  * is defined.  This macro expands in different ways, generating either
  45. 00014  * ANSI Standard C prototypes or old-style K&R (Kernighan & Ritchie)
  46. 00015  * prototypes, as needed.  Finally, some programs use _CONST, _VOIDSTAR etc
  47. 00016  * in such a way that they are portable over both ANSI and K&R compilers.
  48. 00017  * The appropriate macros are defined here.
  49. 00018  */
  50. 00019
  51. 00020 #ifndef _ANSI_H
  52. 00021 #define _ANSI_H
  53. 00022
  54. 00023 #if __STDC__ == 1
  55. 00024 #define _ANSI           31459   /* compiler claims full ANSI conformance */
  56. 00025 #endif
  57. 00026
  58. 00027 #ifdef __GNUC__
  59. 00028 #define _ANSI           31459   /* gcc conforms enough even in non-ANSI mode */
  60. 00029 #endif
  61. 00030
  62. 00031 #ifdef _ANSI
  63. 00032
  64. 00033 /* Keep everything for ANSI prototypes. */
  65. 00034 #define _PROTOTYPE(function, params)    function params
  66. 00035 #define _ARGS(params)                   params
  67. 00036
  68. 00037 #define _VOIDSTAR       void *
  69. 00038 #define _VOID           void
  70. 00039 #define _CONST          const
  71. 00040 #define _VOLATILE       volatile
  72. 00041 #define _SIZET          size_t
  73. 00042
  74. 00043 #else
  75. 00044
  76. 00045 /* Throw away the parameters for K&R prototypes. */
  77. 00046 #define _PROTOTYPE(function, params)    function()
  78. 00047 #define _ARGS(params)                   ()
  79. 00048
  80. 00049 #define _VOIDSTAR       void *
  81. 00050 #define _VOID           void
  82. 00051 #define _CONST
  83. 00052 #define _VOLATILE
  84. 00053 #define _SIZET          int
  85. 00054
  86. .Ep 2 include/ansi.h
  87. 00055 #endif /* _ANSI */
  88. 00056
  89. 00057 #endif /* ANSI_H */
  90. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  91. include/limits.h    
  92. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  93. 00100 /* The <limits.h> header defines some basic sizes, both of the language types 
  94. 00101  * (e.g., the number of bits in an integer), and of the operating system (e.g.
  95. 00102  * the number of characters in a file name.
  96. 00103  */
  97. 00104
  98. 00105 #ifndef _LIMITS_H
  99. 00106 #define _LIMITS_H
  100. 00107
  101. 00108 /* Definitions about chars (8 bits in MINIX, and signed). */
  102. 00109 #define CHAR_BIT           8    /* # bits in a char */
  103. 00110 #define CHAR_MIN        -128    /* minimum value of a char */
  104. 00111 #define CHAR_MAX         127    /* maximum value of a char */
  105. 00112 #define SCHAR_MIN       -128    /* minimum value of a signed char */
  106. 00113 #define SCHAR_MAX        127    /* maximum value of a signed char */
  107. 00114 #define UCHAR_MAX        255    /* maximum value of an unsigned char */
  108. 00115 #define MB_LEN_MAX         1    /* maximum length of a multibyte char */
  109. 00116
  110. 00117 /* Definitions about shorts (16 bits in MINIX). */
  111. 00118 #define SHRT_MIN  (-32767-1)    /* minimum value of a short */
  112. 00119 #define SHRT_MAX       32767    /* maximum value of a short */
  113. 00120 #define USHRT_MAX     0xFFFF    /* maximum value of unsigned short */
  114. 00121
  115. 00122 /* _EM_WSIZE is a compiler-generated symbol giving the word size in bytes. */
  116. 00123 #if _EM_WSIZE == 2
  117. 00124 #define INT_MIN   (-32767-1)    /* minimum value of a 16-bit int */
  118. 00125 #define INT_MAX        32767    /* maximum value of a 16-bit int */
  119. 00126 #define UINT_MAX      0xFFFF    /* maximum value of an unsigned 16-bit int */
  120. 00127 #endif
  121. 00128
  122. 00129 #if _EM_WSIZE == 4
  123. 00130 #define INT_MIN (-2147483647-1) /* minimum value of a 32-bit int */
  124. 00131 #define INT_MAX   2147483647    /* maximum value of a 32-bit int */
  125. 00132 #define UINT_MAX  0xFFFFFFFF    /* maximum value of an unsigned 32-bit int */
  126. 00133 #endif
  127. 00134
  128. 00135 /*Definitions about longs (32 bits in MINIX). */
  129. 00136 #define LONG_MIN (-2147483647L-1)/* minimum value of a long */
  130. 00137 #define LONG_MAX  2147483647L   /* maximum value of a long */
  131. 00138 #define ULONG_MAX 0xFFFFFFFFL   /* maximum value of an unsigned long */
  132. 00139
  133. 00140 /* Minimum sizes required by the POSIX P1003.1 standard (Table 2-3). */
  134. 00141 #ifdef _POSIX_SOURCE            /* these are only visible for POSIX */
  135. 00142 #define _POSIX_ARG_MAX    4096  /* exec() may have 4K worth of args */
  136. 00143 #define _POSIX_CHILD_MAX     6  /* a process may have 6 children */
  137. 00144 #define _POSIX_LINK_MAX      8  /* a file may have 8 links */
  138. 00145 #define _POSIX_MAX_CANON   255  /* size of the canonical input queue */
  139. 00146 #define _POSIX_MAX_INPUT   255  /* you can type 255 chars ahead */
  140. 00147 #define _POSIX_NAME_MAX     14  /* a file name may have 14 chars */
  141. 00148 #define _POSIX_NGROUPS_MAX   0  /* supplementary group IDs are optional */
  142. 00149 #define _POSIX_OPEN_MAX     16  /* a process may have 16 files open */
  143. .Op 3 include/limits.h
  144. 00150 #define _POSIX_PATH_MAX    255  /* a pathname may contain 255 chars */
  145. 00151 #define _POSIX_PIPE_BUF    512  /* pipes writes of 512 bytes must be atomic */
  146. 00152 #define _POSIX_STREAM_MAX    8  /* at least 8 FILEs can be open at once */
  147. 00153 #define _POSIX_TZNAME_MAX    3  /* time zone names can be at least 3 chars */
  148. 00154 #define _POSIX_SSIZE_MAX 32767  /* read() must support 32767 byte reads */
  149. 00155
  150. 00156 /* Values actually implemented by MINIX (Tables 2-4, 2-5, 2-6, and 2-7). */
  151. 00157 /* Some of these old names had better be defined when not POSIX. */
  152. 00158 #define _NO_LIMIT        100    /* arbitrary number; limit not enforced */
  153. 00159
  154. 00160 #define NGROUPS_MAX        0    /* supplemental group IDs not available */
  155. 00161 #if _EM_WSIZE > 2
  156. 00162 #define ARG_MAX        16384    /* # bytes of args + environ for exec() */
  157. 00163 #else
  158. 00164 #define ARG_MAX         4096    /* args + environ on small machines */
  159. 00165 #endif
  160. 00166 #define CHILD_MAX  _NO_LIMIT    /* MINIX does not limit children */
  161. 00167 #define OPEN_MAX          20    /* # open files a process may have */
  162. 00168 #define LINK_MAX         127    /* # links a file may have */
  163. 00169 #define MAX_CANON        255    /* size of the canonical input queue */
  164. 00170 #define MAX_INPUT        255    /* size of the type-ahead buffer */
  165. 00171 #define NAME_MAX          14    /* # chars in a file name */
  166. 00172 #define PATH_MAX         255    /* # chars in a path name */
  167. 00173 #define PIPE_BUF        7168    /* # bytes in atomic write to a pipe */
  168. 00174 #define STREAM_MAX        20    /* must be the same as FOPEN_MAX in stdio.h */
  169. 00175 #define TZNAME_MAX         3    /* maximum bytes in a time zone name is 3 */
  170. 00176 #define SSIZE_MAX      32767    /* max defined byte count for read() */
  171. 00177
  172. 00178 #endif /* _POSIX_SOURCE */
  173. 00179
  174. 00180 #endif /* _LIMITS_H */
  175. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  176. include/errno.h    
  177. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  178. 00200 /* The <errno.h> header defines the numbers of the various errors that can
  179. 00201  * occur during program execution.  They are visible to user programs and 
  180. 00202  * should be small positive integers.  However, they are also used within 
  181. 00203  * MINIX, where they must be negative.  For example, the READ system call is 
  182. 00204  * executed internally by calling do_read().  This function returns either a 
  183. 00205  * (negative) error number or a (positive) number of bytes actually read.
  184. 00206  *
  185. 00207  * To solve the problem of having the error numbers be negative inside the
  186. 00208  * the system and positive outside, the following mechanism is used.  All the
  187. 00209  * definitions are are the form:
  188. 00210  *
  189. 00211  *      #define EPERM           (_SIGN 1)
  190. 00212  *
  191. 00213  * If the macro _SYSTEM is defined, then  _SIGN is set to "-", otherwise it is
  192. 00214  * set to "".  Thus when compiling the operating system, the  macro _SYSTEM
  193. 00215  * will be defined, setting EPERM to (- 1), whereas when when this
  194. 00216  * file is included in an ordinary user program, EPERM has the value ( 1).
  195. 00217  */
  196. 00218
  197. 00219 #ifndef _ERRNO_H                /* check if <errno.h> is already included */
  198. .Ep 4 include/errno.h
  199. 00220 #define _ERRNO_H                /* it is not included; note that fact */
  200. 00221
  201. 00222 /* Now define _SIGN as "" or "-" depending on _SYSTEM. */
  202. 00223 #ifdef _SYSTEM
  203. 00224 #   define _SIGN         -
  204. 00225 #   define OK            0
  205. 00226 #else
  206. 00227 #   define _SIGN         
  207. 00228 #endif
  208. 00229
  209. 00230 extern int errno;                 /* place where the error numbers go */
  210. 00231
  211. 00232 /* Here are the numerical values of the error numbers. */
  212. 00233 #define _NERROR               70  /* number of errors */  
  213. 00234
  214. 00235 #define EGENERIC      (_SIGN 99)  /* generic error */
  215. 00236 #define EPERM         (_SIGN  1)  /* operation not permitted */
  216. 00237 #define ENOENT        (_SIGN  2)  /* no such file or directory */
  217. 00238 #define ESRCH         (_SIGN  3)  /* no such process */
  218. 00239 #define EINTR         (_SIGN  4)  /* interrupted function call */
  219. 00240 #define EIO           (_SIGN  5)  /* input/output error */
  220. 00241 #define ENXIO         (_SIGN  6)  /* no such device or address */
  221. 00242 #define E2BIG         (_SIGN  7)  /* arg list too long */
  222. 00243 #define ENOEXEC       (_SIGN  8)  /* exec format error */
  223. 00244 #define EBADF         (_SIGN  9)  /* bad file descriptor */
  224. 00245 #define ECHILD        (_SIGN 10)  /* no child process */
  225. 00246 #define EAGAIN        (_SIGN 11)  /* resource temporarily unavailable */
  226. 00247 #define ENOMEM        (_SIGN 12)  /* not enough space */
  227. 00248 #define EACCES        (_SIGN 13)  /* permission denied */
  228. 00249 #define EFAULT        (_SIGN 14)  /* bad address */
  229. 00250 #define ENOTBLK       (_SIGN 15)  /* Extension: not a block special file */
  230. 00251 #define EBUSY         (_SIGN 16)  /* resource busy */
  231. 00252 #define EEXIST        (_SIGN 17)  /* file exists */
  232. 00253 #define EXDEV         (_SIGN 18)  /* improper link */
  233. 00254 #define ENODEV        (_SIGN 19)  /* no such device */
  234. 00255 #define ENOTDIR       (_SIGN 20)  /* not a directory */
  235. 00256 #define EISDIR        (_SIGN 21)  /* is a directory */
  236. 00257 #define EINVAL        (_SIGN 22)  /* invalid argument */
  237. 00258 #define ENFILE        (_SIGN 23)  /* too many open files in system */
  238. 00259 #define EMFILE        (_SIGN 24)  /* too many open files */
  239. 00260 #define ENOTTY        (_SIGN 25)  /* inappropriate I/O control operation */
  240. 00261 #define ETXTBSY       (_SIGN 26)  /* no longer used */
  241. 00262 #define EFBIG         (_SIGN 27)  /* file too large */
  242. 00263 #define ENOSPC        (_SIGN 28)  /* no space left on device */
  243. 00264 #define ESPIPE        (_SIGN 29)  /* invalid seek */
  244. 00265 #define EROFS         (_SIGN 30)  /* read-only file system */
  245. 00266 #define EMLINK        (_SIGN 31)  /* too many links */
  246. 00267 #define EPIPE         (_SIGN 32)  /* broken pipe */
  247. 00268 #define EDOM          (_SIGN 33)  /* domain error       (from ANSI C std) */
  248. 00269 #define ERANGE        (_SIGN 34)  /* result too large   (from ANSI C std) */
  249. 00270 #define EDEADLK       (_SIGN 35)  /* resource deadlock avoided */
  250. 00271 #define ENAMETOOLONG  (_SIGN 36)  /* file name too long */
  251. 00272 #define ENOLCK        (_SIGN 37)  /* no locks available */
  252. 00273 #define ENOSYS        (_SIGN 38)  /* function not implemented */
  253. 00274 #define ENOTEMPTY     (_SIGN 39)  /* directory not empty */
  254. 00275
  255. 00276 /* The following errors relate to networking. */
  256. 00277 #define EPACKSIZE     (_SIGN 50)  /* invalid packet size for some protocol */
  257. 00278 #define EOUTOFBUFS    (_SIGN 51)  /* not enough buffers left */
  258. 00279 #define EBADIOCTL     (_SIGN 52)  /* illegal ioctl for device */
  259. .Op 5 include/errno.h
  260. 00280 #define EBADMODE      (_SIGN 53)  /* badmode in ioctl */
  261. 00281 #define EWOULDBLOCK   (_SIGN 54)
  262. 00282 #define EBADDEST      (_SIGN 55)  /* not a valid destination address */
  263. 00283 #define EDSTNOTRCH    (_SIGN 56)  /* destination not reachable */
  264. 00284 #define EISCONN       (_SIGN 57)  /* all ready connected */
  265. 00285 #define EADDRINUSE    (_SIGN 58)  /* address in use */
  266. 00286 #define ECONNREFUSED  (_SIGN 59)  /* connection refused */
  267. 00287 #define ECONNRESET    (_SIGN 60)  /* connection reset */
  268. 00288 #define ETIMEDOUT     (_SIGN 61)  /* connection timed out */
  269. 00289 #define EURG          (_SIGN 62)  /* urgent data present */
  270. 00290 #define ENOURG        (_SIGN 63)  /* no urgent data present */
  271. 00291 #define ENOTCONN      (_SIGN 64)  /* no connection (yet or anymore) */
  272. 00292 #define ESHUTDOWN     (_SIGN 65)  /* a write call to a shutdown connection */
  273. 00293 #define ENOCONN       (_SIGN 66)  /* no such connection */
  274. 00294
  275. 00295 /* The following are not POSIX errors, but they can still happen. */
  276. 00296 #define ELOCKED      (_SIGN 101)  /* can't send message */
  277. 00297 #define EBADCALL     (_SIGN 102)  /* error on send/receive */
  278. 00298
  279. 00299 /* The following error codes are generated by the kernel itself. */
  280. 00300 #ifdef _SYSTEM
  281. 00301 #define E_BAD_DEST     -1001    /* destination address illegal */
  282. 00302 #define E_BAD_SRC      -1002    /* source address illegal */
  283. 00303 #define E_TRY_AGAIN    -1003    /* can't send-- tables full */
  284. 00304 #define E_OVERRUN      -1004    /* interrupt for task that is not waiting */
  285. 00305 #define E_BAD_BUF      -1005    /* message buf outside caller's addr space */
  286. 00306 #define E_TASK         -1006    /* can't send to task */
  287. 00307 #define E_NO_MESSAGE   -1007    /* RECEIVE failed: no message present */
  288. 00308 #define E_NO_PERM      -1008    /* ordinary users can't send to tasks */
  289. 00309 #define E_BAD_FCN      -1009    /* only valid fcns are SEND, RECEIVE, BOTH */
  290. 00310 #define E_BAD_ADDR     -1010    /* bad address given to utility routine */
  291. 00311 #define E_BAD_PROC     -1011    /* bad proc number given to utility */
  292. 00312 #endif /* _SYSTEM */
  293. 00313
  294. 00314 #endif /* _ERRNO_H */
  295. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  296. include/unistd.h    
  297. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  298. 00400 /* The <unistd.h> header contains a few miscellaneous manifest constants. */
  299. 00401
  300. 00402 #ifndef _UNISTD_H
  301. 00403 #define _UNISTD_H
  302. 00404
  303. 00405 /* POSIX requires size_t and ssize_t in <unistd.h> and elsewhere. */
  304. 00406 #ifndef _SIZE_T
  305. 00407 #define _SIZE_T
  306. 00408 typedef unsigned int size_t;
  307. 00409 #endif
  308. 00410
  309. 00411 #ifndef _SSIZE_T
  310. 00412 #define _SSIZE_T
  311. 00413 typedef int ssize_t;
  312. 00414 #endif
  313. .Ep 6 include/unistd.h
  314. 00415
  315. 00416 /* Values used by access().  POSIX Table 2-8. */
  316. 00417 #define F_OK               0    /* test if file exists */
  317. 00418 #define X_OK               1    /* test if file is executable */
  318. 00419 #define W_OK               2    /* test if file is writable */
  319. 00420 #define R_OK               4    /* test if file is readable */
  320. 00421
  321. 00422 /* Values used for whence in lseek(fd, offset, whence).  POSIX Table 2-9. */
  322. 00423 #define SEEK_SET           0    /* offset is absolute  */
  323. 00424 #define SEEK_CUR           1    /* offset is relative to current position */
  324. 00425 #define SEEK_END           2    /* offset is relative to end of file */
  325. 00426
  326. 00427 /* This value is required by POSIX Table 2-10. */
  327. 00428 #define _POSIX_VERSION 199009L  /* which standard is being conformed to */
  328. 00429
  329. 00430 /* These three definitions are required by POSIX Sec. 8.2.1.2. */
  330. 00431 #define STDIN_FILENO       0    /* file descriptor for stdin */
  331. 00432 #define STDOUT_FILENO      1    /* file descriptor for stdout */
  332. 00433 #define STDERR_FILENO      2    /* file descriptor for stderr */
  333. 00434
  334. 00435 #ifdef _MINIX
  335. 00436 /* How to exit the system. */
  336. 00437 #define RBT_HALT           0
  337. 00438 #define RBT_REBOOT         1
  338. 00439 #define RBT_PANIC          2    /* for servers */
  339. 00440 #define RBT_MONITOR        3    /* let the monitor do this */
  340. 00441 #define RBT_RESET          4    /* hard reset the system */
  341. 00442 #endif
  342. 00443
  343. 00444 /* NULL must be defined in <unistd.h> according to POSIX Sec. 2.7.1. */
  344. 00445 #define NULL    ((void *)0)
  345. 00446
  346. 00447 /* The following relate to configurable system variables. POSIX Table 4-2. */
  347. 00448 #define _SC_ARG_MAX             1
  348. 00449 #define _SC_CHILD_MAX           2
  349. 00450 #define _SC_CLOCKS_PER_SEC      3
  350. 00451 #define _SC_CLK_TCK             3
  351. 00452 #define _SC_NGROUPS_MAX         4
  352. 00453 #define _SC_OPEN_MAX            5
  353. 00454 #define _SC_JOB_CONTROL         6
  354. 00455 #define _SC_SAVED_IDS           7
  355. 00456 #define _SC_VERSION             8
  356. 00457 #define _SC_STREAM_MAX          9
  357. 00458 #define _SC_TZNAME_MAX         10
  358. 00459
  359. 00460 /* The following relate to configurable pathname variables. POSIX Table 5-2. */
  360. 00461 #define _PC_LINK_MAX            1       /* link count */
  361. 00462 #define _PC_MAX_CANON           2       /* size of the canonical input queue */
  362. 00463 #define _PC_MAX_INPUT           3       /* type-ahead buffer size */
  363. 00464 #define _PC_NAME_MAX            4       /* file name size */
  364. 00465 #define _PC_PATH_MAX            5       /* pathname size */
  365. 00466 #define _PC_PIPE_BUF            6       /* pipe size */
  366. 00467 #define _PC_NO_TRUNC            7       /* treatment of long name components */
  367. 00468 #define _PC_VDISABLE            8       /* tty disable */
  368. 00469 #define _PC_CHOWN_RESTRICTED    9       /* chown restricted or not */
  369. 00470
  370. 00471 /* POSIX defines several options that may be implemented or not, at the
  371. 00472  * implementer's whim.  This implementer has made the following choices:
  372. 00473  *
  373. 00474  * _POSIX_JOB_CONTROL       not defined:        no job control
  374. .Op 7 include/unistd.h
  375. 00475  * _POSIX_SAVED_IDS         not defined:        no saved uid/gid
  376. 00476  * _POSIX_NO_TRUNC          defined as -1:      long path names are truncated
  377. 00477  * _POSIX_CHOWN_RESTRICTED  defined:            you can't give away files
  378. 00478  * _POSIX_VDISABLE          defined:            tty functions can be disabled
  379. 00479  */
  380. 00480 #define _POSIX_NO_TRUNC       (-1)
  381. 00481 #define _POSIX_CHOWN_RESTRICTED  1
  382. 00482
  383. 00483 /* Function Prototypes. */
  384. 00484 #ifndef _ANSI_H
  385. 00485 #include <ansi.h>
  386. 00486 #endif
  387. 00487
  388. 00488 _PROTOTYPE( void _exit, (int _status)                                   );
  389. 00489 _PROTOTYPE( int access, (const char *_path, int _amode)                 );
  390. 00490 _PROTOTYPE( unsigned int alarm, (unsigned int _seconds)                 );
  391. 00491 _PROTOTYPE( int chdir, (const char *_path)                              );
  392. 00492 _PROTOTYPE( int chown, (const char *_path, Uid_t _owner, Gid_t _group)  );
  393. 00493 _PROTOTYPE( int close, (int _fd)                                        );
  394. 00494 _PROTOTYPE( char *ctermid, (char *_s)                                   );
  395. 00495 _PROTOTYPE( char *cuserid, (char *_s)                                   );
  396. 00496 _PROTOTYPE( int dup, (int _fd)                                          );
  397. 00497 _PROTOTYPE( int dup2, (int _fd, int _fd2)                               );
  398. 00498 _PROTOTYPE( int execl, (const char *_path, const char *_arg, ...)       );
  399. 00499 _PROTOTYPE( int execle, (const char *_path, const char *_arg, ...)      );
  400. 00500 _PROTOTYPE( int execlp, (const char *_file, const char *arg, ...)       );
  401. 00501 _PROTOTYPE( int execv, (const char *_path, char *const _argv[])         );
  402. 00502 _PROTOTYPE( int execve, (const char *_path, char *const _argv[], 
  403. 00503                                                 char *const _envp[])    );
  404. 00504 _PROTOTYPE( int execvp, (const char *_file, char *const _argv[])        );
  405. 00505 _PROTOTYPE( pid_t fork, (void)                                          );
  406. 00506 _PROTOTYPE( long fpathconf, (int _fd, int _name)                        );
  407. 00507 _PROTOTYPE( char *getcwd, (char *_buf, size_t _size)                    );
  408. 00508 _PROTOTYPE( gid_t getegid, (void)                                       );
  409. 00509 _PROTOTYPE( uid_t geteuid, (void)                                       );
  410. 00510 _PROTOTYPE( gid_t getgid, (void)                                        );
  411. 00511 _PROTOTYPE( int getgroups, (int _gidsetsize, gid_t _grouplist[])        );
  412. 00512 _PROTOTYPE( char *getlogin, (void)                                      );
  413. 00513 _PROTOTYPE( pid_t getpgrp, (void)                                       );
  414. 00514 _PROTOTYPE( pid_t getpid, (void)                                        );
  415. 00515 _PROTOTYPE( pid_t getppid, (void)                                       );
  416. 00516 _PROTOTYPE( uid_t getuid, (void)                                        );
  417. 00517 _PROTOTYPE( int isatty, (int _fd)                                       );
  418. 00518 _PROTOTYPE( int link, (const char *_existing, const char *_new)         );
  419. 00519 _PROTOTYPE( off_t lseek, (int _fd, off_t _offset, int _whence)          );
  420. 00520 _PROTOTYPE( long pathconf, (const char *_path, int _name)               );
  421. 00521 _PROTOTYPE( int pause, (void)                                           );
  422. 00522 _PROTOTYPE( int pipe, (int _fildes[2])                                  );
  423. 00523 _PROTOTYPE( ssize_t read, (int _fd, void *_buf, size_t _n)              );
  424. 00524 _PROTOTYPE( int rmdir, (const char *_path)                              );
  425. 00525 _PROTOTYPE( int setgid, (Gid_t _gid)                                    );
  426. 00526 _PROTOTYPE( int setpgid, (pid_t _pid, pid_t _pgid)                      );
  427. 00527 _PROTOTYPE( pid_t setsid, (void)                                        );
  428. 00528 _PROTOTYPE( int setuid, (Uid_t _uid)                                    );
  429. 00529 _PROTOTYPE( unsigned int sleep, (unsigned int _seconds)                 );
  430. 00530 _PROTOTYPE( long sysconf, (int _name)                                   );
  431. 00531 _PROTOTYPE( pid_t tcgetpgrp, (int _fd)                                  );
  432. 00532 _PROTOTYPE( int tcsetpgrp, (int _fd, pid_t _pgrp_id)                    );
  433. 00533 _PROTOTYPE( char *ttyname, (int _fd)                                    );
  434. 00534 _PROTOTYPE( int unlink, (const char *_path)                             );
  435. .Ep 8 include/unistd.h
  436. 00535 _PROTOTYPE( ssize_t write, (int _fd, const void *_buf, size_t _n)       );
  437. 00536
  438. 00537 #ifdef _MINIX
  439. 00538 _PROTOTYPE( int brk, (char *_addr)                                      );
  440. 00539 _PROTOTYPE( int chroot, (const char *_name)                             );
  441. 00540 _PROTOTYPE( int mknod, (const char *_name, Mode_t _mode, Dev_t _addr)   );
  442. 00541 _PROTOTYPE( int mknod4, (const char *_name, Mode_t _mode, Dev_t _addr,
  443. 00542             long _size)                                                 );
  444. 00543 _PROTOTYPE( char *mktemp, (char *_template)                             );
  445. 00544 _PROTOTYPE( int mount, (char *_spec, char *_name, int _flag)            );
  446. 00545 _PROTOTYPE( long ptrace, (int _req, pid_t _pid, long _addr, long _data) );
  447. 00546 _PROTOTYPE( char *sbrk, (int _incr)                                     );
  448. 00547 _PROTOTYPE( int sync, (void)                                            );
  449. 00548 _PROTOTYPE( int umount, (const char *_name)                             );
  450. 00549 _PROTOTYPE( int reboot, (int _how, ...)                                 );
  451. 00550 _PROTOTYPE( int gethostname, (char *_hostname, size_t _len)             );
  452. 00551 _PROTOTYPE( int getdomainname, (char *_domain, size_t _len)             );
  453. 00552 _PROTOTYPE( int ttyslot, (void)                                         );
  454. 00553 _PROTOTYPE( int fttyslot, (int _fd)                                     );
  455. 00554 _PROTOTYPE( char *crypt, (const char *_key, const char *_salt)          );
  456. 00555 #endif
  457. 00556
  458. 00557 #endif /* _UNISTD_H */
  459. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  460. include/string.h    
  461. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  462. 00600 /* The <string.h> header contains prototypes for the string handling 
  463. 00601  * functions.
  464. 00602  */
  465. 00603
  466. 00604 #ifndef _STRING_H
  467. 00605 #define _STRING_H
  468. 00606
  469. 00607 #define NULL    ((void *)0)
  470. 00608
  471. 00609 #ifndef _SIZE_T
  472. 00610 #define _SIZE_T
  473. 00611 typedef unsigned int size_t;    /* type returned by sizeof */
  474. 00612 #endif /*_SIZE_T */
  475. 00613
  476. 00614 /* Function Prototypes. */
  477. 00615 #ifndef _ANSI_H
  478. 00616 #include <ansi.h>
  479. 00617 #endif
  480. 00618
  481. 00619 _PROTOTYPE( void *memchr, (const void *_s, int _c, size_t _n)           );
  482. 00620 _PROTOTYPE( int memcmp, (const void *_s1, const void *_s2, size_t _n)   );
  483. 00621 _PROTOTYPE( void *memcpy, (void *_s1, const void *_s2, size_t _n)       );
  484. 00622 _PROTOTYPE( void *memmove, (void *_s1, const void *_s2, size_t _n)      );
  485. 00623 _PROTOTYPE( void *memset, (void *_s, int _c, size_t _n)                 );
  486. 00624 _PROTOTYPE( char *strcat, (char *_s1, const char *_s2)                  );
  487. 00625 _PROTOTYPE( char *strchr, (const char *_s, int _c)                      );
  488. 00626 _PROTOTYPE( int strncmp, (const char *_s1, const char *_s2, size_t _n)  );
  489. 00627 _PROTOTYPE( int strcmp, (const char *_s1, const char *_s2)              );
  490. 00628 _PROTOTYPE( int strcoll, (const char *_s1, const char *_s2)             );
  491. 00629 _PROTOTYPE( char *strcpy, (char *_s1, const char *_s2)                  );
  492. .Op 9 include/string.h
  493. 00630 _PROTOTYPE( size_t strcspn, (const char *_s1, const char *_s2)          );
  494. 00631 _PROTOTYPE( char *strerror, (int _errnum)                               );
  495. 00632 _PROTOTYPE( size_t strlen, (const char *_s)                             );
  496. 00633 _PROTOTYPE( char *strncat, (char *_s1, const char *_s2, size_t _n)      );
  497. 00634 _PROTOTYPE( char *strncpy, (char *_s1, const char *_s2, size_t _n)      );
  498. 00635 _PROTOTYPE( char *strpbrk, (const char *_s1, const char *_s2)           );
  499. 00636 _PROTOTYPE( char *strrchr, (const char *_s, int _c)                     );
  500. 00637 _PROTOTYPE( size_t strspn, (const char *_s1, const char *_s2)           );
  501. 00638 _PROTOTYPE( char *strstr, (const char *_s1, const char *_s2)            );
  502. 00639 _PROTOTYPE( char *strtok, (char *_s1, const char *_s2)                  );
  503. 00640 _PROTOTYPE( size_t strxfrm, (char *_s1, const char *_s2, size_t _n)     );
  504. 00641
  505. 00642 #ifdef _MINIX
  506. 00643 /* For backward compatibility. */
  507. 00644 _PROTOTYPE( char *index, (const char *_s, int _charwanted)              );
  508. 00645 _PROTOTYPE( char *rindex, (const char *_s, int _charwanted)             );
  509. 00646 _PROTOTYPE( void bcopy, (const void *_src, void *_dst, size_t _length)  );
  510. 00647 _PROTOTYPE( int bcmp, (const void *_s1, const void *_s2, size_t _length));
  511. 00648 _PROTOTYPE( void bzero, (void *_dst, size_t _length)                    );
  512. 00649 _PROTOTYPE( void *memccpy, (char *_dst, const char *_src, int _ucharstop,
  513. 00650                                                     size_t _size)       );
  514. 00651 /* BSD functions */
  515. 00652 _PROTOTYPE( int strcasecmp, (const char *_s1, const char *_s2)          );
  516. 00653 #endif
  517. 00654
  518. 00655 #endif /* _STRING_H */
  519. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  520. include/signal.h    
  521. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  522. 00700 /* The <signal.h> header defines all the ANSI and POSIX signals.
  523. 00701  * MINIX supports all the signals required by POSIX. They are defined below.
  524. 00702  * Some additional signals are also supported.
  525. 00703  */
  526. 00704
  527. 00705 #ifndef _SIGNAL_H
  528. 00706 #define _SIGNAL_H
  529. 00707
  530. 00708 #ifndef _ANSI_H
  531. 00709 #include <ansi.h>
  532. 00710 #endif
  533. 00711
  534. 00712 /* Here are types that are closely associated with signal handling. */
  535. 00713 typedef int sig_atomic_t;
  536. 00714
  537. 00715 #ifdef _POSIX_SOURCE
  538. 00716 #ifndef _SIGSET_T
  539. 00717 #define _SIGSET_T
  540. 00718 typedef unsigned long sigset_t;
  541. 00719 #endif
  542. 00720 #endif
  543. 00721
  544. 00722 #define _NSIG             16    /* number of signals used */
  545. 00723
  546. 00724 #define SIGHUP             1    /* hangup */
  547. .Ep 10 include/signal.h
  548. 00725 #define SIGINT             2    /* interrupt (DEL) */
  549. 00726 #define SIGQUIT            3    /* quit (ASCII FS) */
  550. 00727 #define SIGILL             4    /* illegal instruction */
  551. 00728 #define SIGTRAP            5    /* trace trap (not reset when caught) */
  552. 00729 #define SIGABRT            6    /* IOT instruction */
  553. 00730 #define SIGIOT             6    /* SIGABRT for people who speak PDP-11 */
  554. 00731 #define SIGUNUSED          7    /* spare code */
  555. 00732 #define SIGFPE             8    /* floating point exception */
  556. 00733 #define SIGKILL            9    /* kill (cannot be caught or ignored) */
  557. 00734 #define SIGUSR1           10    /* user defined signal # 1 */
  558. 00735 #define SIGSEGV           11    /* segmentation violation */
  559. 00736 #define SIGUSR2           12    /* user defined signal # 2 */
  560. 00737 #define SIGPIPE           13    /* write on a pipe with no one to read it */
  561. 00738 #define SIGALRM           14    /* alarm clock */
  562. 00739 #define SIGTERM           15    /* software termination signal from kill */
  563. 00740
  564. 00741 #define SIGEMT             7    /* obsolete */
  565. 00742 #define SIGBUS            10    /* obsolete */
  566. 00743
  567. 00744 /* POSIX requires the following signals to be defined, even if they are
  568. 00745  * not supported.  Here are the definitions, but they are not supported.
  569. 00746  */
  570. 00747 #define SIGCHLD           17    /* child process terminated or stopped */
  571. 00748 #define SIGCONT           18    /* continue if stopped */
  572. 00749 #define SIGSTOP           19    /* stop signal */
  573. 00750 #define SIGTSTP           20    /* interactive stop signal */
  574. 00751 #define SIGTTIN           21    /* background process wants to read */
  575. 00752 #define SIGTTOU           22    /* background process wants to write */
  576. 00753
  577. 00754 /* The sighandler_t type is not allowed unless _POSIX_SOURCE is defined. */
  578. 00755 #ifdef _POSIX_SOURCE
  579. 00756 #define __sighandler_t sighandler_t
  580. 00757 #else
  581. 00758 typedef void (*__sighandler_t) (int);
  582. 00759 #endif
  583. 00760
  584. 00761 /* Macros used as function pointers. */
  585. 00762 #define SIG_ERR    ((__sighandler_t) -1)        /* error return */
  586. 00763 #define SIG_DFL    ((__sighandler_t)  0)        /* default signal handling */
  587. 00764 #define SIG_IGN    ((__sighandler_t)  1)        /* ignore signal */
  588. 00765 #define SIG_HOLD   ((__sighandler_t)  2)        /* block signal */
  589. 00766 #define SIG_CATCH  ((__sighandler_t)  3)        /* catch signal */
  590. 00767
  591. 00768 #ifdef _POSIX_SOURCE
  592. 00769 struct sigaction {
  593. 00770   __sighandler_t sa_handler;    /* SIG_DFL, SIG_IGN, or pointer to function */
  594. 00771   sigset_t sa_mask;             /* signals to be blocked during handler */
  595. 00772   int sa_flags;                 /* special flags */
  596. 00773 };
  597. 00774
  598. 00775 /* Fields for sa_flags. */
  599. 00776 #define SA_ONSTACK   0x0001     /* deliver signal on alternate stack */
  600. 00777 #define SA_RESETHAND 0x0002     /* reset signal handler when signal caught */
  601. 00778 #define SA_NODEFER   0x0004     /* don't block signal while catching it */
  602. 00779 #define SA_RESTART   0x0008     /* automatic system call restart */
  603. 00780 #define SA_SIGINFO   0x0010     /* extended signal handling */
  604. 00781 #define SA_NOCLDWAIT 0x0020     /* don't create zombies */
  605. 00782 #define SA_NOCLDSTOP 0x0040     /* don't receive SIGCHLD when child stops */
  606. 00783
  607. 00784 /* POSIX requires these values for use with sigprocmask(2). */
  608. .Op 11 include/signal.h
  609. 00785 #define SIG_BLOCK          0    /* for blocking signals */
  610. 00786 #define SIG_UNBLOCK        1    /* for unblocking signals */
  611. 00787 #define SIG_SETMASK        2    /* for setting the signal mask */
  612. 00788 #define SIG_INQUIRE        4    /* for internal use only */
  613. 00789 #endif  /* _POSIX_SOURCE */
  614. 00790
  615. 00791 /* POSIX and ANSI function prototypes. */
  616. 00792 _PROTOTYPE( int raise, (int _sig)                                       );
  617. 00793 _PROTOTYPE( __sighandler_t signal, (int _sig, __sighandler_t _func)     );
  618. 00794
  619. 00795 #ifdef _POSIX_SOURCE
  620. 00796 _PROTOTYPE( int kill, (pid_t _pid, int _sig)                            );
  621. 00797 _PROTOTYPE( int sigaction,
  622. 00798     (int _sig, const struct sigaction *_act, struct sigaction *_oact)   );
  623. 00799 _PROTOTYPE( int sigaddset, (sigset_t *_set, int _sig)                   );
  624. 00800 _PROTOTYPE( int sigdelset, (sigset_t *_set, int _sig)                   );
  625. 00801 _PROTOTYPE( int sigemptyset, (sigset_t *_set)                           );
  626. 00802 _PROTOTYPE( int sigfillset, (sigset_t *_set)                            );
  627. 00803 _PROTOTYPE( int sigismember, (sigset_t *_set, int _sig)                 );
  628. 00804 _PROTOTYPE( int sigpending, (sigset_t *_set)                            );
  629. 00805 _PROTOTYPE( int sigprocmask,
  630. 00806             (int _how, const sigset_t *_set, sigset_t *_oset)           );
  631. 00807 _PROTOTYPE( int sigsuspend, (const sigset_t *_sigmask)                  );
  632. 00808 #endif
  633. 00809
  634. 00810 #endif /* _SIGNAL_H */
  635. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  636. include/fcntl.h    
  637. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  638. 00900 /* The <fcntl.h> header is needed by the open() and fcntl() system calls,
  639. 00901  * which  have a variety of parameters and flags.  They are described here.  
  640. 00902  * The formats of the calls to each of these are:
  641. 00903  *
  642. 00904  *      open(path, oflag [,mode])       open a file
  643. 00905  *      fcntl(fd, cmd [,arg])           get or set file attributes
  644. 00906  * 
  645. 00907  */
  646. 00908
  647. 00909 #ifndef _FCNTL_H
  648. 00910 #define _FCNTL_H
  649. 00911
  650. 00912 /* These values are used for cmd in fcntl().  POSIX Table 6-1.  */
  651. 00913 #define F_DUPFD            0    /* duplicate file descriptor */
  652. 00914 #define F_GETFD            1    /* get file descriptor flags */
  653. 00915 #define F_SETFD            2    /* set file descriptor flags */
  654. 00916 #define F_GETFL            3    /* get file status flags */
  655. 00917 #define F_SETFL            4    /* set file status flags */
  656. 00918 #define F_GETLK            5    /* get record locking information */
  657. 00919 #define F_SETLK            6    /* set record locking information */
  658. 00920 #define F_SETLKW           7    /* set record locking info; wait if blocked */
  659. 00921
  660. 00922 /* File descriptor flags used for fcntl().  POSIX Table 6-2. */
  661. 00923 #define FD_CLOEXEC         1    /* close on exec flag for third arg of fcntl */
  662. 00924
  663. .Ep 12 include/fcntl.h
  664. 00925 /* L_type values for record locking with fcntl().  POSIX Table 6-3. */
  665. 00926 #define F_RDLCK            1    /* shared or read lock */
  666. 00927 #define F_WRLCK            2    /* exclusive or write lock */
  667. 00928 #define F_UNLCK            3    /* unlock */
  668. 00929
  669. 00930 /* Oflag values for open().  POSIX Table 6-4. */
  670. 00931 #define O_CREAT        00100    /* creat file if it doesn't exist */
  671. 00932 #define O_EXCL         00200    /* exclusive use flag */
  672. 00933 #define O_NOCTTY       00400    /* do not assign a controlling terminal */
  673. 00934 #define O_TRUNC        01000    /* truncate flag */
  674. 00935
  675. 00936 /* File status flags for open() and fcntl().  POSIX Table 6-5. */
  676. 00937 #define O_APPEND       02000    /* set append mode */
  677. 00938 #define O_NONBLOCK     04000    /* no delay */
  678. 00939
  679. 00940 /* File access modes for open() and fcntl().  POSIX Table 6-6. */
  680. 00941 #define O_RDONLY           0    /* open(name, O_RDONLY) opens read only */
  681. 00942 #define O_WRONLY           1    /* open(name, O_WRONLY) opens write only */
  682. 00943 #define O_RDWR             2    /* open(name, O_RDWR) opens read/write */
  683. 00944
  684. 00945 /* Mask for use with file access modes.  POSIX Table 6-7. */
  685. 00946 #define O_ACCMODE         03    /* mask for file access modes */
  686. 00947
  687. 00948 /* Struct used for locking.  POSIX Table 6-8. */
  688. 00949 struct flock {
  689. 00950   short l_type;                 /* type: F_RDLCK, F_WRLCK, or F_UNLCK */
  690. 00951   short l_whence;               /* flag for starting offset */
  691. 00952   off_t l_start;                /* relative offset in bytes */
  692. 00953   off_t l_len;                  /* size; if 0, then until EOF */
  693. 00954   pid_t l_pid;                  /* process id of the locks' owner */
  694. 00955 };
  695. 00956
  696. 00957
  697. 00958 /* Function Prototypes. */
  698. 00959 #ifndef _ANSI_H
  699. 00960 #include <ansi.h>
  700. 00961 #endif
  701. 00962
  702. 00963 _PROTOTYPE( int creat, (const char *_path, Mode_t _mode)                );
  703. 00964 _PROTOTYPE( int fcntl, (int _filedes, int _cmd, ...)                    );
  704. 00965 _PROTOTYPE( int open,  (const char *_path, int _oflag, ...)             );
  705. 00966
  706. 00967 #endif /* _FCNTL_H */
  707. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  708. include/stdlib.h    
  709. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  710. 01000 /* The <stdlib.h> header defines certain common macros, types, and functions.*/
  711. 01001
  712. 01002 #ifndef _STDLIB_H
  713. 01003 #define _STDLIB_H
  714. 01004
  715. 01005 /* The macros are NULL, EXIT_FAILURE, EXIT_SUCCESS, RAND_MAX, and MB_CUR_MAX.*/
  716. 01006 #define NULL    ((void *)0)
  717. 01007
  718. 01008 #define EXIT_FAILURE       1    /* standard error return using exit() */
  719. 01009 #define EXIT_SUCCESS       0    /* successful return using exit() */
  720. .Op 13 include/stdlib.h
  721. 01010 #define RAND_MAX       32767    /* largest value generated by rand() */
  722. 01011 #define MB_CUR_MAX         1    /* max value of multibyte character in MINIX */
  723. 01012
  724. 01013 typedef struct { int quot, rem; } div_t;
  725. 01014 typedef struct { long quot, rem; } ldiv_t;
  726. 01015
  727. 01016 /* The types are size_t, wchar_t, div_t, and ldiv_t. */
  728. 01017 #ifndef _SIZE_T
  729. 01018 #define _SIZE_T
  730. 01019 typedef unsigned int size_t;    /* type returned by sizeof */
  731. 01020 #endif
  732. 01021
  733. 01022 #ifndef _WCHAR_T
  734. 01023 #define _WCHAR_T
  735. 01024 typedef char wchar_t;           /* type expanded character set */
  736. 01025 #endif
  737. 01026
  738. 01027 /* Function Prototypes. */
  739. 01028 #ifndef _ANSI_H
  740. 01029 #include <ansi.h>
  741. 01030 #endif
  742. 01031
  743. 01032 _PROTOTYPE( void abort, (void)                                          );
  744. 01033 _PROTOTYPE( int abs, (int _j)                                           );
  745. 01034 _PROTOTYPE( int atexit, (void (*_func)(void))                           );
  746. 01035 _PROTOTYPE( double atof, (const char *_nptr)                            );
  747. 01036 _PROTOTYPE( int atoi, (const char *_nptr)                               );
  748. 01037 _PROTOTYPE( long atol, (const char *_nptr)                              );
  749. 01038 _PROTOTYPE( void *calloc, (size_t _nmemb, size_t _size)                 );
  750. 01039 _PROTOTYPE( div_t div, (int _numer, int _denom)                         );
  751. 01040 _PROTOTYPE( void exit, (int _status)                                    );
  752. 01041 _PROTOTYPE( void free, (void *_ptr)                                     );
  753. 01042 _PROTOTYPE( char *getenv, (const char *_name)                           );
  754. 01043 _PROTOTYPE( long labs, (long _j)                                        );
  755. 01044 _PROTOTYPE( ldiv_t ldiv, (long _numer, long _denom)                     );
  756. 01045 _PROTOTYPE( void *malloc, (size_t _size)                                );
  757. 01046 _PROTOTYPE( int mblen, (const char *_s, size_t _n)                      );
  758. 01047 _PROTOTYPE( size_t mbstowcs, (wchar_t *_pwcs, const char *_s, size_t _n));
  759. 01048 _PROTOTYPE( int mbtowc, (wchar_t *_pwc, const char *_s, size_t _n)      );
  760. 01049 _PROTOTYPE( int rand, (void)                                            );
  761. 01050 _PROTOTYPE( void *realloc, (void *_ptr, size_t _size)                   );
  762. 01051 _PROTOTYPE( void srand, (unsigned int _seed)                            );
  763. 01052 _PROTOTYPE( double strtod, (const char *_nptr, char **_endptr)          );
  764. 01053 _PROTOTYPE( long strtol, (const char *_nptr, char **_endptr, int _base) );
  765. 01054 _PROTOTYPE( int system, (const char *_string)                           );
  766. 01055 _PROTOTYPE( size_t wcstombs, (char *_s, const wchar_t *_pwcs, size_t _n));
  767. 01056 _PROTOTYPE( int wctomb, (char *_s, wchar_t _wchar)                      );
  768. 01057 _PROTOTYPE( void *bsearch, (const void *_key, const void *_base, 
  769. 01058         size_t _nmemb, size_t _size, 
  770. 01059         int (*compar) (const void *, const void *))                     );
  771. 01060 _PROTOTYPE( void qsort, (void *_base, size_t _nmemb, size_t _size,
  772. 01061         int (*compar) (const void *, const void *))                     );
  773. 01062 _PROTOTYPE( unsigned long int strtoul,
  774. 01063                         (const char *_nptr, char **_endptr, int _base)  );
  775. 01064
  776. 01065 #ifdef _MINIX
  777. 01066 _PROTOTYPE( int putenv, (const char *_name)                             );
  778. 01067 _PROTOTYPE(int getopt, (int _argc, char **_argv, char *_opts));
  779. 01068 extern char *optarg;
  780. 01069 extern int optind, opterr, optopt;
  781. .Ep 14 include/stdlib.h
  782. 01070 #endif /* _MINIX */
  783. 01071
  784. 01072 #endif /* STDLIB_H */
  785. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  786. include/termios.h    
  787. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  788. 01100 /* The <termios.h> header is used for controlling tty modes. */
  789. 01101
  790. 01102 #ifndef _TERMIOS_H
  791. 01103 #define _TERMIOS_H
  792. 01104
  793. 01105 typedef unsigned short tcflag_t;
  794. 01106 typedef unsigned char cc_t;
  795. 01107 typedef unsigned int speed_t;
  796. 01108
  797. 01109 #define NCCS            20      /* size of cc_c array, some extra space
  798. 01110                                  * for extensions. */
  799. 01111
  800. 01112 /* Primary terminal control structure. POSIX Table 7-1. */
  801. 01113 struct termios {
  802. 01114   tcflag_t c_iflag;             /* input modes */
  803. 01115   tcflag_t c_oflag;             /* output modes */
  804. 01116   tcflag_t c_cflag;             /* control modes */
  805. 01117   tcflag_t c_lflag;             /* local modes */
  806. 01118   speed_t  c_ispeed;            /* input speed */
  807. 01119   speed_t  c_ospeed;            /* output speed */
  808. 01120   cc_t c_cc[NCCS];              /* control characters */
  809. 01121 };
  810. 01122
  811. 01123 /* Values for termios c_iflag bit map.  POSIX Table 7-2. */
  812. 01124 #define BRKINT          0x0001  /* signal interrupt on break */
  813. 01125 #define ICRNL           0x0002  /* map CR to NL on input */
  814. 01126 #define IGNBRK          0x0004  /* ignore break */
  815. 01127 #define IGNCR           0x0008  /* ignore CR */
  816. 01128 #define IGNPAR          0x0010  /* ignore characters with parity errors */
  817. 01129 #define INLCR           0x0020  /* map NL to CR on input */
  818. 01130 #define INPCK           0x0040  /* enable input parity check */
  819. 01131 #define ISTRIP          0x0080  /* mask off 8th bit */
  820. 01132 #define IXOFF           0x0100  /* enable start/stop input control */
  821. 01133 #define IXON            0x0200  /* enable start/stop output control */
  822. 01134 #define PARMRK          0x0400  /* mark parity errors in the input queue */
  823. 01135
  824. 01136 /* Values for termios c_oflag bit map.  POSIX Sec. 7.1.2.3. */
  825. 01137 #define OPOST           0x0001  /* perform output processing */
  826. 01138
  827. 01139 /* Values for termios c_cflag bit map.  POSIX Table 7-3. */
  828. 01140 #define CLOCAL          0x0001  /* ignore modem status lines */
  829. 01141 #define CREAD           0x0002  /* enable receiver */
  830. 01142 #define CSIZE           0x000C  /* number of bits per character */
  831. 01143 #define         CS5     0x0000  /* if CSIZE is CS5, characters are 5 bits */
  832. 01144 #define         CS6     0x0004  /* if CSIZE is CS6, characters are 6 bits */
  833. 01145 #define         CS7     0x0008  /* if CSIZE is CS7, characters are 7 bits */
  834. 01146 #define         CS8     0x000C  /* if CSIZE is CS8, characters are 8 bits */
  835. 01147 #define CSTOPB          0x0010  /* send 2 stop bits if set, else 1 */
  836. 01148 #define HUPCL           0x0020  /* hang up on last close */
  837. 01149 #define PARENB          0x0040  /* enable parity on output */
  838. .Op 15 include/termios.h
  839. 01150 #define PARODD          0x0080  /* use odd parity if set, else even */
  840. 01151
  841. 01152 /* Values for termios c_lflag bit map.  POSIX Table 7-4. */
  842. 01153 #define ECHO            0x0001  /* enable echoing of input characters */
  843. 01154 #define ECHOE           0x0002  /* echo ERASE as backspace */
  844. 01155 #define ECHOK           0x0004  /* echo KILL */
  845. 01156 #define ECHONL          0x0008  /* echo NL */
  846. 01157 #define ICANON          0x0010  /* canonical input (erase and kill enabled) */
  847. 01158 #define IEXTEN          0x0020  /* enable extended functions */
  848. 01159 #define ISIG            0x0040  /* enable signals */
  849. 01160 #define NOFLSH          0x0080  /* disable flush after interrupt or quit */
  850. 01161 #define TOSTOP          0x0100  /* send SIGTTOU (job control, not implemented*/
  851. 01162
  852. 01163 /* Indices into c_cc array.  Default values in parentheses. POSIX Table 7-5. */
  853. 01164 #define VEOF               0    /* cc_c[VEOF] = EOF char (^D) */
  854. 01165 #define VEOL               1    /* cc_c[VEOL] = EOL char (undef) */
  855. 01166 #define VERASE             2    /* cc_c[VERASE] = ERASE char (^H) */
  856. 01167 #define VINTR              3    /* cc_c[VINTR] = INTR char (DEL) */
  857. 01168 #define VKILL              4    /* cc_c[VKILL] = KILL char (^U) */
  858. 01169 #define VMIN               5    /* cc_c[VMIN] = MIN value for timer */
  859. 01170 #define VQUIT              6    /* cc_c[VQUIT] = QUIT char (^) */
  860. 01171 #define VTIME              7    /* cc_c[VTIME] = TIME value for timer */
  861. 01172 #define VSUSP              8    /* cc_c[VSUSP] = SUSP (^Z, ignored) */
  862. 01173 #define VSTART             9    /* cc_c[VSTART] = START char (^S) */
  863. 01174 #define VSTOP             10    /* cc_c[VSTOP] = STOP char (^Q) */
  864. 01175
  865. 01176 #define _POSIX_VDISABLE   (cc_t)0xFF    /* You can't even generate this 
  866. 01177                                          * character with 'normal' keyboards.
  867. 01178                                          * But some language specific keyboards
  868. 01179                                          * can generate 0xFF. It seems that all
  869. 01180                                          * 256 are used, so cc_t should be a
  870. 01181                                          * short...
  871. 01182                                          */
  872. 01183
  873. 01184 /* Values for the baud rate settings.  POSIX Table 7-6. */
  874. 01185 #define B0              0x0000  /* hang up the line */
  875. 01186 #define B50             0x1000  /* 50 baud */
  876. 01187 #define B75             0x2000  /* 75 baud */
  877. 01188 #define B110            0x3000  /* 110 baud */
  878. 01189 #define B134            0x4000  /* 134.5 baud */
  879. 01190 #define B150            0x5000  /* 150 baud */
  880. 01191 #define B200            0x6000  /* 200 baud */
  881. 01192 #define B300            0x7000  /* 300 baud */
  882. 01193 #define B600            0x8000  /* 600 baud */
  883. 01194 #define B1200           0x9000  /* 1200 baud */
  884. 01195 #define B1800           0xA000  /* 1800 baud */
  885. 01196 #define B2400           0xB000  /* 2400 baud */
  886. 01197 #define B4800           0xC000  /* 4800 baud */
  887. 01198 #define B9600           0xD000  /* 9600 baud */
  888. 01199 #define B19200          0xE000  /* 19200 baud */
  889. 01200 #define B38400          0xF000  /* 38400 baud */
  890. 01201
  891. 01202 /* Optional actions for tcsetattr().  POSIX Sec. 7.2.1.2. */
  892. 01203 #define TCSANOW            1    /* changes take effect immediately */
  893. 01204 #define TCSADRAIN          2    /* changes take effect after output is done */
  894. 01205 #define TCSAFLUSH          3    /* wait for output to finish and flush input */
  895. 01206
  896. 01207 /* Queue_selector values for tcflush().  POSIX Sec. 7.2.2.2. */
  897. 01208 #define TCIFLUSH           1    /* flush accumulated input data */
  898. 01209 #define TCOFLUSH           2    /* flush accumulated output data */
  899. .Ep 16 include/termios.h
  900. 01210 #define TCIOFLUSH          3    /* flush accumulated input and output data */
  901. 01211
  902. 01212 /* Action values for tcflow().  POSIX Sec. 7.2.2.2. */
  903. 01213 #define TCOOFF             1    /* suspend output */
  904. 01214 #define TCOON              2    /* restart suspended output */
  905. 01215 #define TCIOFF             3    /* transmit a STOP character on the line */
  906. 01216 #define TCION              4    /* transmit a START character on the line */
  907. 01217
  908. 01218
  909. 01219 /* Function Prototypes. */
  910. 01220 #ifndef _ANSI_H
  911. 01221 #include <ansi.h>
  912. 01222 #endif
  913. 01223
  914. 01224 _PROTOTYPE( int tcsendbreak, (int _fildes, int _duration)                    );
  915. 01225 _PROTOTYPE( int tcdrain, (int _filedes)                                      );
  916. 01226 _PROTOTYPE( int tcflush, (int _filedes, int _queue_selector)                 );
  917. 01227 _PROTOTYPE( int tcflow, (int _filedes, int _action)                          );
  918. 01228 _PROTOTYPE( speed_t cfgetispeed, (const struct termios *_termios_p)          );
  919. 01229 _PROTOTYPE( speed_t cfgetospeed, (const struct termios *_termios_p)          );
  920. 01230 _PROTOTYPE( int cfsetispeed, (struct termios *_termios_p, speed_t _speed)    );
  921. 01231 _PROTOTYPE( int cfsetospeed, (struct termios *_termios_p, speed_t _speed)    );
  922. 01232 _PROTOTYPE( int tcgetattr, (int _filedes, struct termios *_termios_p)        );
  923. 01233 _PROTOTYPE( int tcsetattr, 
  924. 01234         (int _filedes, int _opt_actions, const struct termios *_termios_p)   );
  925. 01235
  926. 01236 #define cfgetispeed(termios_p)          ((termios_p)->c_ispeed)
  927. 01237 #define cfgetospeed(termios_p)          ((termios_p)->c_ospeed)
  928. 01238 #define cfsetispeed(termios_p, speed)   ((termios_p)->c_ispeed = (speed), 0)
  929. 01239 #define cfsetospeed(termios_p, speed)   ((termios_p)->c_ospeed = (speed), 0)
  930. 01240
  931. 01241 #ifdef _MINIX
  932. 01242 /* Here are the local extensions to the POSIX standard for Minix. Posix
  933. 01243  * conforming programs are not able to access these, and therefore they are
  934. 01244  * only defined when a Minix program is compiled.
  935. 01245  */
  936. 01246
  937. 01247 /* Extensions to the termios c_iflag bit map.  */
  938. 01248 #define IXANY           0x0800  /* allow any key to continue ouptut */
  939. 01249
  940. 01250 /* Extensions to the termios c_oflag bit map. They are only active iff
  941. 01251  * OPOST is enabled. */
  942. 01252 #define ONLCR           0x0002  /* Map NL to CR-NL on output */
  943. 01253 #define XTABS           0x0004  /* Expand tabs to spaces */
  944. 01254 #define ONOEOT          0x0008  /* discard EOT's (^D) on output) */
  945. 01255
  946. 01256 /* Extensions to the termios c_lflag bit map.  */
  947. 01257 #define LFLUSHO         0x0200  /* Flush output. */
  948. 01258
  949. 01259 /* Extensions to the c_cc array. */
  950. 01260 #define VREPRINT          11    /* cc_c[VREPRINT] (^R) */
  951. 01261 #define VLNEXT            12    /* cc_c[VLNEXT] (^V) */
  952. 01262 #define VDISCARD          13    /* cc_c[VDISCARD] (^O) */
  953. 01263
  954. 01264 /* Extensions to baud rate settings. */
  955. 01265 #define B57600          0x0100  /* 57600 baud */
  956. 01266 #define B115200         0x0200  /* 115200 baud */
  957. 01267
  958. 01268 /* These are the default settings used by the kernel and by 'stty sane' */
  959. 01269
  960. .Op 17 include/termios.h
  961. 01270 #define TCTRL_DEF       (CREAD | CS8 | HUPCL)
  962. 01271 #define TINPUT_DEF      (BRKINT | ICRNL | IXON | IXANY)
  963. 01272 #define TOUTPUT_DEF     (OPOST | ONLCR)
  964. 01273 #define TLOCAL_DEF      (ISIG | IEXTEN | ICANON | ECHO | ECHOE)
  965. 01274 #define TSPEED_DEF      B9600
  966. 01275
  967. 01276 #define TEOF_DEF        '4'    /* ^D */
  968. 01277 #define TEOL_DEF        _POSIX_VDISABLE
  969. 01278 #define TERASE_DEF      '10'   /* ^H */
  970. 01279 #define TINTR_DEF       '177'  /* ^? */
  971. 01280 #define TKILL_DEF       '25'   /* ^U */
  972. 01281 #define TMIN_DEF        1
  973. 01282 #define TQUIT_DEF       '34'   /* ^ */
  974. 01283 #define TSTART_DEF      '21'   /* ^Q */
  975. 01284 #define TSTOP_DEF       '23'   /* ^S */
  976. 01285 #define TSUSP_DEF       '32'   /* ^Z */
  977. 01286 #define TTIME_DEF       0
  978. 01287 #define TREPRINT_DEF    '22'   /* ^R */
  979. 01288 #define TLNEXT_DEF      '26'   /* ^V */
  980. 01289 #define TDISCARD_DEF    '17'   /* ^O */
  981. 01290
  982. 01291 /* Window size. This information is stored in the TTY driver but not used.
  983. 01292  * This can be used for screen based applications in a window environment. 
  984. 01293  * The ioctls TIOCGWINSZ and TIOCSWINSZ can be used to get and set this 
  985. 01294  * information.
  986. 01295  */
  987. 01296
  988. 01297 struct winsize
  989. 01298 {
  990. 01299         unsigned short  ws_row;         /* rows, in characters */
  991. 01300         unsigned short  ws_col;         /* columns, in characters */
  992. 01301         unsigned short  ws_xpixel;      /* horizontal size, pixels */
  993. 01302         unsigned short  ws_ypixel;      /* vertical size, pixels */
  994. 01303 };
  995. 01304 #endif /* _MINIX */
  996. 01305
  997. 01306 #endif /* _TERMIOS_H */
  998. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  999. include/a.out.h    
  1000. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1001. 01400 /* The <a.out> header file describes the format of executable files. */
  1002. 01401
  1003. 01402 #ifndef _AOUT_H
  1004. 01403 #define _AOUT_H
  1005. 01404
  1006. 01405 struct  exec {                  /* a.out header */
  1007. 01406   unsigned char a_magic[2];     /* magic number */
  1008. 01407   unsigned char a_flags;        /* flags, see below */
  1009. 01408   unsigned char a_cpu;          /* cpu id */
  1010. 01409   unsigned char a_hdrlen;       /* length of header */
  1011. 01410   unsigned char a_unused;       /* reserved for future use */
  1012. 01411   unsigned short a_version;     /* version stamp (not used at present) */
  1013. 01412   long          a_text;         /* size of text segement in bytes */
  1014. 01413   long          a_data;         /* size of data segment in bytes */
  1015. 01414   long          a_bss;          /* size of bss segment in bytes */
  1016. .Ep 18 include/a.out.h
  1017. 01415   long          a_entry;        /* entry point */
  1018. 01416   long          a_total;        /* total memory allocated */
  1019. 01417   long          a_syms;         /* size of symbol table */
  1020. 01418
  1021. 01419   /* SHORT FORM ENDS HERE */
  1022. 01420   long          a_trsize;       /* text relocation size */
  1023. 01421   long          a_drsize;       /* data relocation size */
  1024. 01422   long          a_tbase;        /* text relocation base */
  1025. 01423   long          a_dbase;        /* data relocation base */
  1026. 01424 };
  1027. 01425
  1028. 01426 #define A_MAGIC0      (unsigned char) 0x01
  1029. 01427 #define A_MAGIC1      (unsigned char) 0x03
  1030. 01428 #define BADMAG(X)     ((X).a_magic[0] != A_MAGIC0 ||(X).a_magic[1] != A_MAGIC1)
  1031. 01429
  1032. 01430 /* CPU Id of TARGET machine (byte order coded in low order two bits) */
  1033. 01431 #define A_NONE  0x00    /* unknown */
  1034. 01432 #define A_I8086 0x04    /* intel i8086/8088 */
  1035. 01433 #define A_M68K  0x0B    /* motorola m68000 */
  1036. 01434 #define A_NS16K 0x0C    /* national semiconductor 16032 */
  1037. 01435 #define A_I80386 0x10   /* intel i80386 */
  1038. 01436 #define A_SPARC 0x17    /* Sun SPARC */
  1039. 01437
  1040. 01438 #define A_BLR(cputype)  ((cputype&0x01)!=0) /* TRUE if bytes left-to-right */
  1041. 01439 #define A_WLR(cputype)  ((cputype&0x02)!=0) /* TRUE if words left-to-right */
  1042. 01440
  1043. 01441 /* Flags. */
  1044. 01442 #define A_UZP   0x01    /* unmapped zero page (pages) */
  1045. 01443 #define A_PAL   0x02    /* page aligned executable */
  1046. 01444 #define A_NSYM  0x04    /* new style symbol table */
  1047. 01445 #define A_EXEC  0x10    /* executable */
  1048. 01446 #define A_SEP   0x20    /* separate I/D */
  1049. 01447 #define A_PURE  0x40    /* pure text */         /* not used */
  1050. 01448 #define A_TOVLY 0x80    /* text overlay */      /* not used */
  1051. 01449
  1052. 01450 /* Offsets of various things. */
  1053. 01451 #define A_MINHDR        32
  1054. 01452 #define A_TEXTPOS(X)    ((long)(X).a_hdrlen)
  1055. 01453 #define A_DATAPOS(X)    (A_TEXTPOS(X) + (X).a_text)
  1056. 01454 #define A_HASRELS(X)    ((X).a_hdrlen > (unsigned char) A_MINHDR)
  1057. 01455 #define A_HASEXT(X)     ((X).a_hdrlen > (unsigned char) (A_MINHDR +  8))
  1058. 01456 #define A_HASLNS(X)     ((X).a_hdrlen > (unsigned char) (A_MINHDR + 16))
  1059. 01457 #define A_HASTOFF(X)    ((X).a_hdrlen > (unsigned char) (A_MINHDR + 24))
  1060. 01458 #define A_TRELPOS(X)    (A_DATAPOS(X) + (X).a_data)
  1061. 01459 #define A_DRELPOS(X)    (A_TRELPOS(X) + (X).a_trsize)
  1062. 01460 #define A_SYMPOS(X)     (A_TRELPOS(X) + (A_HASRELS(X) ? 
  1063. 01461                         ((X).a_trsize + (X).a_drsize) : 0))
  1064. 01462
  1065. 01463 struct reloc {
  1066. 01464   long r_vaddr;                 /* virtual address of reference */
  1067. 01465   unsigned short r_symndx;      /* internal segnum or extern symbol num */
  1068. 01466   unsigned short r_type;        /* relocation type */
  1069. 01467 };
  1070. 01468
  1071. 01469 /* r_tyep values: */
  1072. 01470 #define R_ABBS          0
  1073. 01471 #define R_RELLBYTE      2
  1074. 01472 #define R_PCRBYTE       3
  1075. 01473 #define R_RELWORD       4
  1076. 01474 #define R_PCRWORD       5
  1077. .Op 19 include/a.out.h
  1078. 01475 #define R_RELLONG       6
  1079. 01476 #define R_PCRLONG       7
  1080. 01477 #define R_REL3BYTE      8
  1081. 01478 #define R_KBRANCHE      9
  1082. 01479
  1083. 01480 /* r_symndx for internal segments */
  1084. 01481 #define S_ABS           ((unsigned short)-1)
  1085. 01482 #define S_TEXT          ((unsigned short)-2)
  1086. 01483 #define S_DATA          ((unsigned short)-3)
  1087. 01484 #define S_BSS           ((unsigned short)-4)
  1088. 01485
  1089. 01486 struct nlist {                  /* symbol table entry */
  1090. 01487   char n_name[8];               /* symbol name */
  1091. 01488   long n_value;                 /* value */
  1092. 01489   unsigned char n_sclass;       /* storage class */
  1093. 01490   unsigned char n_numaux;       /* number of auxiliary entries (not used) */
  1094. 01491   unsigned short n_type;        /* language base and derived type (not used) */
  1095. 01492 };
  1096. 01493
  1097. 01494 /* Low bits of storage class (section). */
  1098. 01495 #define N_SECT            07    /* section mask */
  1099. 01496 #define N_UNDF            00    /* undefined */
  1100. 01497 #define N_ABS             01    /* absolute */
  1101. 01498 #define N_TEXT            02    /* text */
  1102. 01499 #define N_DATA            03    /* data */
  1103. 01500 #define N_BSS             04    /* bss */
  1104. 01501 #define N_COMM            05    /* (common) */
  1105. 01502
  1106. 01503 /* High bits of storage class. */
  1107. 01504 #define N_CLASS         0370    /* storage class mask */
  1108. 01505 #define C_NULL
  1109. 01506 #define C_EXT           0020    /* external symbol */
  1110. 01507 #define C_STAT          0030    /* static */
  1111. 01508
  1112. 01509 /* Function prototypes. */
  1113. 01510 #ifndef _ANSI_H
  1114. 01511 #include <ansi.h>
  1115. 01512 #endif
  1116. 01513
  1117. 01514 _PROTOTYPE( int nlist, (char *_file, struct nlist *_nl)                 );
  1118. 01515
  1119. 01516 #endif /* _AOUT_H */
  1120. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1121. include/sys/types.h    
  1122. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1123. 01600 /* The <sys/types.h> header contains important data type definitions.
  1124. 01601  * It is considered good programming practice to use these definitions, 
  1125. 01602  * instead of the underlying base type.  By convention, all type names end 
  1126. 01603  * with _t.
  1127. 01604  */
  1128. 01605
  1129. 01606 #ifndef _TYPES_H
  1130. 01607 #define _TYPES_H
  1131. 01608
  1132. 01609 /* _ANSI is somehow used to determine whether or not the compiler is a
  1133. .Ep 20 include/sys/types.h
  1134. 01610  * 16 bit compiler
  1135. 01611  */
  1136. 01612 #ifndef _ANSI
  1137. 01613 #include <ansi.h>
  1138. 01614 #endif
  1139. 01615
  1140. 01616 /* The type size_t holds all results of the sizeof operator.  At first glance,
  1141. 01617  * it seems obvious that it should be an unsigned int, but this is not always 
  1142. 01618  * the case. For example, MINIX-ST (68000) has 32-bit pointers and 16-bit
  1143. 01619  * integers. When one asks for the size of a 70K struct or array, the result 
  1144. 01620  * requires 17 bits to express, so size_t must be a long type.  The type 
  1145. 01621  * ssize_t is the signed version of size_t.
  1146. 01622  */
  1147. 01623 #ifndef _SIZE_T
  1148. 01624 #define _SIZE_T
  1149. 01625 typedef unsigned int size_t;
  1150. 01626 #endif
  1151. 01627
  1152. 01628 #ifndef _SSIZE_T
  1153. 01629 #define _SSIZE_T
  1154. 01630 typedef int ssize_t;
  1155. 01631 #endif
  1156. 01632
  1157. 01633 #ifndef _TIME_T
  1158. 01634 #define _TIME_T
  1159. 01635 typedef long time_t;               /* time in sec since 1 Jan 1970 0000 GMT */
  1160. 01636 #endif
  1161. 01637
  1162. 01638 #ifndef _CLOCK_T
  1163. 01639 #define _CLOCK_T
  1164. 01640 typedef long clock_t;              /* unit for system accounting */
  1165. 01641 #endif
  1166. 01642
  1167. 01643 #ifndef _SIGSET_T
  1168. 01644 #define _SIGSET_T
  1169. 01645 typedef unsigned long sigset_t;
  1170. 01646 #endif
  1171. 01647
  1172. 01648 /* Types used in disk, inode, etc. data structures. */
  1173. 01649 typedef short          dev_t;      /* holds (major|minor) device pair */
  1174. 01650 typedef char           gid_t;      /* group id */
  1175. 01651 typedef unsigned short ino_t;      /* i-node number */
  1176. 01652 typedef unsigned short mode_t;     /* file type and permissions bits */
  1177. 01653 typedef char         nlink_t;      /* number of links to a file */
  1178. 01654 typedef unsigned long  off_t;      /* offset within a file */
  1179. 01655 typedef int            pid_t;      /* process id (must be signed) */
  1180. 01656 typedef short          uid_t;      /* user id */
  1181. 01657 typedef unsigned long zone_t;      /* zone number */
  1182. 01658 typedef unsigned long block_t;     /* block number */
  1183. 01659 typedef unsigned long  bit_t;      /* bit number in a bit map */
  1184. 01660 typedef unsigned short zone1_t;    /* zone number for V1 file systems */
  1185. 01661 typedef unsigned short bitchunk_t; /* collection of bits in a bitmap */
  1186. 01662
  1187. 01663 typedef unsigned char   u8_t;      /* 8 bit type */
  1188. 01664 typedef unsigned short u16_t;      /* 16 bit type */
  1189. 01665 typedef unsigned long  u32_t;      /* 32 bit type */
  1190. 01666
  1191. 01667 typedef char            i8_t;      /* 8 bit signed type */
  1192. 01668 typedef short          i16_t;      /* 16 bit signed type */
  1193. 01669 typedef long           i32_t;      /* 32 bit signed type */
  1194. .Op 21 include/sys/types.h
  1195. 01670
  1196. 01671 /* The following types are needed because MINIX uses K&R style function
  1197. 01672  * definitions (for maximum portability).  When a short, such as dev_t, is
  1198. 01673  * passed to a function with a K&R definition, the compiler automatically
  1199. 01674  * promotes it to an int.  The prototype must contain an int as the parameter,
  1200. 01675  * not a short, because an int is what an old-style function definition
  1201. 01676  * expects.  Thus using dev_t in a prototype would be incorrect.  It would be
  1202. 01677  * sufficient to just use int instead of dev_t in the prototypes, but Dev_t
  1203. 01678  * is clearer.
  1204. 01679  */
  1205. 01680 typedef int            Dev_t;
  1206. 01681 typedef int            Gid_t;
  1207. 01682 typedef int          Nlink_t;
  1208. 01683 typedef int            Uid_t;
  1209. 01684 typedef int             U8_t;
  1210. 01685 typedef unsigned long  U32_t;
  1211. 01686 typedef int             I8_t;
  1212. 01687 typedef int            I16_t;
  1213. 01688 typedef long            I32_t;
  1214. 01689
  1215. 01690 /* ANSI C makes writing down the promotion of unsigned types very messy.  When
  1216. 01691  * sizeof(short) == sizeof(int), there is no promotion, so the type stays
  1217. 01692  * unsigned.  When the compiler is not ANSI, there is usually no loss of
  1218. 01693  * unsignedness, and there are usually no prototypes so the promoted type
  1219. 01694  * doesn't matter.  The use of types like Ino_t is an attempt to use ints
  1220. 01695  * (which are not promoted) while providing information to the reader.
  1221. 01696  */
  1222. 01697
  1223. 01698 #ifndef _ANSI_H
  1224. 01699 #include <ansi.h>
  1225. 01700 #endif
  1226. 01701
  1227. 01702 #if _EM_WSIZE == 2 || !defined(_ANSI)
  1228. 01703 typedef unsigned int      Ino_t;
  1229. 01704 typedef unsigned int    Zone1_t;
  1230. 01705 typedef unsigned int Bitchunk_t;
  1231. 01706 typedef unsigned int      U16_t;
  1232. 01707 typedef unsigned int  Mode_t;
  1233. 01708
  1234. 01709 #else /* _EM_WSIZE == 4, or _EM_WSIZE undefined, or _ANSI defined */
  1235. 01710 typedef int               Ino_t;
  1236. 01711 typedef int             Zone1_t;
  1237. 01712 typedef int          Bitchunk_t;
  1238. 01713 typedef int               U16_t;
  1239. 01714 typedef int           Mode_t;
  1240. 01715
  1241. 01716 #endif /* _EM_WSIZE == 2, etc */
  1242. 01717  
  1243. 01718 /* Signal handler type, e.g. SIG_IGN */
  1244. 01719 #if defined(_ANSI)
  1245. 01720 typedef void (*sighandler_t) (int);
  1246. 01721 #else
  1247. 01722 typedef void (*sighandler_t)();
  1248. 01723 #endif
  1249. 01724
  1250. 01725 #endif /* _TYPES_H */
  1251. .Ep 22 include/sys/ioctl.h
  1252. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1253. include/sys/ioctl.h    
  1254. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1255. 01800 /* The ioctl.h header declares device controlling operations. */
  1256. 01801
  1257. 01802 #ifndef _IOCTL_H
  1258. 01803 #define _IOCTL_H
  1259. 01804
  1260. 01805 #if _EM_WSIZE >= 4
  1261. 01806 /* Ioctls have the command encoded in the low-order word, and the size
  1262. 01807  * of the parameter in the high-order word. The 3 high bits of the high-
  1263. 01808  * order word are used to encode the in/out/void status of the parameter.
  1264. 01809  */
  1265. 01810
  1266. 01811 #define _IOCPARM_MASK   0x1FFF
  1267. 01812 #define _IOC_VOID       0x20000000
  1268. 01813 #define _IOCTYPE_MASK   0xFFFF
  1269. 01814 #define _IOC_IN         0x40000000
  1270. 01815 #define _IOC_OUT        0x80000000
  1271. 01816 #define _IOC_INOUT      (_IOC_IN | _IOC_OUT)
  1272. 01817
  1273. 01818 #define _IO(x,y)        ((x << 8) | y | _IOC_VOID)
  1274. 01819 #define _IOR(x,y,t)     ((x << 8) | y | ((sizeof(t) & _IOCPARM_MASK) << 16) |
  1275. 01820                                 _IOC_OUT)
  1276. 01821 #define _IOW(x,y,t)     ((x << 8) | y | ((sizeof(t) & _IOCPARM_MASK) << 16) |
  1277. 01822                                 _IOC_IN)
  1278. 01823 #define _IORW(x,y,t)    ((x << 8) | y | ((sizeof(t) & _IOCPARM_MASK) << 16) |
  1279. 01824                                 _IOC_INOUT)
  1280. 01825 #else
  1281. 01826 /* No fancy encoding on a 16-bit machine. */
  1282. 01827
  1283. 01828 #define _IO(x,y)        ((x << 8) | y)
  1284. 01829 #define _IOR(x,y,t)     _IO(x,y)
  1285. 01830 #define _IOW(x,y,t)     _IO(x,y)
  1286. 01831 #define _IORW(x,y,t)    _IO(x,y)
  1287. 01832 #endif
  1288. 01833
  1289. 01834
  1290. 01835 /* Terminal ioctls. */
  1291. 01836 #define TCGETS          _IOR('T',  8, struct termios) /* tcgetattr */
  1292. 01837 #define TCSETS          _IOW('T',  9, struct termios) /* tcsetattr, TCSANOW */
  1293. 01838 #define TCSETSW         _IOW('T', 10, struct termios) /* tcsetattr, TCSADRAIN */
  1294. 01839 #define TCSETSF         _IOW('T', 11, struct termios) /* tcsetattr, TCSAFLUSH */
  1295. 01840 #define TCSBRK          _IOW('T', 12, int)            /* tcsendbreak */
  1296. 01841 #define TCDRAIN         _IO ('T', 13)                 /* tcdrain */
  1297. 01842 #define TCFLOW          _IOW('T', 14, int)            /* tcflow */
  1298. 01843 #define TCFLSH          _IOW('T', 15, int)            /* tcflush */
  1299. 01844 #define TIOCGWINSZ      _IOR('T', 16, struct winsize)
  1300. 01845 #define TIOCSWINSZ      _IOW('T', 17, struct winsize)
  1301. 01846 #define TIOCGPGRP       _IOW('T', 18, int)
  1302. 01847 #define TIOCSPGRP       _IOW('T', 19, int)
  1303. 01848 #define TIOCSFON        _IOW('T', 20, u8_t [8192])
  1304. 01849
  1305. 01850 #define TIOCGETP        _IOR('t',  1, struct sgttyb)
  1306. 01851 #define TIOCSETP        _IOW('t',  2, struct sgttyb)
  1307. 01852 #define TIOCGETC        _IOR('t',  3, struct tchars)
  1308. 01853 #define TIOCSETC        _IOW('t',  4, struct tchars)
  1309. 01854
  1310. .Op 23 include/sys/ioctl.h
  1311. 01855
  1312. 01856 /* Network ioctls. */
  1313. 01857 #define NWIOSETHOPT     _IOW('n', 16, struct nwio_ethopt)
  1314. 01858 #define NWIOGETHOPT     _IOR('n', 17, struct nwio_ethopt)
  1315. 01859 #define NWIOGETHSTAT    _IOR('n', 18, struct nwio_ethstat)
  1316. 01860
  1317. 01861 #define NWIOSIPCONF     _IOW('n', 32, struct nwio_ipconf)
  1318. 01862 #define NWIOGIPCONF     _IOR('n', 33, struct nwio_ipconf)
  1319. 01863 #define NWIOSIPOPT      _IOW('n', 34, struct nwio_ipopt)
  1320. 01864 #define NWIOGIPOPT      _IOR('n', 35, struct nwio_ipopt)
  1321. 01865
  1322. 01866 #define NWIOIPGROUTE    _IORW('n', 40, struct nwio_route)
  1323. 01867 #define NWIOIPSROUTE    _IOW ('n', 41, struct nwio_route)
  1324. 01868 #define NWIOIPDROUTE    _IOW ('n', 42, struct nwio_route)
  1325. 01869
  1326. 01870 #define NWIOSTCPCONF    _IOW('n', 48, struct nwio_tcpconf)
  1327. 01871 #define NWIOGTCPCONF    _IOR('n', 49, struct nwio_tcpconf)
  1328. 01872 #define NWIOTCPCONN     _IOW('n', 50, struct nwio_tcpcl)
  1329. 01873 #define NWIOTCPLISTEN   _IOW('n', 51, struct nwio_tcpcl)
  1330. 01874 #define NWIOTCPATTACH   _IOW('n', 52, struct nwio_tcpatt)
  1331. 01875 #define NWIOTCPSHUTDOWN _IO ('n', 53)
  1332. 01876 #define NWIOSTCPOPT     _IOW('n', 54, struct nwio_tcpopt)
  1333. 01877 #define NWIOGTCPOPT     _IOR('n', 55, struct nwio_tcpopt)
  1334. 01878
  1335. 01879 #define NWIOSUDPOPT     _IOW('n', 64, struct nwio_udpopt)
  1336. 01880 #define NWIOGUDPOPT     _IOR('n', 65, struct nwio_udpopt)
  1337. 01881
  1338. 01882 /* Disk ioctls. */
  1339. 01883 #define DIOCEJECT       _IO ('d', 5)
  1340. 01884 #define DIOCSETP        _IOW('d', 6, struct partition)
  1341. 01885 #define DIOCGETP        _IOR('d', 7, struct partition)
  1342. 01886
  1343. 01887 /* Keyboard ioctls. */
  1344. 01888 #define KIOCSMAP        _IOW('k', 3, keymap_t)
  1345. 01889
  1346. 01890 /* Memory ioctls. */
  1347. 01891 #define MIOCRAMSIZE     _IOW('m', 3, u32_t)     /* Size of the ramdisk */
  1348. 01892 #define MIOCSPSINFO     _IOW('m', 4, void *)
  1349. 01893 #define MIOCGPSINFO     _IOR('m', 5, struct psinfo)
  1350. 01894
  1351. 01895 /* Magnetic tape ioctls. */
  1352. 01896 #define MTIOCTOP        _IOW('M', 1, struct mtop)
  1353. 01897 #define MTIOCGET        _IOR('M', 2, struct mtget)
  1354. 01898
  1355. 01899 /* SCSI command. */
  1356. 01900 #define SCIOCCMD        _IOW('S', 1, struct scsicmd)
  1357. 01901
  1358. 01902 /* CD-ROM ioctls. */
  1359. 01903 #define CDIOPLAYTI      _IOR('c', 1, struct cd_play_track)
  1360. 01904 #define CDIOPLAYMSS     _IOR('c', 2, struct cd_play_mss)
  1361. 01905 #define CDIOREADTOCHDR  _IOW('c', 3, struct cd_toc_entry)
  1362. 01906 #define CDIOREADTOC     _IOW('c', 4, struct cd_toc_entry)
  1363. 01907 #define CDIOREADSUBCH   _IOW('c', 5, struct cd_toc_entry)
  1364. 01908 #define CDIOSTOP        _IO ('c', 10)
  1365. 01909 #define CDIOPAUSE       _IO ('c', 11)
  1366. 01910 #define CDIORESUME      _IO ('c', 12)
  1367. 01911 #define CDIOEJECT       DIOCEJECT
  1368. 01912
  1369. 01913 /* Soundcard DSP ioctls. */
  1370. 01914 #define DSPIORATE       _IOR('s', 1, unsigned int)
  1371. .Ep 24 include/sys/ioctl.h
  1372. 01915 #define DSPIOSTEREO     _IOR('s', 2, unsigned int)
  1373. 01916 #define DSPIOSIZE       _IOR('s', 3, unsigned int)
  1374. 01917 #define DSPIOBITS       _IOR('s', 4, unsigned int)
  1375. 01918 #define DSPIOSIGN       _IOR('s', 5, unsigned int)
  1376. 01919 #define DSPIOMAX        _IOW('s', 6, unsigned int)
  1377. 01920 #define DSPIORESET      _IO ('s', 7)
  1378. 01921
  1379. 01922 /* Soundcard mixer ioctls. */
  1380. 01923 #define MIXIOGETVOLUME          _IORW('s', 10, struct volume_level)
  1381. 01924 #define MIXIOGETINPUTLEFT       _IORW('s', 11, struct inout_ctrl)
  1382. 01925 #define MIXIOGETINPUTRIGHT      _IORW('s', 12, struct inout_ctrl)
  1383. 01926 #define MIXIOGETOUTPUT          _IORW('s', 13, struct inout_ctrl)
  1384. 01927 #define MIXIOSETVOLUME          _IORW('s', 20, struct volume_level)
  1385. 01928 #define MIXIOSETINPUTLEFT       _IORW('s', 21, struct inout_ctrl)
  1386. 01929 #define MIXIOSETINPUTRIGHT      _IORW('s', 22, struct inout_ctrl)
  1387. 01930 #define MIXIOSETOUTPUT          _IORW('s', 23, struct inout_ctrl)
  1388. 01931
  1389. 01932 #ifndef _ANSI
  1390. 01933 #include <ansi.h>
  1391. 01934 #endif
  1392. 01935
  1393. 01936 _PROTOTYPE( int ioctl, (int _fd, int _request, void *_data)             );
  1394. 01937
  1395. 01938 #endif /* _IOCTL_H */
  1396. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1397. include/sys/sigcontext.h    
  1398. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1399. 02000 #ifndef _SIGCONTEXT_H
  1400. 02001 #define _SIGCONTEXT_H
  1401. 02002
  1402. 02003 /* The sigcontext structure is used by the sigreturn(2) system call.
  1403. 02004  * sigreturn() is seldom called by user programs, but it is used internally
  1404. 02005  * by the signal catching mechanism.
  1405. 02006  */
  1406. 02007
  1407. 02008 #ifndef _ANSI_H
  1408. 02009 #include <ansi.h>
  1409. 02010 #endif
  1410. 02011
  1411. 02012 #ifndef _CONFIG_H
  1412. 02013 #include <minix/config.h>
  1413. 02014 #endif
  1414. 02015
  1415. 02016 #if !defined(CHIP)
  1416. 02017 #include "error, configuration is not known"
  1417. 02018 #endif
  1418. 02019
  1419. 02020 /* The following structure should match the stackframe_s structure used
  1420. 02021  * by the kernel's context switching code.  Floating point registers should
  1421. 02022  * be added in a different struct.
  1422. 02023  */
  1423. 02024 #if (CHIP == INTEL)
  1424. 02025 struct sigregs {  
  1425. 02026 #if _WORD_SIZE == 4
  1426. 02027   short sr_gs;
  1427. 02028   short sr_fs;
  1428. 02029 #endif /* _WORD_SIZE == 4 */
  1429. .Op 25 include/sys/sigcontext.h
  1430. 02030   short sr_es;
  1431. 02031   short sr_ds;
  1432. 02032   int sr_di;
  1433. 02033   int sr_si;
  1434. 02034   int sr_bp;
  1435. 02035   int sr_st;                    /* stack top -- used in kernel */
  1436. 02036   int sr_bx;
  1437. 02037   int sr_dx;
  1438. 02038   int sr_cx;
  1439. 02039   int sr_retreg;
  1440. 02040   int sr_retadr;                /* return address to caller of save -- used
  1441. 02041                                  * in kernel */
  1442. 02042   int sr_pc;
  1443. 02043   int sr_cs;
  1444. 02044   int sr_psw;
  1445. 02045   int sr_sp;
  1446. 02046   int sr_ss;
  1447. 02047 };
  1448. 02048
  1449. 02049 struct sigframe {               /* stack frame created for signalled process */
  1450. 02050   _PROTOTYPE( void (*sf_retadr), (void) );
  1451. 02051   int sf_signo;
  1452. 02052   int sf_code;
  1453. 02053   struct sigcontext *sf_scp;
  1454. 02054   int sf_fp;
  1455. 02055   _PROTOTYPE( void (*sf_retadr2), (void) );
  1456. 02056   struct sigcontext *sf_scpcopy;
  1457. 02057 };
  1458. 02058
  1459. 02059 #else
  1460. 02060 #if (CHIP == M68000)
  1461. 02061 struct sigregs {  
  1462. 02062   long sr_retreg;                       /* d0 */
  1463. 02063   long sr_d1;
  1464. 02064   long sr_d2;
  1465. 02065   long sr_d3;
  1466. 02066   long sr_d4;
  1467. 02067   long sr_d5;
  1468. 02068   long sr_d6;
  1469. 02069   long sr_d7;
  1470. 02070   long sr_a0;
  1471. 02071   long sr_a1;
  1472. 02072   long sr_a2;
  1473. 02073   long sr_a3;
  1474. 02074   long sr_a4;
  1475. 02075   long sr_a5;
  1476. 02076   long sr_a6;
  1477. 02077   long sr_sp;                   /* also known as a7 */
  1478. 02078   long sr_pc;
  1479. 02079   short sr_psw;
  1480. 02080   short sr_dummy;               /* make size multiple of 4 for system.c */
  1481. 02081 };
  1482. 02082 #else
  1483. 02083 #include "error, CHIP is not supported"
  1484. 02084 #endif
  1485. 02085 #endif /* CHIP == INTEL */
  1486. 02086
  1487. 02087 struct sigcontext {
  1488. 02088   int sc_flags;                 /* sigstack state to restore */
  1489. 02089   long sc_mask;                 /* signal mask to restore */
  1490. .Ep 26 include/sys/sigcontext.h
  1491. 02090   struct sigregs sc_regs;       /* register set to restore */
  1492. 02091 };
  1493. 02092
  1494. 02093 #if (CHIP == INTEL)
  1495. 02094 #if _WORD_SIZE == 4
  1496. 02095 #define sc_gs sc_regs.sr_gs
  1497. 02096 #define sc_fs sc_regs.sr_fs
  1498. 02097 #endif /* _WORD_SIZE == 4 */
  1499. 02098 #define sc_es sc_regs.sr_es
  1500. 02099 #define sc_ds sc_regs.sr_ds
  1501. 02100 #define sc_di sc_regs.sr_di
  1502. 02101 #define sc_si sc_regs.sr_si 
  1503. 02102 #define sc_fp sc_regs.sr_bp
  1504. 02103 #define sc_st sc_regs.sr_st             /* stack top -- used in kernel */
  1505. 02104 #define sc_bx sc_regs.sr_bx
  1506. 02105 #define sc_dx sc_regs.sr_dx
  1507. 02106 #define sc_cx sc_regs.sr_cx
  1508. 02107 #define sc_retreg sc_regs.sr_retreg
  1509. 02108 #define sc_retadr sc_regs.sr_retadr     /* return address to caller of 
  1510. 02109                                         save -- used in kernel */
  1511. 02110 #define sc_pc sc_regs.sr_pc
  1512. 02111 #define sc_cs sc_regs.sr_cs
  1513. 02112 #define sc_psw sc_regs.sr_psw
  1514. 02113 #define sc_sp sc_regs.sr_sp
  1515. 02114 #define sc_ss sc_regs.sr_ss
  1516. 02115 #endif /* CHIP == INTEL */
  1517. 02116
  1518. 02117 #if (CHIP == M68000)
  1519. 02118 #define sc_retreg sc_regs.sr_retreg
  1520. 02119 #define sc_d1 sc_regs.sr_d1
  1521. 02120 #define sc_d2 sc_regs.sr_d2
  1522. 02121 #define sc_d3 sc_regs.sr_d3
  1523. 02122 #define sc_d4 sc_regs.sr_d4
  1524. 02123 #define sc_d5 sc_regs.sr_d5
  1525. 02124 #define sc_d6 sc_regs.sr_d6
  1526. 02125 #define sc_d7 sc_regs.sr_d7
  1527. 02126 #define sc_a0 sc_regs.sr_a0
  1528. 02127 #define sc_a1 sc_regs.sr_a1
  1529. 02128 #define sc_a2 sc_regs.sr_a2
  1530. 02129 #define sc_a3 sc_regs.sr_a3
  1531. 02130 #define sc_a4 sc_regs.sr_a4
  1532. 02131 #define sc_a5 sc_regs.sr_a5
  1533. 02132 #define sc_fp sc_regs.sr_a6
  1534. 02133 #define sc_sp sc_regs.sr_sp
  1535. 02134 #define sc_pc sc_regs.sr_pc
  1536. 02135 #define sc_psw sc_regs.sr_psw
  1537. 02136 #endif /* CHIP == M68000 */
  1538. 02137
  1539. 02138 /* Values for sc_flags.  Must agree with <minix/jmp_buf.h>. */
  1540. 02139 #define SC_SIGCONTEXT   2       /* nonzero when signal context is included */
  1541. 02140 #define SC_NOREGLOCALS  4       /* nonzero when registers are not to be
  1542. 02141                                         saved and restored */
  1543. 02142
  1544. 02143 _PROTOTYPE( int sigreturn, (struct sigcontext *_scp)                    );
  1545. 02144
  1546. 02145 #endif /* _SIGCONTEXT_H */
  1547. .Op 27 include/sys/ptrace.h
  1548. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1549. include/sys/ptrace.h    
  1550. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1551. 02200 /* <sys/ptrace.h>
  1552. 02201  * definitions for ptrace(2) 
  1553. 02202  */
  1554. 02203
  1555. 02204 #ifndef _PTRACE_H
  1556. 02205 #define _PTRACE_H
  1557. 02206
  1558. 02207 #define T_STOP         -1       /* stop the process */
  1559. 02208 #define T_OK            0       /* enable tracing by parent for this process */
  1560. 02209 #define T_GETINS        1       /* return value from instruction space */
  1561. 02210 #define T_GETDATA       2       /* return value from data space */
  1562. 02211 #define T_GETUSER       3       /* return value from user process table */
  1563. 02212 #define T_SETINS        4       /* set value from instruction space */
  1564. 02213 #define T_SETDATA       5       /* set value from data space */
  1565. 02214 #define T_SETUSER       6       /* set value in user process table */
  1566. 02215 #define T_RESUME        7       /* resume execution */
  1567. 02216 #define T_EXIT          8       /* exit */
  1568. 02217 #define T_STEP          9       /* set trace bit */
  1569. 02218
  1570. 02219 /* Function Prototypes. */
  1571. 02220 #ifndef _ANSI_H
  1572. 02221 #include <ansi.h>
  1573. 02222 #endif
  1574. 02223
  1575. 02224 _PROTOTYPE( long ptrace, (int _req, pid_t _pid, long _addr, long _data) );
  1576. 02225
  1577. 02226 #endif /* _PTRACE_H */
  1578. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1579. include/sys/stat.h    
  1580. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1581. 02300 /* The <sys/stat.h> header defines a struct that is used in the stat() and
  1582. 02301  * fstat functions.  The information in this struct comes from the i-node of
  1583. 02302  * some file.  These calls are the only approved way to inspect i-nodes.
  1584. 02303  */
  1585. 02304
  1586. 02305 #ifndef _STAT_H
  1587. 02306 #define _STAT_H
  1588. 02307
  1589. 02308 struct stat {
  1590. 02309   dev_t st_dev;                 /* major/minor device number */
  1591. 02310   ino_t st_ino;                 /* i-node number */
  1592. 02311   mode_t st_mode;               /* file mode, protection bits, etc. */
  1593. 02312   short int st_nlink;           /* # links; TEMPORARY HACK: should be nlink_t*/
  1594. 02313   uid_t st_uid;                 /* uid of the file's owner */
  1595. 02314   short int st_gid;             /* gid; TEMPORARY HACK: should be gid_t */
  1596. 02315   dev_t st_rdev;
  1597. 02316   off_t st_size;                /* file size */
  1598. 02317   time_t st_atime;              /* time of last access */
  1599. 02318   time_t st_mtime;              /* time of last data modification */
  1600. 02319   time_t st_ctime;              /* time of last file status change */
  1601. .Ep 28 include/sys/stat.h
  1602. 02320 };
  1603. 02321
  1604. 02322 /* Traditional mask definitions for st_mode. */
  1605. 02323 /* The ugly casts on only some of the definitions are to avoid suprising sign
  1606. 02324  * extensions such as S_IFREG != (mode_t) S_IFREG when ints are 32 bits.
  1607. 02325  */
  1608. 02326 #define S_IFMT  ((mode_t) 0170000)      /* type of file */
  1609. 02327 #define S_IFREG ((mode_t) 0100000)      /* regular */
  1610. 02328 #define S_IFBLK 0060000         /* block special */
  1611. 02329 #define S_IFDIR 0040000         /* directory */
  1612. 02330 #define S_IFCHR 0020000         /* character special */
  1613. 02331 #define S_IFIFO 0010000         /* this is a FIFO */
  1614. 02332 #define S_ISUID 0004000         /* set user id on execution */
  1615. 02333 #define S_ISGID 0002000         /* set group id on execution */
  1616. 02334                                 /* next is reserved for future use */
  1617. 02335 #define S_ISVTX   01000         /* save swapped text even after use */
  1618. 02336
  1619. 02337 /* POSIX masks for st_mode. */
  1620. 02338 #define S_IRWXU   00700         /* owner:  rwx------ */
  1621. 02339 #define S_IRUSR   00400         /* owner:  r-------- */
  1622. 02340 #define S_IWUSR   00200         /* owner:  -w------- */
  1623. 02341 #define S_IXUSR   00100         /* owner:  --x------ */
  1624. 02342
  1625. 02343 #define S_IRWXG   00070         /* group:  ---rwx--- */
  1626. 02344 #define S_IRGRP   00040         /* group:  ---r----- */
  1627. 02345 #define S_IWGRP   00020         /* group:  ----w---- */
  1628. 02346 #define S_IXGRP   00010         /* group:  -----x--- */
  1629. 02347
  1630. 02348 #define S_IRWXO   00007         /* others: ------rwx */
  1631. 02349 #define S_IROTH   00004         /* others: ------r-- */ 
  1632. 02350 #define S_IWOTH   00002         /* others: -------w- */
  1633. 02351 #define S_IXOTH   00001         /* others: --------x */
  1634. 02352
  1635. 02353 /* The following macros test st_mode (from POSIX Sec. 5.6.1.1). */
  1636. 02354 #define S_ISREG(m)      (((m) & S_IFMT) == S_IFREG)     /* is a reg file */
  1637. 02355 #define S_ISDIR(m)      (((m) & S_IFMT) == S_IFDIR)     /* is a directory */
  1638. 02356 #define S_ISCHR(m)      (((m) & S_IFMT) == S_IFCHR)     /* is a char spec */
  1639. 02357 #define S_ISBLK(m)      (((m) & S_IFMT) == S_IFBLK)     /* is a block spec */
  1640. 02358 #define S_ISFIFO(m)     (((m) & S_IFMT) == S_IFIFO)     /* is a pipe/FIFO */
  1641. 02359
  1642. 02360
  1643. 02361 /* Function Prototypes. */
  1644. 02362 #ifndef _ANSI_H
  1645. 02363 #include <ansi.h>
  1646. 02364 #endif
  1647. 02365
  1648. 02366 _PROTOTYPE( int chmod, (const char *_path, Mode_t _mode)                );
  1649. 02367 _PROTOTYPE( int fstat, (int _fildes, struct stat *_buf)                 );
  1650. 02368 _PROTOTYPE( int mkdir, (const char *_path, Mode_t _mode)                );
  1651. 02369 _PROTOTYPE( int mkfifo, (const char *_path, Mode_t _mode)               );
  1652. 02370 _PROTOTYPE( int stat, (const char *_path, struct stat *_buf)            );
  1653. 02371 _PROTOTYPE( mode_t umask, (Mode_t _cmask)                               );
  1654. 02372
  1655. 02373 #endif /* _STAT_H */
  1656. .Op 29 include/sys/dir.h
  1657. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1658. include/sys/dir.h    
  1659. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1660. 02400 /* The <dir.h> header gives the layout of a directory. */
  1661. 02401
  1662. 02402 #ifndef _DIR_H
  1663. 02403 #define _DIR_H
  1664. 02404
  1665. 02405 #define DIRBLKSIZ       512     /* size of directory block */
  1666. 02406
  1667. 02407 #ifndef DIRSIZ
  1668. 02408 #define DIRSIZ  14
  1669. 02409 #endif
  1670. 02410
  1671. 02411 struct direct {
  1672. 02412   ino_t d_ino;
  1673. 02413   char d_name[DIRSIZ];
  1674. 02414 };
  1675. 02415
  1676. 02416 #endif /* _DIR_H */
  1677. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1678. include/sys/wait.h    
  1679. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1680. 02500 /* The <sys/wait.h> header contains macros related to wait(). The value
  1681. 02501  * returned by wait() and waitpid() depends on whether the process 
  1682. 02502  * terminated by an exit() call, was killed by a signal, or was stopped
  1683. 02503  * due to job control, as follows:
  1684. 02504  *
  1685. 02505  *                               High byte   Low byte
  1686. 02506  *                              +---------------------+
  1687. 02507  *      exit(status)            |  status  |    0     |
  1688. 02508  *                              +---------------------+
  1689. 02509  *      killed by signal        |    0     |  signal  |
  1690. 02510  *                              +---------------------+
  1691. 02511  *      stopped (job control)   |  signal  |   0177   |
  1692. 02512  *                              +---------------------+
  1693. 02513  */
  1694. 02514
  1695. 02515 #ifndef _WAIT_H
  1696. 02516 #define _WAIT_H
  1697. 02517
  1698. 02518 #define _LOW(v)         ( (v) & 0377)
  1699. 02519 #define _HIGH(v)        ( ((v) >> 8) & 0377)
  1700. 02520
  1701. 02521 #define WNOHANG         1       /* do not wait for child to exit */
  1702. 02522 #define WUNTRACED       2       /* for job control; not implemented */
  1703. 02523
  1704. 02524 #define WIFEXITED(s)    (_LOW(s) == 0)                      /* normal exit */
  1705. 02525 #define WEXITSTATUS(s)  (_HIGH(s))                          /* exit status */
  1706. 02526 #define WTERMSIG(s)     (_LOW(s) & 0177)                    /* sig value */
  1707. 02527 #define WIFSIGNALED(s)  (((unsigned int)(s)-1 & 0xFFFF) < 0xFF) /* signaled */
  1708. 02528 #define WIFSTOPPED(s)   (_LOW(s) == 0177)                   /* stopped */
  1709. 02529 #define WSTOPSIG(s)     (_HIGH(s) & 0377)                   /* stop signal */
  1710. .Ep 30 include/sys/wait.h
  1711. 02530
  1712. 02531 /* Function Prototypes. */
  1713. 02532 #ifndef _ANSI_H
  1714. 02533 #include <ansi.h>
  1715. 02534 #endif
  1716. 02535
  1717. 02536 _PROTOTYPE( pid_t wait, (int *_stat_loc)                                   );
  1718. 02537 _PROTOTYPE( pid_t waitpid, (pid_t _pid, int *_stat_loc, int _options)      );
  1719. 02538
  1720. 02539 #endif /* _WAIT_H */
  1721. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1722. include/minix/config.h    
  1723. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1724. 02600 #ifndef _CONFIG_H
  1725. 02601 #define _CONFIG_H
  1726. 02602
  1727. 02603 /* Minix release and version numbers. */
  1728. 02604 #define OS_RELEASE "2.0"
  1729. 02605 #define OS_VERSION "0"
  1730. 02606
  1731. 02607 /* This file sets configuration parameters for the MINIX kernel, FS, and MM.
  1732. 02608  * It is divided up into two main sections.  The first section contains
  1733. 02609  * user-settable parameters.  In the second section, various internal system
  1734. 02610  * parameters are set based on the user-settable parameters.
  1735. 02611  */
  1736. 02612
  1737. 02613 /*===========================================================================*
  1738. 02614  *              This section contains user-settable parameters               *
  1739. 02615  *===========================================================================*/
  1740. 02616 #define MACHINE       IBM_PC    /* Must be one of the names listed below */
  1741. 02617
  1742. 02618 #define IBM_PC             1    /* any  8088 or 80x86-based system */
  1743. 02619 #define SUN_4             40    /* any Sun SPARC-based system */
  1744. 02620 #define SUN_4_60          40    /* Sun-4/60 (aka SparcStation 1 or Campus) */
  1745. 02621 #define ATARI             60    /* ATARI ST/STe/TT (68000/68030) */
  1746. 02622 #define AMIGA             61    /* Commodore Amiga (68000) */
  1747. 02623 #define MACINTOSH         62    /* Apple Macintosh (68000) */
  1748. 02624
  1749. 02625 /* Word size in bytes (a constant equal to sizeof(int)). */
  1750. 02626 #if __ACK__
  1751. 02627 #define _WORD_SIZE      _EM_WSIZE
  1752. 02628 #endif
  1753. 02629
  1754. 02630
  1755. 02631 /* If ROBUST is set to 1, writes of i-node, directory, and indirect blocks
  1756. 02632  * from the cache happen as soon as the blocks are modified.  This gives a more
  1757. 02633  * robust, but slower, file system.  If it is set to 0, these blocks are not
  1758. 02634  * given any special treatment, which may cause problems if the system crashes.
  1759. 02635  */
  1760. 02636 #define ROBUST             0    /* 0 for speed, 1 for robustness */
  1761. 02637
  1762. 02638 /* Number of slots in the process table for user processes. */
  1763. 02639 #define NR_PROCS          32
  1764. .Op 31 include/minix/config.h
  1765. 02640
  1766. 02641 /* The buffer cache should be made as large as you can afford. */
  1767. 02642 #if (MACHINE == IBM_PC && _WORD_SIZE == 2)
  1768. 02643 #define NR_BUFS           40    /* # blocks in the buffer cache */
  1769. 02644 #define NR_BUF_HASH       64    /* size of buf hash table; MUST BE POWER OF 2*/
  1770. 02645 #endif
  1771. 02646
  1772. 02647 #if (MACHINE == IBM_PC && _WORD_SIZE == 4)
  1773. 02648 #define NR_BUFS          512    /* # blocks in the buffer cache */
  1774. 02649 #define NR_BUF_HASH     1024    /* size of buf hash table; MUST BE POWER OF 2*/
  1775. 02650 #endif
  1776. 02651
  1777. 02652 #if (MACHINE == SUN_4_60)
  1778. 02653 #define NR_BUFS          512    /* # blocks in the buffer cache (<=1536) */
  1779. 02654 #define NR_BUF_HASH      512    /* size of buf hash table; MUST BE POWER OF 2*/
  1780. 02655 #endif
  1781. 02656
  1782. 02657 #if (MACHINE == ATARI)
  1783. 02658 #define NR_BUFS         1536    /* # blocks in the buffer cache (<=1536) */
  1784. 02659 #define NR_BUF_HASH     2048    /* size of buf hash table; MUST BE POWER OF 2*/
  1785. 02660 #endif
  1786. 02661
  1787. 02662 /* Defines for kernel configuration. */
  1788. 02663 #define AUTO_BIOS          0    /* xt_wini.c - use Western's autoconfig BIOS */
  1789. 02664 #define LINEWRAP           1    /* console.c - wrap lines at column 80 */
  1790. 02665 #define ALLOW_GAP_MESSAGES 1    /* proc.c - allow messages in the gap between
  1791. 02666                                  * the end of bss and lowest stack address */
  1792. 02667
  1793. 02668 /* Enable or disable the second level file system cache on the RAM disk. */
  1794. 02669 #define ENABLE_CACHE2      0
  1795. 02670
  1796. 02671 /* Include or exclude device drivers.  Set to 1 to include, 0 to exclude. */
  1797. 02672 #define ENABLE_NETWORKING  0    /* enable TCP/IP code */
  1798. 02673 #define ENABLE_AT_WINI     1    /* enable AT winchester driver */
  1799. 02674 #define ENABLE_BIOS_WINI   0    /* enable BIOS winchester driver */
  1800. 02675 #define ENABLE_ESDI_WINI   0    /* enable ESDI winchester driver */
  1801. 02676 #define ENABLE_XT_WINI     0    /* enable XT winchester driver */
  1802. 02677 #define ENABLE_ADAPTEC_SCSI 0   /* enable ADAPTEC SCSI driver */
  1803. 02678 #define ENABLE_MITSUMI_CDROM 0  /* enable Mitsumi CD-ROM driver */
  1804. 02679 #define ENABLE_SB_AUDIO    0    /* enable Soundblaster audio driver */
  1805. 02680
  1806. 02681 /* DMA_SECTORS may be increased to speed up DMA based drivers. */
  1807. 02682 #define DMA_SECTORS        1    /* DMA buffer size (must be >= 1) */
  1808. 02683
  1809. 02684 /* Include or exclude backwards compatibility code. */
  1810. 02685 #define ENABLE_BINCOMPAT   0    /* for binaries using obsolete calls */
  1811. 02686 #define ENABLE_SRCCOMPAT   0    /* for sources using obsolete calls */
  1812. 02687
  1813. 02688 /* Determine which device to use for pipes. */
  1814. 02689 #define PIPE_DEV    ROOT_DEV    /* put pipes on root device */
  1815. 02690
  1816. 02691 /* NR_CONS, NR_RS_LINES, and NR_PTYS determine the number of terminals the
  1817. 02692  * system can handle.
  1818. 02693  */
  1819. 02694 #define NR_CONS            2    /* # system consoles (1 to 8) */
  1820. 02695 #define NR_RS_LINES        0    /* # rs232 terminals (0, 1, or 2) */
  1821. 02696 #define NR_PTYS            0    /* # pseudo terminals (0 to 64) */
  1822. 02697
  1823. 02698 #if (MACHINE == ATARI)
  1824. 02699 /* The next define says if you have an ATARI ST or TT */
  1825. .Ep 32 include/minix/config.h
  1826. 02700 #define ATARI_TYPE        TT
  1827. 02701 #define ST                 1    /* all ST's and Mega ST's */
  1828. 02702 #define STE                2    /* all STe and Mega STe's */
  1829. 02703 #define TT                 3
  1830. 02704
  1831. 02705 /* if SCREEN is set to 1 graphical screen operations are possible */
  1832. 02706 #define SCREEN             1    
  1833. 02707
  1834. 02708 /* This define says whether the keyboard generates VT100 or IBM_PC escapes. */
  1835. 02709 #define KEYBOARD       VT100    /* either VT100 or IBM_PC */
  1836. 02710 #define VT100            100
  1837. 02711
  1838. 02712 /* The next define determines the kind of partitioning. */
  1839. 02713 #define PARTITIONING   SUPRA    /* one of the following or ATARI */
  1840. 02714 #define SUPRA              1    /*ICD, SUPRA and BMS are all the same */
  1841. 02715 #define BMS                1
  1842. 02716 #define ICD                1
  1843. 02717 #define CBHD               2
  1844. 02718 #define EICKMANN           3
  1845. 02719
  1846. 02720 /* Define the number of hard disk drives on your system. */
  1847. 02721 #define NR_ACSI_DRIVES     3    /* typically 0 or 1 */
  1848. 02722 #define NR_SCSI_DRIVES     1    /* typically 0 (ST, STe) or 1 (TT) */
  1849. 02723
  1850. 02724 /* Some systems need to have a little delay after each winchester
  1851. 02725  * commands. These systems need FAST_DISK set to 0. Other disks do not
  1852. 02726  * need this delay, and thus can have FAST_DISK set to 1 to avoid this delay.
  1853. 02727  */
  1854. 02728 #define FAST_DISK          1    /* 0 or 1 */
  1855. 02729
  1856. 02730 /* Note: if you want to make your kernel smaller, you can set NR_FD_DRIVES
  1857. 02731  * to 0. You will still be able to boot minix.img from floppy. However, you
  1858. 02732  * MUST fetch both the root and usr filesystem from a hard disk
  1859. 02733  */
  1860. 02734
  1861. 02735 /* Define the number of floppy disk drives on your system. */
  1862. 02736 #define NR_FD_DRIVES       1    /* 0, 1, 2 */
  1863. 02737
  1864. 02738 /* This configuration define controls parallel printer code. */
  1865. 02739 #define PAR_PRINTER        1    /* disable (0) / enable (1) parallel printer */
  1866. 02740
  1867. 02741 /* This configuration define controls disk controller clock code. */
  1868. 02742 #define HD_CLOCK           1    /* disable (0) / enable (1) hard disk clock */
  1869. 02743
  1870. 02744 #endif
  1871. 02745
  1872. 02746
  1873. 02747 /*===========================================================================*
  1874. 02748  *      There are no user-settable parameters after this line                *
  1875. 02749  *===========================================================================*/
  1876. 02750 /* Set the CHIP type based on the machine selected. The symbol CHIP is actually
  1877. 02751  * indicative of more than just the CPU.  For example, machines for which
  1878. 02752  * CHIP == INTEL are expected to have 8259A interrrupt controllers and the
  1879. 02753  * other properties of IBM PC/XT/AT/386 types machines in general. */
  1880. 02754 #define INTEL             1     /* CHIP type for PC, XT, AT, 386 and clones */
  1881. 02755 #define M68000            2     /* CHIP type for Atari, Amiga, Macintosh    */
  1882. 02756 #define SPARC             3     /* CHIP type for SUN-4 (e.g. SPARCstation)  */
  1883. 02757
  1884. 02758 /* Set the FP_FORMAT type based on the machine selected, either hw or sw    */
  1885. 02759 #define FP_NONE           0     /* no floating point support                */
  1886. .Op 33 include/minix/config.h
  1887. 02760 #define FP_IEEE           1     /* conform IEEE floating point standard     */
  1888. 02761
  1889. 02762 #if (MACHINE == IBM_PC)
  1890. 02763 #define CHIP          INTEL
  1891. 02764 #define SHADOWING         0
  1892. 02765 #define ENABLE_WINI     (ENABLE_AT_WINI || ENABLE_BIOS_WINI || 
  1893. 02766                         ENABLE_ESDI_WINI || ENABLE_XT_WINI)
  1894. 02767 #define ENABLE_SCSI     (ENABLE_ADAPTEC_SCSI)
  1895. 02768 #define ENABLE_CDROM    (ENABLE_MITSUMI_CDROM)
  1896. 02769 #define ENABLE_AUDIO    (ENABLE_SB_AUDIO)
  1897. 02770 #endif
  1898. 02771
  1899. 02772 #if (MACHINE == ATARI) || (MACHINE == AMIGA) || (MACHINE == MACINTOSH)
  1900. 02773 #define CHIP         M68000
  1901. 02774 #define SHADOWING         1
  1902. 02775 #endif
  1903. 02776
  1904. 02777 #if (MACHINE == SUN_4) || (MACHINE == SUN_4_60)
  1905. 02778 #define CHIP          SPARC
  1906. 02779 #define FP_FORMAT   FP_IEEE
  1907. 02780 #define SHADOWING         0
  1908. 02781 #endif
  1909. 02782
  1910. 02783 #if (MACHINE == ATARI) || (MACHINE == SUN_4)
  1911. 02784 #define ASKDEV            1     /* ask for boot device */
  1912. 02785 #define FASTLOAD          1     /* use multiple block transfers to init ram */
  1913. 02786 #endif
  1914. 02787
  1915. 02788 #if (ATARI_TYPE == TT) /* and all other 68030's */
  1916. 02789 #define FPP
  1917. 02790 #undef SHADOWING
  1918. 02791 #define SHADOWING 0
  1919. 02792 #endif
  1920. 02793
  1921. 02794 #ifndef FP_FORMAT
  1922. 02795 #define FP_FORMAT   FP_NONE
  1923. 02796 #endif
  1924. 02797
  1925. 02798 /* The file buf.h uses MAYBE_WRITE_IMMED. */
  1926. 02799 #if ROBUST
  1927. 02800 #define MAYBE_WRITE_IMMED  WRITE_IMMED  /* slower but perhaps safer */
  1928. 02801 #else
  1929. 02802 #define MAYBE_WRITE_IMMED 0             /* faster */
  1930. 02803 #endif
  1931. 02804
  1932. 02805 #ifndef MACHINE
  1933. 02806 error "In <minix/config.h> please define MACHINE"
  1934. 02807 #endif
  1935. 02808
  1936. 02809 #ifndef CHIP
  1937. 02810 error "In <minix/config.h> please define MACHINE to have a legal value"
  1938. 02811 #endif
  1939. 02812
  1940. 02813 #if (MACHINE == 0)
  1941. 02814 error "MACHINE has incorrect value (0)"
  1942. 02815 #endif
  1943. 02816
  1944. 02817 #endif /* _CONFIG_H */
  1945. .Ep 34 include/minix/const.h
  1946. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1947. include/minix/const.h    
  1948. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1949. 02900 /* Copyright (C) 1997 by Prentice-Hall, Inc.  Permission is hereby granted
  1950. 02901  * to redistribute the binary and source programs of this system for
  1951. 02902  * educational or research purposes.  For other use, written permission from
  1952. 02903  * Prentice-Hall is required.  
  1953. 02904  */
  1954. 02905
  1955. 02906 #define EXTERN        extern    /* used in *.h files */
  1956. 02907 #define PRIVATE       static    /* PRIVATE x limits the scope of x */
  1957. 02908 #define PUBLIC                  /* PUBLIC is the opposite of PRIVATE */
  1958. 02909 #define FORWARD       static    /* some compilers require this to be 'static'*/
  1959. 02910
  1960. 02911 #define TRUE               1    /* used for turning integers into Booleans */
  1961. 02912 #define FALSE              0    /* used for turning integers into Booleans */
  1962. 02913
  1963. 02914 #define HZ                60    /* clock freq (software settable on IBM-PC) */
  1964. 02915 #define BLOCK_SIZE      1024    /* # bytes in a disk block */
  1965. 02916 #define SUPER_USER (uid_t) 0    /* uid_t of superuser */
  1966. 02917
  1967. 02918 #define MAJOR              8    /* major device = (dev>>MAJOR) & 0377 */
  1968. 02919 #define MINOR              0    /* minor device = (dev>>MINOR) & 0377 */
  1969. 02920
  1970. 02921 #define NULL     ((void *)0)    /* null pointer */
  1971. 02922 #define CPVEC_NR          16    /* max # of entries in a SYS_VCOPY request */
  1972. 02923 #define NR_IOREQS       MIN(NR_BUFS, 64)
  1973. 02924                                 /* maximum number of entries in an iorequest */
  1974. 02925
  1975. 02926 #define NR_SEGS            3    /* # segments per process */
  1976. 02927 #define T                  0    /* proc[i].mem_map[T] is for text */
  1977. 02928 #define D                  1    /* proc[i].mem_map[D] is for data */
  1978. 02929 #define S                  2    /* proc[i].mem_map[S] is for stack */
  1979. 02930
  1980. 02931 /* Process numbers of some important processes. */
  1981. 02932 #define MM_PROC_NR         0    /* process number of memory manager */
  1982. 02933 #define FS_PROC_NR         1    /* process number of file system */
  1983. 02934 #define INET_PROC_NR       2    /* process number of the TCP/IP server */
  1984. 02935 #define INIT_PROC_NR    (INET_PROC_NR + ENABLE_NETWORKING)
  1985. 02936                                 /* init -- the process that goes multiuser */
  1986. 02937 #define LOW_USER        (INET_PROC_NR + ENABLE_NETWORKING)
  1987. 02938                                 /* first user not part of operating system */
  1988. 02939
  1989. 02940 /* Miscellaneous */
  1990. 02941 #define BYTE            0377    /* mask for 8 bits */
  1991. 02942 #define READING            0    /* copy data to user */
  1992. 02943 #define WRITING            1    /* copy data from user */
  1993. 02944 #define NO_NUM        0x8000    /* used as numerical argument to panic() */
  1994. 02945 #define NIL_PTR   (char *) 0    /* generally useful expression */
  1995. 02946 #define HAVE_SCATTERED_IO  1    /* scattered I/O is now standard */
  1996. 02947
  1997. 02948 /* Macros. */
  1998. 02949 #define MAX(a, b)   ((a) > (b) ? (a) : (b))
  1999. 02950 #define MIN(a, b)   ((a) < (b) ? (a) : (b))
  2000. 02951
  2001. 02952 /* Number of tasks. */
  2002. 02953 #define NR_TASKS        (9 + ENABLE_WINI + ENABLE_SCSI + ENABLE_CDROM 
  2003. 02954                         + ENABLE_NETWORKING + 2 * ENABLE_AUDIO)
  2004. .Op 35 include/minix/const.h
  2005. 02955
  2006. 02956 /* Memory is allocated in clicks. */
  2007. 02957 #if (CHIP == INTEL)
  2008. 02958 #define CLICK_SIZE       256    /* unit in which memory is allocated */
  2009. 02959 #define CLICK_SHIFT        8    /* log2 of CLICK_SIZE */
  2010. 02960 #endif
  2011. 02961
  2012. 02962 #if (CHIP == SPARC) || (CHIP == M68000)
  2013. 02963 #define CLICK_SIZE      4096    /* unit in which memory is alocated */
  2014. 02964 #define CLICK_SHIFT       12    /* 2log of CLICK_SIZE */
  2015. 02965 #endif
  2016. 02966
  2017. 02967 #define click_to_round_k(n) 
  2018. 02968         ((unsigned) ((((unsigned long) (n) << CLICK_SHIFT) + 512) / 1024))
  2019. 02969 #if CLICK_SIZE < 1024
  2020. 02970 #define k_to_click(n) ((n) * (1024 / CLICK_SIZE))
  2021. 02971 #else
  2022. 02972 #define k_to_click(n) ((n) / (CLICK_SIZE / 1024))
  2023. 02973 #endif
  2024. 02974
  2025. 02975 #define ABS             -999    /* this process means absolute memory */
  2026. 02976
  2027. 02977 /* Flag bits for i_mode in the inode. */
  2028. 02978 #define I_TYPE          0170000 /* this field gives inode type */
  2029. 02979 #define I_REGULAR       0100000 /* regular file, not dir or special */
  2030. 02980 #define I_BLOCK_SPECIAL 0060000 /* block special file */
  2031. 02981 #define I_DIRECTORY     0040000 /* file is a directory */
  2032. 02982 #define I_CHAR_SPECIAL  0020000 /* character special file */
  2033. 02983 #define I_NAMED_PIPE    0010000 /* named pipe (FIFO) */
  2034. 02984 #define I_SET_UID_BIT   0004000 /* set effective uid_t on exec */
  2035. 02985 #define I_SET_GID_BIT   0002000 /* set effective gid_t on exec */
  2036. 02986 #define ALL_MODES       0006777 /* all bits for user, group and others */
  2037. 02987 #define RWX_MODES       0000777 /* mode bits for RWX only */
  2038. 02988 #define R_BIT           0000004 /* Rwx protection bit */
  2039. 02989 #define W_BIT           0000002 /* rWx protection bit */
  2040. 02990 #define X_BIT           0000001 /* rwX protection bit */
  2041. 02991 #define I_NOT_ALLOC     0000000 /* this inode is free */
  2042. 02992
  2043. 02993 /* Some limits. */
  2044. 02994 #define MAX_BLOCK_NR  ((block_t) 077777777)     /* largest block number */
  2045. 02995 #define HIGHEST_ZONE   ((zone_t) 077777777)     /* largest zone number */
  2046. 02996 #define MAX_INODE_NR      ((ino_t) 0177777)     /* largest inode number */
  2047. 02997 #define MAX_FILE_POS ((off_t) 037777777777)     /* largest legal file offset */
  2048. 02998
  2049. 02999 #define NO_BLOCK              ((block_t) 0)     /* absence of a block number */
  2050. 03000 #define NO_ENTRY                ((ino_t) 0)     /* absence of a dir entry */
  2051. 03001 #define NO_ZONE                ((zone_t) 0)     /* absence of a zone number */
  2052. 03002 #define NO_DEV                  ((dev_t) 0)     /* absence of a device numb */
  2053. .Ep 36 include/minix/type.h
  2054. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2055. include/minix/type.h    
  2056. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2057. 03100 #ifndef _TYPE_H
  2058. 03101 #define _TYPE_H
  2059. 03102 #ifndef _MINIX_TYPE_H
  2060. 03103 #define _MINIX_TYPE_H
  2061. 03104
  2062. 03105 /* Type definitions. */
  2063. 03106 typedef unsigned int vir_clicks; /* virtual  addresses and lengths in clicks */
  2064. 03107 typedef unsigned long phys_bytes;/* physical addresses and lengths in bytes */
  2065. 03108 typedef unsigned int phys_clicks;/* physical addresses and lengths in clicks */
  2066. 03109
  2067. 03110 #if (CHIP == INTEL)
  2068. 03111 typedef unsigned int vir_bytes; /* virtual addresses and lengths in bytes */
  2069. 03112 #endif
  2070. 03113
  2071. 03114 #if (CHIP == M68000)
  2072. 03115 typedef unsigned long vir_bytes;/* virtual addresses and lengths in bytes */
  2073. 03116 #endif
  2074. 03117
  2075. 03118 #if (CHIP == SPARC)
  2076. 03119 typedef unsigned long vir_bytes;/* virtual addresses and lengths in bytes */
  2077. 03120 #endif
  2078. 03121
  2079. 03122 /* Types relating to messages. */
  2080. 03123 #define M1                 1
  2081. 03124 #define M3                 3
  2082. 03125 #define M4                 4
  2083. 03126 #define M3_STRING         14
  2084. 03127
  2085. 03128 typedef struct {int m1i1, m1i2, m1i3; char *m1p1, *m1p2, *m1p3;} mess_1;
  2086. 03129 typedef struct {int m2i1, m2i2, m2i3; long m2l1, m2l2; char *m2p1;} mess_2;
  2087. 03130 typedef struct {int m3i1, m3i2; char *m3p1; char m3ca1[M3_STRING];} mess_3;
  2088. 03131 typedef struct {long m4l1, m4l2, m4l3, m4l4, m4l5;} mess_4;
  2089. 03132 typedef struct {char m5c1, m5c2; int m5i1, m5i2; long m5l1, m5l2, m5l3;}mess_5;
  2090. 03133 typedef struct {int m6i1, m6i2, m6i3; long m6l1; sighandler_t m6f1;} mess_6;
  2091. 03134
  2092. 03135 typedef struct {
  2093. 03136   int m_source;                 /* who sent the message */
  2094. 03137   int m_type;                   /* what kind of message is it */
  2095. 03138   union {
  2096. 03139         mess_1 m_m1;
  2097. 03140         mess_2 m_m2;
  2098. 03141         mess_3 m_m3;
  2099. 03142         mess_4 m_m4;
  2100. 03143         mess_5 m_m5;
  2101. 03144         mess_6 m_m6;
  2102. 03145   } m_u;
  2103. 03146 } message;
  2104. 03147
  2105. 03148 /* The following defines provide names for useful members. */
  2106. 03149 #define m1_i1  m_u.m_m1.m1i1
  2107. 03150 #define m1_i2  m_u.m_m1.m1i2
  2108. 03151 #define m1_i3  m_u.m_m1.m1i3
  2109. 03152 #define m1_p1  m_u.m_m1.m1p1
  2110. 03153 #define m1_p2  m_u.m_m1.m1p2
  2111. 03154 #define m1_p3  m_u.m_m1.m1p3
  2112. .Op 37 include/minix/type.h
  2113. 03155
  2114. 03156 #define m2_i1  m_u.m_m2.m2i1
  2115. 03157 #define m2_i2  m_u.m_m2.m2i2
  2116. 03158 #define m2_i3  m_u.m_m2.m2i3
  2117. 03159 #define m2_l1  m_u.m_m2.m2l1
  2118. 03160 #define m2_l2  m_u.m_m2.m2l2
  2119. 03161 #define m2_p1  m_u.m_m2.m2p1
  2120. 03162
  2121. 03163 #define m3_i1  m_u.m_m3.m3i1
  2122. 03164 #define m3_i2  m_u.m_m3.m3i2
  2123. 03165 #define m3_p1  m_u.m_m3.m3p1
  2124. 03166 #define m3_ca1 m_u.m_m3.m3ca1
  2125. 03167
  2126. 03168 #define m4_l1  m_u.m_m4.m4l1
  2127. 03169 #define m4_l2  m_u.m_m4.m4l2
  2128. 03170 #define m4_l3  m_u.m_m4.m4l3
  2129. 03171 #define m4_l4  m_u.m_m4.m4l4
  2130. 03172 #define m4_l5  m_u.m_m4.m4l5
  2131. 03173
  2132. 03174 #define m5_c1  m_u.m_m5.m5c1
  2133. 03175 #define m5_c2  m_u.m_m5.m5c2
  2134. 03176 #define m5_i1  m_u.m_m5.m5i1
  2135. 03177 #define m5_i2  m_u.m_m5.m5i2
  2136. 03178 #define m5_l1  m_u.m_m5.m5l1
  2137. 03179 #define m5_l2  m_u.m_m5.m5l2
  2138. 03180 #define m5_l3  m_u.m_m5.m5l3
  2139. 03181
  2140. 03182 #define m6_i1  m_u.m_m6.m6i1
  2141. 03183 #define m6_i2  m_u.m_m6.m6i2
  2142. 03184 #define m6_i3  m_u.m_m6.m6i3
  2143. 03185 #define m6_l1  m_u.m_m6.m6l1
  2144. 03186 #define m6_f1  m_u.m_m6.m6f1
  2145. 03187
  2146. 03188 struct mem_map {
  2147. 03189   vir_clicks mem_vir;           /* virtual address */
  2148. 03190   phys_clicks mem_phys;         /* physical address */
  2149. 03191   vir_clicks mem_len;           /* length */
  2150. 03192 };
  2151. 03193
  2152. 03194 struct iorequest_s {
  2153. 03195   long io_position;             /* position in device file (really off_t) */
  2154. 03196   char *io_buf;                 /* buffer in user space */
  2155. 03197   int io_nbytes;                /* size of request */
  2156. 03198   unsigned short io_request;    /* read, write (optionally) */
  2157. 03199 };
  2158. 03200 #endif /* _TYPE_H */
  2159. 03201
  2160. 03202 typedef struct {
  2161. 03203   vir_bytes iov_addr;           /* address of an I/O buffer */
  2162. 03204   vir_bytes iov_size;           /* sizeof an I/O buffer */
  2163. 03205 } iovec_t;
  2164. 03206
  2165. 03207 typedef struct {
  2166. 03208   vir_bytes cpv_src;            /* src address of data */
  2167. 03209   vir_bytes cpv_dst;            /* dst address of data */
  2168. 03210   vir_bytes cpv_size;           /* size of data */
  2169. 03211 } cpvec_t;
  2170. 03212
  2171. 03213 /* MM passes the address of a structure of this type to KERNEL when
  2172. 03214  * do_sendsig() is invoked as part of the signal catching mechanism.
  2173. .Ep 38 include/minix/type.h
  2174. 03215  * The structure contain all the information that KERNEL needs to build
  2175. 03216  * the signal stack.
  2176. 03217  */
  2177. 03218 struct sigmsg {
  2178. 03219   int sm_signo;                 /* signal number being caught */
  2179. 03220   unsigned long sm_mask;        /* mask to restore when handler returns */
  2180. 03221   vir_bytes sm_sighandler;      /* address of handler */
  2181. 03222   vir_bytes sm_sigreturn;       /* address of _sigreturn in C library */
  2182. 03223   vir_bytes sm_stkptr;          /* user stack pointer */
  2183. 03224 };
  2184. 03225
  2185. 03226 #define MESS_SIZE (sizeof(message))     /* might need usizeof from fs here */
  2186. 03227 #define NIL_MESS ((message *) 0)
  2187. 03228
  2188. 03229 struct psinfo {         /* information for the ps(1) program */
  2189. 03230   u16_t nr_tasks, nr_procs;     /* NR_TASKS and NR_PROCS constants. */
  2190. 03231   vir_bytes proc, mproc, fproc; /* addresses of the main process tables. */
  2191. 03232 };
  2192. 03233
  2193. 03234 #endif /* _MINIX_TYPE_H */
  2194. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2195. include/minix/syslib.h    
  2196. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2197. 03300 /* Prototypes for system library functions. */
  2198. 03301
  2199. 03302 #ifndef _SYSLIB_H
  2200. 03303 #define _SYSLIB_H
  2201. 03304
  2202. 03305 /* Hide names to avoid name space pollution. */
  2203. 03306 #define sendrec         _sendrec
  2204. 03307 #define receive         _receive
  2205. 03308 #define send            _send
  2206. 03309
  2207. 03310 /* Minix user+system library. */
  2208. 03311 _PROTOTYPE( void printk, (char *_fmt, ...)                              );
  2209. 03312 _PROTOTYPE( int sendrec, (int _src_dest, message *_m_ptr)               );
  2210. 03313 _PROTOTYPE( int _taskcall, (int _who, int _syscallnr, message *_msgptr) );
  2211. 03314
  2212. 03315 /* Minix system library. */
  2213. 03316 _PROTOTYPE( int receive, (int _src, message *_m_ptr)                    );
  2214. 03317 _PROTOTYPE( int send, (int _dest, message *_m_ptr)                      );
  2215. 03318
  2216. 03319 _PROTOTYPE( int sys_abort, (int _how, ...)                              );
  2217. 03320 _PROTOTYPE( int sys_adjmap, (int _proc, struct mem_map *_ptr, 
  2218. 03321                 vir_clicks _data_clicks, vir_clicks _sp)                );
  2219. 03322 _PROTOTYPE( int sys_copy, (int _src_proc, int _src_seg, phys_bytes _src_vir, 
  2220. 03323         int _dst_proc, int _dst_seg, phys_bytes _dst_vir, phys_bytes _bytes));
  2221. 03324 _PROTOTYPE( int sys_exec, (int _proc, char *_ptr, int _traced, 
  2222. 03325                                 char *_aout, vir_bytes _initpc)         );
  2223. 03326 _PROTOTYPE( int sys_execmap, (int _proc, struct mem_map *_ptr)          );
  2224. 03327 _PROTOTYPE( int sys_fork, (int _parent, int _child, int _pid, 
  2225. 03328                                         phys_clicks _shadow)            );
  2226. 03329 _PROTOTYPE( int sys_fresh, (int _proc, struct mem_map *_ptr,
  2227. .Op 39 include/minix/syslib.h
  2228. 03330         phys_clicks _dc, phys_clicks *_basep, phys_clicks *_sizep)      );
  2229. 03331 _PROTOTYPE( int sys_getsp, (int _proc, vir_bytes *_newsp)               );
  2230. 03332 _PROTOTYPE( int sys_newmap, (int _proc, struct mem_map *_ptr)           );
  2231. 03333 _PROTOTYPE( int sys_getmap, (int _proc, struct mem_map *_ptr)           );
  2232. 03334 _PROTOTYPE( int sys_sendsig, (int _proc, struct sigmsg *_ptr)           );
  2233. 03335 _PROTOTYPE( int sys_oldsig, (int _proc, int _sig, sighandler_t _sighandler));
  2234. 03336 _PROTOTYPE( int sys_endsig, (int _proc)                                 );
  2235. 03337 _PROTOTYPE( int sys_sigreturn, (int _proc, vir_bytes _scp, int _flags)  );
  2236. 03338 _PROTOTYPE( int sys_trace, (int _req, int _procnr, long _addr, long *_data_p));
  2237. 03339 _PROTOTYPE( int sys_xit, (int _parent, int _proc, phys_clicks *_basep, 
  2238. 03340                                                  phys_clicks *_sizep));
  2239. 03341 _PROTOTYPE( int sys_kill, (int _proc, int _sig)                         );
  2240. 03342 _PROTOTYPE( int sys_times, (int _proc, clock_t _ptr[5])                 );
  2241. 03343
  2242. 03344 #endif /* _SYSLIB_H */
  2243. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2244. include/minix/callnr.h    
  2245. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2246. 03400 #define NCALLS            77    /* number of system calls allowed */
  2247. 03401
  2248. 03402 #define EXIT               1 
  2249. 03403 #define FORK               2 
  2250. 03404 #define READ               3 
  2251. 03405 #define WRITE              4 
  2252. 03406 #define OPEN               5 
  2253. 03407 #define CLOSE              6 
  2254. 03408 #define WAIT               7
  2255. 03409 #define CREAT              8 
  2256. 03410 #define LINK               9 
  2257. 03411 #define UNLINK            10 
  2258. 03412 #define WAITPID           11
  2259. 03413 #define CHDIR             12 
  2260. 03414 #define TIME              13
  2261. 03415 #define MKNOD             14 
  2262. 03416 #define CHMOD             15 
  2263. 03417 #define CHOWN             16 
  2264. 03418 #define BRK               17
  2265. 03419 #define STAT              18 
  2266. 03420 #define LSEEK             19
  2267. 03421 #define GETPID            20
  2268. 03422 #define MOUNT             21 
  2269. 03423 #define UMOUNT            22 
  2270. 03424 #define SETUID            23
  2271. 03425 #define GETUID            24
  2272. 03426 #define STIME             25
  2273. 03427 #define PTRACE            26
  2274. 03428 #define ALARM             27
  2275. 03429 #define FSTAT             28 
  2276. 03430 #define PAUSE             29
  2277. 03431 #define UTIME             30 
  2278. 03432 #define ACCESS            33 
  2279. 03433 #define SYNC              36 
  2280. 03434 #define KILL              37
  2281. .Ep 40 include/minix/callnr.h
  2282. 03435 #define RENAME            38
  2283. 03436 #define MKDIR             39
  2284. 03437 #define RMDIR             40
  2285. 03438 #define DUP               41 
  2286. 03439 #define PIPE              42 
  2287. 03440 #define TIMES             43
  2288. 03441 #define SETGID            46
  2289. 03442 #define GETGID            47
  2290. 03443 #define SIGNAL            48
  2291. 03444 #define IOCTL             54
  2292. 03445 #define FCNTL             55
  2293. 03446 #define EXEC              59
  2294. 03447 #define UMASK             60 
  2295. 03448 #define CHROOT            61 
  2296. 03449 #define SETSID            62
  2297. 03450 #define GETPGRP           63
  2298. 03451
  2299. 03452 /* The following are not system calls, but are processed like them. */
  2300. 03453 #define KSIG              64    /* kernel detected a signal */
  2301. 03454 #define UNPAUSE           65    /* to MM or FS: check for EINTR */
  2302. 03455 #define REVIVE            67    /* to FS: revive a sleeping process */
  2303. 03456 #define TASK_REPLY        68    /* to FS: reply code from tty task */
  2304. 03457
  2305. 03458 /* Posix signal handling. */
  2306. 03459 #define SIGACTION         71
  2307. 03460 #define SIGSUSPEND        72
  2308. 03461 #define SIGPENDING        73
  2309. 03462 #define SIGPROCMASK       74
  2310. 03463 #define SIGRETURN         75
  2311. 03464
  2312. 03465 #define REBOOT            76
  2313. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2314. include/minix/com.h    
  2315. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2316. 03500 /* System calls. */
  2317. 03501 #define SEND               1    /* function code for sending messages */
  2318. 03502 #define RECEIVE            2    /* function code for receiving messages */
  2319. 03503 #define BOTH               3    /* function code for SEND + RECEIVE */
  2320. 03504 #define ANY   (NR_PROCS+100)    /* receive(ANY, buf) accepts from any source */
  2321. 03505
  2322. 03506 /* Task numbers, function codes and reply codes. */
  2323. 03507
  2324. 03508 /* The values of several task numbers depend on whether they or other tasks
  2325. 03509  * are enabled.  They are defined as (PREVIOUS_TASK - ENABLE_TASK) in general.
  2326. 03510  * ENABLE_TASK is either 0 or 1, so a task either gets a new number, or gets
  2327. 03511  * the same number as the previous task and is further unused.
  2328. 03512  * The TTY task must always have the most negative number so that it is
  2329. 03513  * initialized first.  Many of the TTY function codes are shared with other
  2330. 03514  * tasks.
  2331. 03515  */
  2332. 03516
  2333. 03517 #define TTY             (DL_ETH - 1)
  2334. 03518                                 /* terminal I/O class */
  2335. 03519 #       define CANCEL       0   /* general req to force a task to cancel */
  2336. .Op 41 include/minix/com.h
  2337. 03520 #       define HARD_INT     2   /* fcn code for all hardware interrupts */
  2338. 03521 #       define DEV_READ     3   /* fcn code for reading from tty */
  2339. 03522 #       define DEV_WRITE    4   /* fcn code for writing to tty */
  2340. 03523 #       define DEV_IOCTL    5   /* fcn code for ioctl */
  2341. 03524 #       define DEV_OPEN     6   /* fcn code for opening tty */
  2342. 03525 #       define DEV_CLOSE    7   /* fcn code for closing tty */
  2343. 03526 #       define SCATTERED_IO 8   /* fcn code for multiple reads/writes */
  2344. 03527 #       define TTY_SETPGRP  9   /* fcn code for setpgroup */
  2345. 03528 #       define TTY_EXIT    10   /* a process group leader has exited */ 
  2346. 03529 #       define OPTIONAL_IO 16   /* modifier to DEV_* codes within vector */
  2347. 03530 #       define SUSPEND   -998   /* used in interrupts when tty has no data */
  2348. 03531
  2349. 03532 #define DL_ETH          (CDROM - ENABLE_NETWORKING)
  2350. 03533                                 /* networking task */
  2351. 03534
  2352. 03535 /* Message type for data link layer reqests. */
  2353. 03536 #       define DL_WRITE         3
  2354. 03537 #       define DL_WRITEV        4
  2355. 03538 #       define DL_READ          5
  2356. 03539 #       define DL_READV         6
  2357. 03540 #       define DL_INIT          7
  2358. 03541 #       define DL_STOP          8
  2359. 03542 #       define DL_GETSTAT       9
  2360. 03543
  2361. 03544 /* Message type for data link layer replies. */
  2362. 03545 #       define DL_INIT_REPLY    20
  2363. 03546 #       define DL_TASK_REPLY    21
  2364. 03547
  2365. 03548 #       define DL_PORT          m2_i1
  2366. 03549 #       define DL_PROC          m2_i2
  2367. 03550 #       define DL_COUNT         m2_i3
  2368. 03551 #       define DL_MODE          m2_l1
  2369. 03552 #       define DL_CLCK          m2_l2
  2370. 03553 #       define DL_ADDR          m2_p1
  2371. 03554 #       define DL_STAT          m2_l1
  2372. 03555
  2373. 03556 /* Bits in 'DL_STAT' field of DL replies. */
  2374. 03557 #       define DL_PACK_SEND     0x01
  2375. 03558 #       define DL_PACK_RECV     0x02
  2376. 03559 #       define DL_READ_IP       0x04
  2377. 03560
  2378. 03561 /* Bits in 'DL_MODE' field of DL requests. */
  2379. 03562 #       define DL_NOMODE        0x0
  2380. 03563 #       define DL_PROMISC_REQ   0x2
  2381. 03564 #       define DL_MULTI_REQ     0x4
  2382. 03565 #       define DL_BROAD_REQ     0x8
  2383. 03566
  2384. 03567 #       define NW_OPEN          DEV_OPEN
  2385. 03568 #       define NW_CLOSE         DEV_CLOSE
  2386. 03569 #       define NW_READ          DEV_READ
  2387. 03570 #       define NW_WRITE         DEV_WRITE
  2388. 03571 #       define NW_IOCTL         DEV_IOCTL
  2389. 03572 #       define NW_CANCEL        CANCEL
  2390. 03573
  2391. 03574 #define CDROM           (AUDIO - ENABLE_CDROM)
  2392. 03575                                 /* cd-rom device task */
  2393. 03576
  2394. 03577 #define AUDIO           (MIXER - ENABLE_AUDIO)
  2395. 03578 #define MIXER           (SCSI - ENABLE_AUDIO)
  2396. 03579                                 /* audio & mixer device tasks */
  2397. .Ep 42 include/minix/com.h
  2398. 03580
  2399. 03581 #define SCSI            (WINCHESTER - ENABLE_SCSI)
  2400. 03582                                 /* scsi device task */
  2401. 03583
  2402. 03584 #define WINCHESTER      (SYN_ALRM_TASK - ENABLE_WINI)
  2403. 03585                                 /* winchester (hard) disk class */
  2404. 03586
  2405. 03587 #define SYN_ALRM_TASK     -8    /* task to send CLOCK_INT messages */
  2406. 03588
  2407. 03589 #define IDLE              -7    /* task to run when there's nothing to run */
  2408. 03590
  2409. 03591 #define PRINTER           -6    /* printer I/O class */
  2410. 03592
  2411. 03593 #define FLOPPY            -5    /* floppy disk class */
  2412. 03594
  2413. 03595 #define MEM               -4    /* /dev/ram, /dev/(k)mem and /dev/null class */
  2414. 03596 #       define NULL_MAJOR  1    /* major device for /dev/null */
  2415. 03597 #       define RAM_DEV     0    /* minor device for /dev/ram */
  2416. 03598 #       define MEM_DEV     1    /* minor device for /dev/mem */
  2417. 03599 #       define KMEM_DEV    2    /* minor device for /dev/kmem */
  2418. 03600 #       define NULL_DEV    3    /* minor device for /dev/null */
  2419. 03601
  2420. 03602 #define CLOCK             -3    /* clock class */
  2421. 03603 #       define SET_ALARM   1    /* fcn code to CLOCK, set up alarm */
  2422. 03604 #       define GET_TIME    3    /* fcn code to CLOCK, get real time */
  2423. 03605 #       define SET_TIME    4    /* fcn code to CLOCK, set real time */
  2424. 03606 #       define GET_UPTIME  5    /* fcn code to CLOCK, get uptime */
  2425. 03607 #       define SET_SYNC_AL 6    /* fcn code to CLOCK, set up alarm which */
  2426. 03608                                 /* times out with a send */
  2427. 03609 #       define REAL_TIME   1    /* reply from CLOCK: here is real time */
  2428. 03610 #       define CLOCK_INT   HARD_INT
  2429. 03611                                 /* this code will only be sent by */
  2430. 03612                                 /* SYN_ALRM_TASK to a task that requested a */
  2431. 03613                                 /* synchronous alarm */
  2432. 03614
  2433. 03615 #define SYSTASK           -2    /* internal functions */
  2434. 03616 #       define SYS_XIT        1 /* fcn code for sys_xit(parent, proc) */
  2435. 03617 #       define SYS_GETSP      2 /* fcn code for sys_sp(proc, &new_sp) */
  2436. 03618 #       define SYS_OLDSIG     3 /* fcn code for sys_oldsig(proc, sig) */
  2437. 03619 #       define SYS_FORK       4 /* fcn code for sys_fork(parent, child) */
  2438. 03620 #       define SYS_NEWMAP     5 /* fcn code for sys_newmap(procno, map_ptr) */
  2439. 03621 #       define SYS_COPY       6 /* fcn code for sys_copy(ptr) */
  2440. 03622 #       define SYS_EXEC       7 /* fcn code for sys_exec(procno, new_sp) */
  2441. 03623 #       define SYS_TIMES      8 /* fcn code for sys_times(procno, bufptr) */
  2442. 03624 #       define SYS_ABORT      9 /* fcn code for sys_abort() */
  2443. 03625 #       define SYS_FRESH     10 /* fcn code for sys_fresh()  (Atari only) */
  2444. 03626 #       define SYS_KILL      11 /* fcn code for sys_kill(proc, sig) */
  2445. 03627 #       define SYS_GBOOT     12 /* fcn code for sys_gboot(procno, bootptr) */
  2446. 03628 #       define SYS_UMAP      13 /* fcn code for sys_umap(procno, etc) */
  2447. 03629 #       define SYS_MEM       14 /* fcn code for sys_mem() */
  2448. 03630 #       define SYS_TRACE     15 /* fcn code for sys_trace(req,pid,addr,data) */
  2449. 03631 #       define SYS_VCOPY     16 /* fnc code for sys_vcopy(src_proc, dest_proc,
  2450. 03632                                    vcopy_s, vcopy_ptr) */
  2451. 03633 #       define SYS_SENDSIG   17 /* fcn code for sys_sendsig(&sigmsg) */
  2452. 03634 #       define SYS_SIGRETURN 18 /* fcn code for sys_sigreturn(&sigmsg) */
  2453. 03635 #       define SYS_ENDSIG    19 /* fcn code for sys_endsig(procno) */
  2454. 03636 #       define SYS_GETMAP    20 /* fcn code for sys_getmap(procno, map_ptr) */
  2455. 03637
  2456. 03638 #define HARDWARE          -1    /* used as source on interrupt generated msgs*/
  2457. 03639
  2458. .Op 43 include/minix/com.h
  2459. 03640 /* Names of message fields for messages to CLOCK task. */
  2460. 03641 #define DELTA_TICKS    m6_l1    /* alarm interval in clock ticks */
  2461. 03642 #define FUNC_TO_CALL   m6_f1    /* pointer to function to call */
  2462. 03643 #define NEW_TIME       m6_l1    /* value to set clock to (SET_TIME) */
  2463. 03644 #define CLOCK_PROC_NR  m6_i1    /* which proc (or task) wants the alarm? */
  2464. 03645 #define SECONDS_LEFT   m6_l1    /* how many seconds were remaining */
  2465. 03646
  2466. 03647 /* Names of message fields used for messages to block and character tasks. */
  2467. 03648 #define DEVICE         m2_i1    /* major-minor device */
  2468. 03649 #define PROC_NR        m2_i2    /* which (proc) wants I/O? */
  2469. 03650 #define COUNT          m2_i3    /* how many bytes to transfer */
  2470. 03651 #define REQUEST        m2_i3    /* ioctl request code */
  2471. 03652 #define POSITION       m2_l1    /* file offset */
  2472. 03653 #define ADDRESS        m2_p1    /* core buffer address */
  2473. 03654
  2474. 03655 /* Names of message fields for messages to TTY task. */
  2475. 03656 #define TTY_LINE       DEVICE   /* message parameter: terminal line */
  2476. 03657 #define TTY_REQUEST    COUNT    /* message parameter: ioctl request code */
  2477. 03658 #define TTY_SPEK       POSITION /* message parameter: ioctl speed, erasing */
  2478. 03659 #define TTY_FLAGS      m2_l2    /* message parameter: ioctl tty mode */
  2479. 03660 #define TTY_PGRP       m2_i3    /* message parameter: process group */  
  2480. 03661
  2481. 03662 /* Names of the message fields for QIC 02 status reply from tape driver */
  2482. 03663 #define TAPE_STAT0      m2_l1
  2483. 03664 #define TAPE_STAT1      m2_l2
  2484. 03665
  2485. 03666 /* Names of messages fields used in reply messages from tasks. */
  2486. 03667 #define REP_PROC_NR    m2_i1    /* # of proc on whose behalf I/O was done */
  2487. 03668 #define REP_STATUS     m2_i2    /* bytes transferred or error number */
  2488. 03669
  2489. 03670 /* Names of fields for copy message to SYSTASK. */
  2490. 03671 #define SRC_SPACE      m5_c1    /* T or D space (stack is also D) */
  2491. 03672 #define SRC_PROC_NR    m5_i1    /* process to copy from */
  2492. 03673 #define SRC_BUFFER     m5_l1    /* virtual address where data come from */
  2493. 03674 #define DST_SPACE      m5_c2    /* T or D space (stack is also D) */
  2494. 03675 #define DST_PROC_NR    m5_i2    /* process to copy to */
  2495. 03676 #define DST_BUFFER     m5_l2    /* virtual address where data go to */
  2496. 03677 #define COPY_BYTES     m5_l3    /* number of bytes to copy */
  2497. 03678
  2498. 03679 /* Field names for accounting, SYSTASK and miscellaneous. */
  2499. 03680 #define USER_TIME      m4_l1    /* user time consumed by process */
  2500. 03681 #define SYSTEM_TIME    m4_l2    /* system time consumed by process */
  2501. 03682 #define CHILD_UTIME    m4_l3    /* user time consumed by process' children */
  2502. 03683 #define CHILD_STIME    m4_l4    /* sys time consumed by process' children */
  2503. 03684 #define BOOT_TICKS     m4_l5    /* number of clock ticks since boot time */
  2504. 03685
  2505. 03686 #define PROC1          m1_i1    /* indicates a process */
  2506. 03687 #define PROC2          m1_i2    /* indicates a process */
  2507. 03688 #define PID            m1_i3    /* process id passed from MM to kernel */
  2508. 03689 #define STACK_PTR      m1_p1    /* used for stack ptr in sys_exec, sys_getsp */
  2509. 03690 #define PR             m6_i1    /* process number for sys_sig */
  2510. 03691 #define SIGNUM         m6_i2    /* signal number for sys_sig */
  2511. 03692 #define FUNC           m6_f1    /* function pointer for sys_sig */
  2512. 03693 #define MEM_PTR        m1_p1    /* tells where memory map is for sys_newmap */
  2513. 03694 #define NAME_PTR       m1_p2    /* tells where program name is for dmp */
  2514. 03695 #define IP_PTR         m1_p3    /* initial value for ip after exec */
  2515. 03696 #define SIG_PROC       m2_i1    /* process number for inform */
  2516. 03697 #define SIG_MAP        m2_l1    /* used by kernel for passing signal bit map */
  2517. 03698 #define SIG_MSG_PTR    m1_i1    /* pointer to info to build sig catch stack */
  2518. 03699 #define SIG_CTXT_PTR   m1_p1    /* pointer to info to restore signal context */
  2519. .Ep 44 include/minix/boot.h
  2520. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2521. include/minix/boot.h    
  2522. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2523. 03700 /* boot.h */
  2524. 03701
  2525. 03702 #ifndef _BOOT_H
  2526. 03703 #define _BOOT_H
  2527. 03704
  2528. 03705 /* Redefine root and root image devices as variables.
  2529. 03706  * This keeps the diffs small but may cause future confusion.
  2530. 03707  */
  2531. 03708 #define ROOT_DEV   (boot_parameters.bp_rootdev)
  2532. 03709 #define IMAGE_DEV  (boot_parameters.bp_ramimagedev)
  2533. 03710
  2534. 03711 /* Device numbers of RAM, floppy and hard disk devices.
  2535. 03712  * h/com.h defines RAM_DEV but only as the minor number.
  2536. 03713  */
  2537. 03714 #define DEV_FD0   0x200
  2538. 03715 #define DEV_HD0   0x300
  2539. 03716 #define DEV_RAM   0x100
  2540. 03717 #define DEV_SCSI  0x700 /* Atari TT only */
  2541. 03718
  2542. 03719 /* Structure to hold boot parameters. */
  2543. 03720 struct bparam_s
  2544. 03721 {
  2545. 03722   dev_t bp_rootdev;
  2546. 03723   dev_t bp_ramimagedev;
  2547. 03724   unsigned short bp_ramsize;
  2548. 03725   unsigned short bp_processor;
  2549. 03726 };
  2550. 03727
  2551. 03728 extern struct bparam_s boot_parameters;
  2552. 03729 #endif /* _BOOT_H */
  2553. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2554. include/minix/keymap.h    
  2555. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2556. 03800 /*      keymap.h - defines for keymapping               Author: Marcus Hampel
  2557. 03801  */
  2558. 03802 #ifndef _SYS__KEYMAP_H
  2559. 03803 #define _SYS__KEYMAP_H
  2560. 03804
  2561. 03805 #define C(c)    ((c) & 0x1F)    /* Map to control code          */
  2562. 03806 #define A(c)    ((c) | 0x80)    /* Set eight bit (ALT)          */
  2563. 03807 #define CA(c)   A(C(c))         /* Control-Alt                  */
  2564. 03808 #define L(c)    ((c) | HASCAPS) /* Add "Caps Lock has effect" attribute */
  2565. 03809
  2566. 03810 #define EXT     0x0100          /* Normal function keys         */
  2567. 03811 #define CTRL    0x0200          /* Control key                  */
  2568. 03812 #define SHIFT   0x0400          /* Shift key                    */
  2569. 03813 #define ALT     0x0800          /* Alternate key                */
  2570. 03814 #define EXTKEY  0x1000          /* extended keycode             */
  2571. .Op 45 include/minix/keymap.h
  2572. 03815 #define HASCAPS 0x8000          /* Caps Lock has effect         */
  2573. 03816
  2574. 03817 /* Numeric keypad */
  2575. 03818 #define HOME    (0x01 + EXT)
  2576. 03819 #define END     (0x02 + EXT)
  2577. 03820 #define UP      (0x03 + EXT)
  2578. 03821 #define DOWN    (0x04 + EXT)
  2579. 03822 #define LEFT    (0x05 + EXT)
  2580. 03823 #define RIGHT   (0x06 + EXT)
  2581. 03824 #define PGUP    (0x07 + EXT)
  2582. 03825 #define PGDN    (0x08 + EXT)
  2583. 03826 #define MID     (0x09 + EXT)
  2584. 03827 #define NMIN    (0x0A + EXT)
  2585. 03828 #define PLUS    (0x0B + EXT)
  2586. 03829 #define INSRT   (0x0C + EXT)
  2587. 03830
  2588. 03831 /* Alt + Numeric keypad */
  2589. 03832 #define AHOME   (0x01 + ALT)
  2590. 03833 #define AEND    (0x02 + ALT)
  2591. 03834 #define AUP     (0x03 + ALT)
  2592. 03835 #define ADOWN   (0x04 + ALT)
  2593. 03836 #define ALEFT   (0x05 + ALT)
  2594. 03837 #define ARIGHT  (0x06 + ALT)
  2595. 03838 #define APGUP   (0x07 + ALT)
  2596. 03839 #define APGDN   (0x08 + ALT)
  2597. 03840 #define AMID    (0x09 + ALT)
  2598. 03841 #define ANMIN   (0x0A + ALT)
  2599. 03842 #define APLUS   (0x0B + ALT)
  2600. 03843 #define AINSRT  (0x0C + ALT)
  2601. 03844
  2602. 03845 /* Ctrl + Numeric keypad */
  2603. 03846 #define CHOME   (0x01 + CTRL)
  2604. 03847 #define CEND    (0x02 + CTRL)
  2605. 03848 #define CUP     (0x03 + CTRL)
  2606. 03849 #define CDOWN   (0x04 + CTRL)
  2607. 03850 #define CLEFT   (0x05 + CTRL)
  2608. 03851 #define CRIGHT  (0x06 + CTRL)
  2609. 03852 #define CPGUP   (0x07 + CTRL)
  2610. 03853 #define CPGDN   (0x08 + CTRL)
  2611. 03854 #define CMID    (0x09 + CTRL)
  2612. 03855 #define CNMIN   (0x0A + CTRL)
  2613. 03856 #define CPLUS   (0x0B + CTRL)
  2614. 03857 #define CINSRT  (0x0C + CTRL)
  2615. 03858
  2616. 03859 /* Lock keys */
  2617. 03860 #define CALOCK  (0x0D + EXT)    /* caps lock    */
  2618. 03861 #define NLOCK   (0x0E + EXT)    /* number lock  */
  2619. 03862 #define SLOCK   (0x0F + EXT)    /* scroll lock  */
  2620. 03863
  2621. 03864 /* Function keys */
  2622. 03865 #define F1      (0x10 + EXT)
  2623. 03866 #define F2      (0x11 + EXT)
  2624. 03867 #define F3      (0x12 + EXT)
  2625. 03868 #define F4      (0x13 + EXT)
  2626. 03869 #define F5      (0x14 + EXT)
  2627. 03870 #define F6      (0x15 + EXT)
  2628. 03871 #define F7      (0x16 + EXT)
  2629. 03872 #define F8      (0x17 + EXT)
  2630. 03873 #define F9      (0x18 + EXT)
  2631. 03874 #define F10     (0x19 + EXT)
  2632. .Ep 46 include/minix/keymap.h
  2633. 03875 #define F11     (0x1A + EXT)
  2634. 03876 #define F12     (0x1B + EXT)
  2635. 03877
  2636. 03878 /* Alt+Fn */
  2637. 03879 #define AF1     (0x10 + ALT)
  2638. 03880 #define AF2     (0x11 + ALT)
  2639. 03881 #define AF3     (0x12 + ALT)
  2640. 03882 #define AF4     (0x13 + ALT)
  2641. 03883 #define AF5     (0x14 + ALT)
  2642. 03884 #define AF6     (0x15 + ALT)
  2643. 03885 #define AF7     (0x16 + ALT)
  2644. 03886 #define AF8     (0x17 + ALT)
  2645. 03887 #define AF9     (0x18 + ALT)
  2646. 03888 #define AF10    (0x19 + ALT)
  2647. 03889 #define AF11    (0x1A + ALT)
  2648. 03890 #define AF12    (0x1B + ALT)
  2649. 03891
  2650. 03892 /* Ctrl+Fn */
  2651. 03893 #define CF1     (0x10 + CTRL)
  2652. 03894 #define CF2     (0x11 + CTRL)
  2653. 03895 #define CF3     (0x12 + CTRL)
  2654. 03896 #define CF4     (0x13 + CTRL)
  2655. 03897 #define CF5     (0x14 + CTRL)
  2656. 03898 #define CF6     (0x15 + CTRL)
  2657. 03899 #define CF7     (0x16 + CTRL)
  2658. 03900 #define CF8     (0x17 + CTRL)
  2659. 03901 #define CF9     (0x18 + CTRL)
  2660. 03902 #define CF10    (0x19 + CTRL)
  2661. 03903 #define CF11    (0x1A + CTRL)
  2662. 03904 #define CF12    (0x1B + CTRL)
  2663. 03905
  2664. 03906 /* Shift+Fn */
  2665. 03907 #define SF1     (0x10 + SHIFT)
  2666. 03908 #define SF2     (0x11 + SHIFT)
  2667. 03909 #define SF3     (0x12 + SHIFT)
  2668. 03910 #define SF4     (0x13 + SHIFT)
  2669. 03911 #define SF5     (0x14 + SHIFT)
  2670. 03912 #define SF6     (0x15 + SHIFT)
  2671. 03913 #define SF7     (0x16 + SHIFT)
  2672. 03914 #define SF8     (0x17 + SHIFT)
  2673. 03915 #define SF9     (0x18 + SHIFT)
  2674. 03916 #define SF10    (0x19 + SHIFT)
  2675. 03917 #define SF11    (0x1A + SHIFT)
  2676. 03918 #define SF12    (0x1B + SHIFT)
  2677. 03919
  2678. 03920 /* Alt+Shift+Fn */
  2679. 03921 #define ASF1    (0x10 + ALT + SHIFT)
  2680. 03922 #define ASF2    (0x11 + ALT + SHIFT)
  2681. 03923 #define ASF3    (0x12 + ALT + SHIFT)
  2682. 03924 #define ASF4    (0x13 + ALT + SHIFT)
  2683. 03925 #define ASF5    (0x14 + ALT + SHIFT)
  2684. 03926 #define ASF6    (0x15 + ALT + SHIFT)
  2685. 03927 #define ASF7    (0x16 + ALT + SHIFT)
  2686. 03928 #define ASF8    (0x17 + ALT + SHIFT)
  2687. 03929 #define ASF9    (0x18 + ALT + SHIFT)
  2688. 03930 #define ASF10   (0x19 + ALT + SHIFT)
  2689. 03931 #define ASF11   (0x1A + ALT + SHIFT)
  2690. 03932 #define ASF12   (0x1B + ALT + SHIFT)
  2691. 03933
  2692. 03934 #define MAP_COLS        6       /* Number of columns in keymap */
  2693. .Op 47 include/minix/keymap.h
  2694. 03935 #define NR_SCAN_CODES   0x80    /* Number of scan codes (rows in keymap) */
  2695. 03936
  2696. 03937 typedef unsigned short keymap_t[NR_SCAN_CODES * MAP_COLS];
  2697. 03938
  2698. 03939 #define KEY_MAGIC       "KMAZ"  /* Magic number of keymap file */
  2699. 03940
  2700. 03941 #endif /* _SYS__KEYMAP_H */
  2701. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2702. include/minix/partition.h    
  2703. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2704. 04000 /*      minix/partition.h                               Author: Kees J. Bot
  2705. 04001  *                                                              7 Dec 1995
  2706. 04002  * Place of a partition on disk and the disk geometry,
  2707. 04003  * for use with the DIOCGETP and DIOCSETP ioctl's.
  2708. 04004  */
  2709. 04005 #ifndef _MINIX__PARTITION_H
  2710. 04006 #define _MINIX__PARTITION_H
  2711. 04007
  2712. 04008 struct partition {
  2713. 04009   u32_t base;           /* byte offset to the partition start */
  2714. 04010   u32_t size;           /* number of bytes in the partition */
  2715. 04011   unsigned cylinders;   /* disk geometry */
  2716. 04012   unsigned heads;
  2717. 04013   unsigned sectors;
  2718. 04014 };
  2719. 04015 #endif /* _MINIX__PARTITION_H */
  2720. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2721. include/ibm/partition.h    
  2722. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2723. 04100 /* Description of entry in partition table.  */
  2724. 04101 #ifndef _PARTITION_H
  2725. 04102 #define _PARTITION_H
  2726. 04103
  2727. 04104 struct part_entry {
  2728. 04105   unsigned char bootind;        /* boot indicator 0/ACTIVE_FLAG  */
  2729. 04106   unsigned char start_head;     /* head value for first sector   */
  2730. 04107   unsigned char start_sec;      /* sector value + cyl bits for first sector */
  2731. 04108   unsigned char start_cyl;      /* track value for first sector  */
  2732. 04109   unsigned char sysind;         /* system indicator              */
  2733. 04110   unsigned char last_head;      /* head value for last sector    */
  2734. 04111   unsigned char last_sec;       /* sector value + cyl bits for last sector */
  2735. 04112   unsigned char last_cyl;       /* track value for last sector   */
  2736. 04113   unsigned long lowsec;         /* logical first sector          */
  2737. 04114   unsigned long size;           /* size of partition in sectors  */
  2738. 04115 };
  2739. 04116
  2740. 04117 #define ACTIVE_FLAG     0x80    /* value for active in bootind field (hd0) */
  2741. 04118 #define NR_PARTITIONS   4       /* number of entries in partition table */
  2742. 04119 #define PART_TABLE_OFF  0x1BE   /* offset of partition table in boot sector */
  2743. .Ep 48 include/ibm/partition.h
  2744. 04120
  2745. 04121 /* Partition types. */
  2746. 04122 #define MINIX_PART      0x81    /* Minix partition type */
  2747. 04123 #define NO_PART         0x00    /* unused entry */
  2748. 04124 #define OLD_MINIX_PART  0x80    /* created before 1.4b, obsolete */
  2749. 04125 #define EXT_PART        0x05    /* extended partition */
  2750. 04126
  2751. 04127 #endif /* _PARTITION_H */
  2752. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2753. src/kernel/kernel.h    
  2754. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2755. 04200 /* This is the master header for the kernel.  It includes some other files
  2756. 04201  * and defines the principal constants.