COMPLETE.T
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:2535k
源码类别:

操作系统开发

开发平台:

C/C++

  1. 04709 #endif
  2. 04710
  3. 04711 struct direct {
  4. 04712   ino_t d_ino;
  5. 04713   char d_name[DIRSIZ];
  6. 04714 };
  7. 04715
  8. 04716 #endif /* _DIR_H */
  9. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  10. include/sys/ioctl.h    
  11. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  12. 04800 /* The ioctl.h header declares device controlling operations. */
  13. 04801
  14. 04802 #ifndef _IOCTL_H
  15. 04803 #define _IOCTL_H
  16. 04804
  17. 04805 #if _EM_WSIZE >= 4
  18. 04806 /* Ioctls have the command encoded in the low-order word, and the size
  19. 04807  * of the parameter in the high-order word. The 3 high bits of the high-
  20. 04808  * order word are used to encode the in/out/void status of the parameter.
  21. 04809  */
  22. 04810
  23. 04811 #define _IOCPARM_MASK   0x1FFF
  24. 04812 #define _IOC_VOID       0x20000000
  25. 04813 #define _IOCTYPE_MASK   0xFFFF
  26. 04814 #define _IOC_IN         0x40000000
  27. .Op 51 include/sys/ioctl.h
  28. 04815 #define _IOC_OUT        0x80000000
  29. 04816 #define _IOC_INOUT      (_IOC_IN | _IOC_OUT)
  30. 04817
  31. 04818 #define _IO(x,y)        ((x << 8) | y | _IOC_VOID)
  32. 04819 #define _IOR(x,y,t)     ((x << 8) | y | ((sizeof(t) & _IOCPARM_MASK) << 16) |
  33. 04820                                 _IOC_OUT)
  34. 04821 #define _IOW(x,y,t)     ((x << 8) | y | ((sizeof(t) & _IOCPARM_MASK) << 16) |
  35. 04822                                 _IOC_IN)
  36. 04823 #define _IORW(x,y,t)    ((x << 8) | y | ((sizeof(t) & _IOCPARM_MASK) << 16) |
  37. 04824                                 _IOC_INOUT)
  38. 04825 #else
  39. 04826 /* No fancy encoding on a 16-bit machine. */
  40. 04827
  41. 04828 #define _IO(x,y)        ((x << 8) | y)
  42. 04829 #define _IOR(x,y,t)     _IO(x,y)
  43. 04830 #define _IOW(x,y,t)     _IO(x,y)
  44. 04831 #define _IORW(x,y,t)    _IO(x,y)
  45. 04832 #endif
  46. 04833
  47. 04834
  48. 04835 /* Terminal ioctls. */
  49. 04836 #define TCGETS          _IOR('T',  8, struct termios) /* tcgetattr */
  50. 04837 #define TCSETS          _IOW('T',  9, struct termios) /* tcsetattr, TCSANOW */
  51. 04838 #define TCSETSW         _IOW('T', 10, struct termios) /* tcsetattr, TCSADRAIN */
  52. 04839 #define TCSETSF         _IOW('T', 11, struct termios) /* tcsetattr, TCSAFLUSH */
  53. 04840 #define TCSBRK          _IOW('T', 12, int)            /* tcsendbreak */
  54. 04841 #define TCDRAIN         _IO ('T', 13)                 /* tcdrain */
  55. 04842 #define TCFLOW          _IOW('T', 14, int)            /* tcflow */
  56. 04843 #define TCFLSH          _IOW('T', 15, int)            /* tcflush */
  57. 04844 #define TIOCGWINSZ      _IOR('T', 16, struct winsize)
  58. 04845 #define TIOCSWINSZ      _IOW('T', 17, struct winsize)
  59. 04846 #define TIOCGPGRP       _IOW('T', 18, int)
  60. 04847 #define TIOCSPGRP       _IOW('T', 19, int)
  61. 04848 #define TIOCSFON        _IOW('T', 20, u8_t [8192])
  62. 04849
  63. 04850 #define TIOCGETP        _IOR('t',  1, struct sgttyb)
  64. 04851 #define TIOCSETP        _IOW('t',  2, struct sgttyb)
  65. 04852 #define TIOCGETC        _IOR('t',  3, struct tchars)
  66. 04853 #define TIOCSETC        _IOW('t',  4, struct tchars)
  67. 04854
  68. 04855
  69. 04856 /* Network ioctls. */
  70. 04857 #define NWIOSETHOPT     _IOW('n', 16, struct nwio_ethopt)
  71. 04858 #define NWIOGETHOPT     _IOR('n', 17, struct nwio_ethopt)
  72. 04859 #define NWIOGETHSTAT    _IOR('n', 18, struct nwio_ethstat)
  73. 04860
  74. 04861 #define NWIOSIPCONF     _IOW('n', 32, struct nwio_ipconf)
  75. 04862 #define NWIOGIPCONF     _IOR('n', 33, struct nwio_ipconf)
  76. 04863 #define NWIOSIPOPT      _IOW('n', 34, struct nwio_ipopt)
  77. 04864 #define NWIOGIPOPT      _IOR('n', 35, struct nwio_ipopt)
  78. 04865
  79. 04866 #define NWIOIPGROUTE    _IORW('n', 40, struct nwio_route)
  80. 04867 #define NWIOIPSROUTE    _IOW ('n', 41, struct nwio_route)
  81. 04868 #define NWIOIPDROUTE    _IOW ('n', 42, struct nwio_route)
  82. 04869
  83. 04870 #define NWIOSTCPCONF    _IOW('n', 48, struct nwio_tcpconf)
  84. 04871 #define NWIOGTCPCONF    _IOR('n', 49, struct nwio_tcpconf)
  85. 04872 #define NWIOTCPCONN     _IOW('n', 50, struct nwio_tcpcl)
  86. 04873 #define NWIOTCPLISTEN   _IOW('n', 51, struct nwio_tcpcl)
  87. 04874 #define NWIOTCPATTACH   _IOW('n', 52, struct nwio_tcpatt)
  88. .Ep 52 include/sys/ioctl.h
  89. 04875 #define NWIOTCPSHUTDOWN _IO ('n', 53)
  90. 04876 #define NWIOSTCPOPT     _IOW('n', 54, struct nwio_tcpopt)
  91. 04877 #define NWIOGTCPOPT     _IOR('n', 55, struct nwio_tcpopt)
  92. 04878
  93. 04879 #define NWIOSUDPOPT     _IOW('n', 64, struct nwio_udpopt)
  94. 04880 #define NWIOGUDPOPT     _IOR('n', 65, struct nwio_udpopt)
  95. 04881
  96. 04882 /* Disk ioctls. */
  97. 04883 #define DIOCEJECT       _IO ('d', 5)
  98. 04884 #define DIOCSETP        _IOW('d', 6, struct partition)
  99. 04885 #define DIOCGETP        _IOR('d', 7, struct partition)
  100. 04886
  101. 04887 /* Keyboard ioctls. */
  102. 04888 #define KIOCSMAP        _IOW('k', 3, keymap_t)
  103. 04889
  104. 04890 /* Memory ioctls. */
  105. 04891 #define MIOCRAMSIZE     _IOW('m', 3, u32_t)     /* Size of the ramdisk */
  106. 04892 #define MIOCSPSINFO     _IOW('m', 4, void *)
  107. 04893 #define MIOCGPSINFO     _IOR('m', 5, struct psinfo)
  108. 04894
  109. 04895 /* Magnetic tape ioctls. */
  110. 04896 #define MTIOCTOP        _IOW('M', 1, struct mtop)
  111. 04897 #define MTIOCGET        _IOR('M', 2, struct mtget)
  112. 04898
  113. 04899 /* SCSI command. */
  114. 04900 #define SCIOCCMD        _IOW('S', 1, struct scsicmd)
  115. 04901
  116. 04902 /* CD-ROM ioctls. */
  117. 04903 #define CDIOPLAYTI      _IOR('c', 1, struct cd_play_track)
  118. 04904 #define CDIOPLAYMSS     _IOR('c', 2, struct cd_play_mss)
  119. 04905 #define CDIOREADTOCHDR  _IOW('c', 3, struct cd_toc_entry)
  120. 04906 #define CDIOREADTOC     _IOW('c', 4, struct cd_toc_entry)
  121. 04907 #define CDIOREADSUBCH   _IOW('c', 5, struct cd_toc_entry)
  122. 04908 #define CDIOSTOP        _IO ('c', 10)
  123. 04909 #define CDIOPAUSE       _IO ('c', 11)
  124. 04910 #define CDIORESUME      _IO ('c', 12)
  125. 04911 #define CDIOEJECT       DIOCEJECT
  126. 04912
  127. 04913 /* Soundcard DSP ioctls. */
  128. 04914 #define DSPIORATE       _IOR('s', 1, unsigned int)
  129. 04915 #define DSPIOSTEREO     _IOR('s', 2, unsigned int)
  130. 04916 #define DSPIOSIZE       _IOR('s', 3, unsigned int)
  131. 04917 #define DSPIOBITS       _IOR('s', 4, unsigned int)
  132. 04918 #define DSPIOSIGN       _IOR('s', 5, unsigned int)
  133. 04919 #define DSPIOMAX        _IOW('s', 6, unsigned int)
  134. 04920 #define DSPIORESET      _IO ('s', 7)
  135. 04921
  136. 04922 /* Soundcard mixer ioctls. */
  137. 04923 #define MIXIOGETVOLUME          _IORW('s', 10, struct volume_level)
  138. 04924 #define MIXIOGETINPUTLEFT       _IORW('s', 11, struct inout_ctrl)
  139. 04925 #define MIXIOGETINPUTRIGHT      _IORW('s', 12, struct inout_ctrl)
  140. 04926 #define MIXIOGETOUTPUT          _IORW('s', 13, struct inout_ctrl)
  141. 04927 #define MIXIOSETVOLUME          _IORW('s', 20, struct volume_level)
  142. 04928 #define MIXIOSETINPUTLEFT       _IORW('s', 21, struct inout_ctrl)
  143. 04929 #define MIXIOSETINPUTRIGHT      _IORW('s', 22, struct inout_ctrl)
  144. 04930 #define MIXIOSETOUTPUT          _IORW('s', 23, struct inout_ctrl)
  145. 04931
  146. 04932 #ifndef _ANSI
  147. 04933 #include <ansi.h>
  148. 04934 #endif
  149. .Op 53 include/sys/ioctl.h
  150. 04935
  151. 04936 _PROTOTYPE( int ioctl, (int _fd, int _request, void *_data)             );
  152. 04937
  153. 04938 #endif /* _IOCTL_H */
  154. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  155. include/sys/mtio.h    
  156. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  157. 05000 /* <sys/mtio.h> magnetic tape commands                  Author: Kees J. Bot
  158. 05001  */
  159. 05002
  160. 05003 #ifndef _SYS__MTIO_H
  161. 05004 #define _SYS__MTIO_H
  162. 05005
  163. 05006 /* Tape operations: ioctl(fd, MTIOCTOP, &struct mtop) */
  164. 05007
  165. 05008 struct mtop {
  166. 05009         short   mt_op;          /* Operation (MTWEOF, etc.) */
  167. 05010         int     mt_count;       /* Repeat count. */
  168. 05011 };
  169. 05012
  170. 05013 #define MTWEOF   0      /* Write End-Of-File Marker */
  171. 05014 #define MTFSF    1      /* Forward Space File mark */
  172. 05015 #define MTBSF    2      /* Backward Space File mark */
  173. 05016 #define MTFSR    3      /* Forward Space Record */
  174. 05017 #define MTBSR    4      /* Backward Space Record */
  175. 05018 #define MTREW    5      /* Rewind tape */
  176. 05019 #define MTOFFL   6      /* Rewind and take Offline */
  177. 05020 #define MTNOP    7      /* No-Operation, set status only */
  178. 05021 #define MTRETEN  8      /* Retension (completely wind and rewind) */
  179. 05022 #define MTERASE  9      /* Erase the tape and rewind */
  180. 05023 #define MTEOM   10      /* Position at End-Of-Media */
  181. 05024 #define MTMODE  11      /* Select tape density */
  182. 05025 #define MTBLKZ  12      /* Select tape block size */
  183. 05026
  184. 05027 /* Tape status: ioctl(fd, MTIOCGET, &struct mtget) */
  185. 05028
  186. 05029 struct mtget {
  187. 05030         short   mt_type;        /* Type of tape device. */
  188. 05031
  189. 05032         /* Device dependent "registers". */
  190. 05033         short   mt_dsreg;       /* Drive status register. */
  191. 05034         short   mt_erreg;       /* Error register. */
  192. 05035         short   dummy;          /* (alignment) */
  193. 05036
  194. 05037         /* Misc info. */
  195. 05038         off_t   mt_resid;       /* Residual count. */
  196. 05039         off_t   mt_fileno;      /* Current File Number. */
  197. 05040         off_t   mt_blkno;       /* Current Block Number within file. */
  198. 05041         off_t   mt_blksize;     /* Current block size. */
  199. 05042 };
  200. 05043
  201. 05044 #endif /* _SYS__MTIO_H */
  202. .Ep 54 include/sys/ptrace.h
  203. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  204. include/sys/ptrace.h    
  205. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  206. 05100 /* <sys/ptrace.h>
  207. 05101  * definitions for ptrace(2) 
  208. 05102  */
  209. 05103
  210. 05104 #ifndef _PTRACE_H
  211. 05105 #define _PTRACE_H
  212. 05106
  213. 05107 #define T_STOP         -1       /* stop the process */
  214. 05108 #define T_OK            0       /* enable tracing by parent for this process */
  215. 05109 #define T_GETINS        1       /* return value from instruction space */
  216. 05110 #define T_GETDATA       2       /* return value from data space */
  217. 05111 #define T_GETUSER       3       /* return value from user process table */
  218. 05112 #define T_SETINS        4       /* set value from instruction space */
  219. 05113 #define T_SETDATA       5       /* set value from data space */
  220. 05114 #define T_SETUSER       6       /* set value in user process table */
  221. 05115 #define T_RESUME        7       /* resume execution */
  222. 05116 #define T_EXIT          8       /* exit */
  223. 05117 #define T_STEP          9       /* set trace bit */
  224. 05118
  225. 05119 /* Function Prototypes. */
  226. 05120 #ifndef _ANSI_H
  227. 05121 #include <ansi.h>
  228. 05122 #endif
  229. 05123
  230. 05124 _PROTOTYPE( long ptrace, (int _req, pid_t _pid, long _addr, long _data) );
  231. 05125
  232. 05126 #endif /* _PTRACE_H */
  233. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  234. include/sys/sigcontext.h    
  235. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  236. 05200 #ifndef _SIGCONTEXT_H
  237. 05201 #define _SIGCONTEXT_H
  238. 05202
  239. 05203 /* The sigcontext structure is used by the sigreturn(2) system call.
  240. 05204  * sigreturn() is seldom called by user programs, but it is used internally
  241. 05205  * by the signal catching mechanism.
  242. 05206  */
  243. 05207
  244. 05208 #ifndef _ANSI_H
  245. 05209 #include <ansi.h>
  246. 05210 #endif
  247. 05211
  248. 05212 #ifndef _CONFIG_H
  249. 05213 #include <minix/config.h>
  250. 05214 #endif
  251. 05215
  252. 05216 #if !defined(CHIP)
  253. 05217 #include "error, configuration is not known"
  254. 05218 #endif
  255. 05219
  256. .Op 55 include/sys/sigcontext.h
  257. 05220 /* The following structure should match the stackframe_s structure used
  258. 05221  * by the kernel's context switching code.  Floating point registers should
  259. 05222  * be added in a different struct.
  260. 05223  */
  261. 05224 #if (CHIP == INTEL)
  262. 05225 struct sigregs {  
  263. 05226 #if _WORD_SIZE == 4
  264. 05227   short sr_gs;
  265. 05228   short sr_fs;
  266. 05229 #endif /* _WORD_SIZE == 4 */
  267. 05230   short sr_es;
  268. 05231   short sr_ds;
  269. 05232   int sr_di;
  270. 05233   int sr_si;
  271. 05234   int sr_bp;
  272. 05235   int sr_st;                    /* stack top -- used in kernel */
  273. 05236   int sr_bx;
  274. 05237   int sr_dx;
  275. 05238   int sr_cx;
  276. 05239   int sr_retreg;
  277. 05240   int sr_retadr;                /* return address to caller of save -- used
  278. 05241                                  * in kernel */
  279. 05242   int sr_pc;
  280. 05243   int sr_cs;
  281. 05244   int sr_psw;
  282. 05245   int sr_sp;
  283. 05246   int sr_ss;
  284. 05247 };
  285. 05248
  286. 05249 struct sigframe {               /* stack frame created for signalled process */
  287. 05250   _PROTOTYPE( void (*sf_retadr), (void) );
  288. 05251   int sf_signo;
  289. 05252   int sf_code;
  290. 05253   struct sigcontext *sf_scp;
  291. 05254   int sf_fp;
  292. 05255   _PROTOTYPE( void (*sf_retadr2), (void) );
  293. 05256   struct sigcontext *sf_scpcopy;
  294. 05257 };
  295. 05258
  296. 05259 #else
  297. 05260 #if (CHIP == M68000)
  298. 05261 struct sigregs {  
  299. 05262   long sr_retreg;                       /* d0 */
  300. 05263   long sr_d1;
  301. 05264   long sr_d2;
  302. 05265   long sr_d3;
  303. 05266   long sr_d4;
  304. 05267   long sr_d5;
  305. 05268   long sr_d6;
  306. 05269   long sr_d7;
  307. 05270   long sr_a0;
  308. 05271   long sr_a1;
  309. 05272   long sr_a2;
  310. 05273   long sr_a3;
  311. 05274   long sr_a4;
  312. 05275   long sr_a5;
  313. 05276   long sr_a6;
  314. 05277   long sr_sp;                   /* also known as a7 */
  315. 05278   long sr_pc;
  316. 05279   short sr_psw;
  317. .Ep 56 include/sys/sigcontext.h
  318. 05280   short sr_dummy;               /* make size multiple of 4 for system.c */
  319. 05281 };
  320. 05282 #else
  321. 05283 #include "error, CHIP is not supported"
  322. 05284 #endif
  323. 05285 #endif /* CHIP == INTEL */
  324. 05286
  325. 05287 struct sigcontext {
  326. 05288   int sc_flags;                 /* sigstack state to restore */
  327. 05289   long sc_mask;                 /* signal mask to restore */
  328. 05290   struct sigregs sc_regs;       /* register set to restore */
  329. 05291 };
  330. 05292
  331. 05293 #if (CHIP == INTEL)
  332. 05294 #if _WORD_SIZE == 4
  333. 05295 #define sc_gs sc_regs.sr_gs
  334. 05296 #define sc_fs sc_regs.sr_fs
  335. 05297 #endif /* _WORD_SIZE == 4 */
  336. 05298 #define sc_es sc_regs.sr_es
  337. 05299 #define sc_ds sc_regs.sr_ds
  338. 05300 #define sc_di sc_regs.sr_di
  339. 05301 #define sc_si sc_regs.sr_si 
  340. 05302 #define sc_fp sc_regs.sr_bp
  341. 05303 #define sc_st sc_regs.sr_st             /* stack top -- used in kernel */
  342. 05304 #define sc_bx sc_regs.sr_bx
  343. 05305 #define sc_dx sc_regs.sr_dx
  344. 05306 #define sc_cx sc_regs.sr_cx
  345. 05307 #define sc_retreg sc_regs.sr_retreg
  346. 05308 #define sc_retadr sc_regs.sr_retadr     /* return address to caller of 
  347. 05309                                         save -- used in kernel */
  348. 05310 #define sc_pc sc_regs.sr_pc
  349. 05311 #define sc_cs sc_regs.sr_cs
  350. 05312 #define sc_psw sc_regs.sr_psw
  351. 05313 #define sc_sp sc_regs.sr_sp
  352. 05314 #define sc_ss sc_regs.sr_ss
  353. 05315 #endif /* CHIP == INTEL */
  354. 05316
  355. 05317 #if (CHIP == M68000)
  356. 05318 #define sc_retreg sc_regs.sr_retreg
  357. 05319 #define sc_d1 sc_regs.sr_d1
  358. 05320 #define sc_d2 sc_regs.sr_d2
  359. 05321 #define sc_d3 sc_regs.sr_d3
  360. 05322 #define sc_d4 sc_regs.sr_d4
  361. 05323 #define sc_d5 sc_regs.sr_d5
  362. 05324 #define sc_d6 sc_regs.sr_d6
  363. 05325 #define sc_d7 sc_regs.sr_d7
  364. 05326 #define sc_a0 sc_regs.sr_a0
  365. 05327 #define sc_a1 sc_regs.sr_a1
  366. 05328 #define sc_a2 sc_regs.sr_a2
  367. 05329 #define sc_a3 sc_regs.sr_a3
  368. 05330 #define sc_a4 sc_regs.sr_a4
  369. 05331 #define sc_a5 sc_regs.sr_a5
  370. 05332 #define sc_fp sc_regs.sr_a6
  371. 05333 #define sc_sp sc_regs.sr_sp
  372. 05334 #define sc_pc sc_regs.sr_pc
  373. 05335 #define sc_psw sc_regs.sr_psw
  374. 05336 #endif /* CHIP == M68000 */
  375. 05337
  376. 05338 /* Values for sc_flags.  Must agree with <minix/jmp_buf.h>. */
  377. 05339 #define SC_SIGCONTEXT   2       /* nonzero when signal context is included */
  378. .Op 57 include/sys/sigcontext.h
  379. 05340 #define SC_NOREGLOCALS  4       /* nonzero when registers are not to be
  380. 05341                                         saved and restored */
  381. 05342
  382. 05343 _PROTOTYPE( int sigreturn, (struct sigcontext *_scp)                    );
  383. 05344
  384. 05345 #endif /* _SIGCONTEXT_H */
  385. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  386. include/sys/stat.h    
  387. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  388. 05400 /* The <sys/stat.h> header defines a struct that is used in the stat() and
  389. 05401  * fstat functions.  The information in this struct comes from the i-node of
  390. 05402  * some file.  These calls are the only approved way to inspect i-nodes.
  391. 05403  */
  392. 05404
  393. 05405 #ifndef _STAT_H
  394. 05406 #define _STAT_H
  395. 05407
  396. 05408 struct stat {
  397. 05409   dev_t st_dev;                 /* major/minor device number */
  398. 05410   ino_t st_ino;                 /* i-node number */
  399. 05411   mode_t st_mode;               /* file mode, protection bits, etc. */
  400. 05412   short int st_nlink;           /* # links; TEMPORARY HACK: should be nlink_t*/
  401. 05413   uid_t st_uid;                 /* uid of the file's owner */
  402. 05414   short int st_gid;             /* gid; TEMPORARY HACK: should be gid_t */
  403. 05415   dev_t st_rdev;
  404. 05416   off_t st_size;                /* file size */
  405. 05417   time_t st_atime;              /* time of last access */
  406. 05418   time_t st_mtime;              /* time of last data modification */
  407. 05419   time_t st_ctime;              /* time of last file status change */
  408. 05420 };
  409. 05421
  410. 05422 /* Traditional mask definitions for st_mode. */
  411. 05423 /* The ugly casts on only some of the definitions are to avoid suprising sign
  412. 05424  * extensions such as S_IFREG != (mode_t) S_IFREG when ints are 32 bits.
  413. 05425  */
  414. 05426 #define S_IFMT  ((mode_t) 0170000)      /* type of file */
  415. 05427 #define S_IFREG ((mode_t) 0100000)      /* regular */
  416. 05428 #define S_IFBLK 0060000         /* block special */
  417. 05429 #define S_IFDIR 0040000         /* directory */
  418. 05430 #define S_IFCHR 0020000         /* character special */
  419. 05431 #define S_IFIFO 0010000         /* this is a FIFO */
  420. 05432 #define S_ISUID 0004000         /* set user id on execution */
  421. 05433 #define S_ISGID 0002000         /* set group id on execution */
  422. 05434                                 /* next is reserved for future use */
  423. 05435 #define S_ISVTX   01000         /* save swapped text even after use */
  424. 05436
  425. 05437 /* POSIX masks for st_mode. */
  426. 05438 #define S_IRWXU   00700         /* owner:  rwx------ */
  427. 05439 #define S_IRUSR   00400         /* owner:  r-------- */
  428. 05440 #define S_IWUSR   00200         /* owner:  -w------- */
  429. 05441 #define S_IXUSR   00100         /* owner:  --x------ */
  430. 05442
  431. 05443 #define S_IRWXG   00070         /* group:  ---rwx--- */
  432. 05444 #define S_IRGRP   00040         /* group:  ---r----- */
  433. .Ep 58 include/sys/stat.h
  434. 05445 #define S_IWGRP   00020         /* group:  ----w---- */
  435. 05446 #define S_IXGRP   00010         /* group:  -----x--- */
  436. 05447
  437. 05448 #define S_IRWXO   00007         /* others: ------rwx */
  438. 05449 #define S_IROTH   00004         /* others: ------r-- */ 
  439. 05450 #define S_IWOTH   00002         /* others: -------w- */
  440. 05451 #define S_IXOTH   00001         /* others: --------x */
  441. 05452
  442. 05453 /* The following macros test st_mode (from POSIX Sec. 5.6.1.1). */
  443. 05454 #define S_ISREG(m)      (((m) & S_IFMT) == S_IFREG)     /* is a reg file */
  444. 05455 #define S_ISDIR(m)      (((m) & S_IFMT) == S_IFDIR)     /* is a directory */
  445. 05456 #define S_ISCHR(m)      (((m) & S_IFMT) == S_IFCHR)     /* is a char spec */
  446. 05457 #define S_ISBLK(m)      (((m) & S_IFMT) == S_IFBLK)     /* is a block spec */
  447. 05458 #define S_ISFIFO(m)     (((m) & S_IFMT) == S_IFIFO)     /* is a pipe/FIFO */
  448. 05459
  449. 05460
  450. 05461 /* Function Prototypes. */
  451. 05462 #ifndef _ANSI_H
  452. 05463 #include <ansi.h>
  453. 05464 #endif
  454. 05465
  455. 05466 _PROTOTYPE( int chmod, (const char *_path, Mode_t _mode)                );
  456. 05467 _PROTOTYPE( int fstat, (int _fildes, struct stat *_buf)                 );
  457. 05468 _PROTOTYPE( int mkdir, (const char *_path, Mode_t _mode)                );
  458. 05469 _PROTOTYPE( int mkfifo, (const char *_path, Mode_t _mode)               );
  459. 05470 _PROTOTYPE( int stat, (const char *_path, struct stat *_buf)            );
  460. 05471 _PROTOTYPE( mode_t umask, (Mode_t _cmask)                               );
  461. 05472
  462. 05473 #endif /* _STAT_H */
  463. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  464. include/sys/times.h    
  465. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  466. 05500 /* The <times.h> header is for time times() system call. */
  467. 05501
  468. 05502 #ifndef _TIMES_H
  469. 05503 #define _TIMES_H
  470. 05504
  471. 05505 #ifndef _CLOCK_T
  472. 05506 #define _CLOCK_T
  473. 05507 typedef long clock_t;           /* unit for system accounting */
  474. 05508 #endif
  475. 05509
  476. 05510 struct tms {
  477. 05511   clock_t tms_utime;
  478. 05512   clock_t tms_stime;
  479. 05513   clock_t tms_cutime;
  480. 05514   clock_t tms_cstime;
  481. 05515 };
  482. 05516
  483. 05517 /* Function Prototypes. */
  484. 05518 #ifndef _ANSI_H
  485. 05519 #include <ansi.h>
  486. 05520 #endif
  487. 05521
  488. 05522 _PROTOTYPE( clock_t times, (struct tms *_buffer)                        );
  489. 05523
  490. 05524 #endif /* _TIMES_H */
  491. .Op 59 include/sys/types.h
  492. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  493. include/sys/types.h    
  494. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  495. 05600 /* The <sys/types.h> header contains important data type definitions.
  496. 05601  * It is considered good programming practice to use these definitions, 
  497. 05602  * instead of the underlying base type.  By convention, all type names end 
  498. 05603  * with _t.
  499. 05604  */
  500. 05605
  501. 05606 #ifndef _TYPES_H
  502. 05607 #define _TYPES_H
  503. 05608
  504. 05609 /* _ANSI is somehow used to determine whether or not the compiler is a
  505. 05610  * 16 bit compiler
  506. 05611  */
  507. 05612 #ifndef _ANSI
  508. 05613 #include <ansi.h>
  509. 05614 #endif
  510. 05615
  511. 05616 /* The type size_t holds all results of the sizeof operator.  At first glance,
  512. 05617  * it seems obvious that it should be an unsigned int, but this is not always 
  513. 05618  * the case. For example, MINIX-ST (68000) has 32-bit pointers and 16-bit
  514. 05619  * integers. When one asks for the size of a 70K struct or array, the result 
  515. 05620  * requires 17 bits to express, so size_t must be a long type.  The type 
  516. 05621  * ssize_t is the signed version of size_t.
  517. 05622  */
  518. 05623 #ifndef _SIZE_T
  519. 05624 #define _SIZE_T
  520. 05625 typedef unsigned int size_t;
  521. 05626 #endif
  522. 05627
  523. 05628 #ifndef _SSIZE_T
  524. 05629 #define _SSIZE_T
  525. 05630 typedef int ssize_t;
  526. 05631 #endif
  527. 05632
  528. 05633 #ifndef _TIME_T
  529. 05634 #define _TIME_T
  530. 05635 typedef long time_t;               /* time in sec since 1 Jan 1970 0000 GMT */
  531. 05636 #endif
  532. 05637
  533. 05638 #ifndef _CLOCK_T
  534. 05639 #define _CLOCK_T
  535. 05640 typedef long clock_t;              /* unit for system accounting */
  536. 05641 #endif
  537. 05642
  538. 05643 #ifndef _SIGSET_T
  539. 05644 #define _SIGSET_T
  540. 05645 typedef unsigned long sigset_t;
  541. 05646 #endif
  542. 05647
  543. 05648 /* Types used in disk, inode, etc. data structures. */
  544. 05649 typedef short          dev_t;      /* holds (major|minor) device pair */
  545. 05650 typedef char           gid_t;      /* group id */
  546. 05651 typedef unsigned short ino_t;      /* i-node number */
  547. 05652 typedef unsigned short mode_t;     /* file type and permissions bits */
  548. 05653 typedef char         nlink_t;      /* number of links to a file */
  549. 05654 typedef unsigned long  off_t;      /* offset within a file */
  550. .Ep 60 include/sys/types.h
  551. 05655 typedef int            pid_t;      /* process id (must be signed) */
  552. 05656 typedef short          uid_t;      /* user id */
  553. 05657 typedef unsigned long zone_t;      /* zone number */
  554. 05658 typedef unsigned long block_t;     /* block number */
  555. 05659 typedef unsigned long  bit_t;      /* bit number in a bit map */
  556. 05660 typedef unsigned short zone1_t;    /* zone number for V1 file systems */
  557. 05661 typedef unsigned short bitchunk_t; /* collection of bits in a bitmap */
  558. 05662
  559. 05663 typedef unsigned char   u8_t;      /* 8 bit type */
  560. 05664 typedef unsigned short u16_t;      /* 16 bit type */
  561. 05665 typedef unsigned long  u32_t;      /* 32 bit type */
  562. 05666
  563. 05667 typedef char            i8_t;      /* 8 bit signed type */
  564. 05668 typedef short          i16_t;      /* 16 bit signed type */
  565. 05669 typedef long           i32_t;      /* 32 bit signed type */
  566. 05670
  567. 05671 /* The following types are needed because MINIX uses K&R style function
  568. 05672  * definitions (for maximum portability).  When a short, such as dev_t, is
  569. 05673  * passed to a function with a K&R definition, the compiler automatically
  570. 05674  * promotes it to an int.  The prototype must contain an int as the parameter,
  571. 05675  * not a short, because an int is what an old-style function definition
  572. 05676  * expects.  Thus using dev_t in a prototype would be incorrect.  It would be
  573. 05677  * sufficient to just use int instead of dev_t in the prototypes, but Dev_t
  574. 05678  * is clearer.
  575. 05679  */
  576. 05680 typedef int            Dev_t;
  577. 05681 typedef int            Gid_t;
  578. 05682 typedef int          Nlink_t;
  579. 05683 typedef int            Uid_t;
  580. 05684 typedef int             U8_t;
  581. 05685 typedef unsigned long  U32_t;
  582. 05686 typedef int             I8_t;
  583. 05687 typedef int            I16_t;
  584. 05688 typedef long            I32_t;
  585. 05689
  586. 05690 /* ANSI C makes writing down the promotion of unsigned types very messy.  When
  587. 05691  * sizeof(short) == sizeof(int), there is no promotion, so the type stays
  588. 05692  * unsigned.  When the compiler is not ANSI, there is usually no loss of
  589. 05693  * unsignedness, and there are usually no prototypes so the promoted type
  590. 05694  * doesn't matter.  The use of types like Ino_t is an attempt to use ints
  591. 05695  * (which are not promoted) while providing information to the reader.
  592. 05696  */
  593. 05697
  594. 05698 #ifndef _ANSI_H
  595. 05699 #include <ansi.h>
  596. 05700 #endif
  597. 05701
  598. 05702 #if _EM_WSIZE == 2 || !defined(_ANSI)
  599. 05703 typedef unsigned int      Ino_t;
  600. 05704 typedef unsigned int    Zone1_t;
  601. 05705 typedef unsigned int Bitchunk_t;
  602. 05706 typedef unsigned int      U16_t;
  603. 05707 typedef unsigned int  Mode_t;
  604. 05708
  605. 05709 #else /* _EM_WSIZE == 4, or _EM_WSIZE undefined, or _ANSI defined */
  606. 05710 typedef int               Ino_t;
  607. 05711 typedef int             Zone1_t;
  608. 05712 typedef int          Bitchunk_t;
  609. 05713 typedef int               U16_t;
  610. 05714 typedef int           Mode_t;
  611. .Op 61 include/sys/types.h
  612. 05715
  613. 05716 #endif /* _EM_WSIZE == 2, etc */
  614. 05717  
  615. 05718 /* Signal handler type, e.g. SIG_IGN */
  616. 05719 #if defined(_ANSI)
  617. 05720 typedef void (*sighandler_t) (int);
  618. 05721 #else
  619. 05722 typedef void (*sighandler_t)();
  620. 05723 #endif
  621. 05724
  622. 05725 #endif /* _TYPES_H */
  623. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  624. include/sys/utsname.h    
  625. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  626. 05800 /* The <sys/utsname.h> header gives the system name. */
  627. 05801
  628. 05802 #ifndef _UTSNAME_H
  629. 05803 #define _UTSNAME_H
  630. 05804
  631. 05805 struct utsname {
  632. 05806   char sysname[15+1];
  633. 05807   char nodename[255+1];
  634. 05808   char release[11+1];
  635. 05809   char version[7+1];
  636. 05810   char machine[11+1];
  637. 05811   char arch[11+1];
  638. 05812 };
  639. 05813
  640. 05814 /* Function Prototypes. */
  641. 05815 #ifndef _ANSI_H
  642. 05816 #include <ansi.h>
  643. 05817 #endif
  644. 05818
  645. 05819 _PROTOTYPE( int uname, (struct utsname *_name)                          );
  646. 05820
  647. 05821 #endif /* _UTSNAME_H */
  648. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  649. include/sys/wait.h    
  650. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  651. 05900 /* The <sys/wait.h> header contains macros related to wait(). The value
  652. 05901  * returned by wait() and waitpid() depends on whether the process 
  653. 05902  * terminated by an exit() call, was killed by a signal, or was stopped
  654. 05903  * due to job control, as follows:
  655. 05904  *
  656. 05905  *                               High byte   Low byte
  657. 05906  *                              +---------------------+
  658. 05907  *      exit(status)            |  status  |    0     |
  659. 05908  *                              +---------------------+
  660. 05909  *      killed by signal        |    0     |  signal  |
  661. .Ep 62 include/sys/wait.h
  662. 05910  *                              +---------------------+
  663. 05911  *      stopped (job control)   |  signal  |   0177   |
  664. 05912  *                              +---------------------+
  665. 05913  */
  666. 05914
  667. 05915 #ifndef _WAIT_H
  668. 05916 #define _WAIT_H
  669. 05917
  670. 05918 #define _LOW(v)         ( (v) & 0377)
  671. 05919 #define _HIGH(v)        ( ((v) >> 8) & 0377)
  672. 05920
  673. 05921 #define WNOHANG         1       /* do not wait for child to exit */
  674. 05922 #define WUNTRACED       2       /* for job control; not implemented */
  675. 05923
  676. 05924 #define WIFEXITED(s)    (_LOW(s) == 0)                      /* normal exit */
  677. 05925 #define WEXITSTATUS(s)  (_HIGH(s))                          /* exit status */
  678. 05926 #define WTERMSIG(s)     (_LOW(s) & 0177)                    /* sig value */
  679. 05927 #define WIFSIGNALED(s)  (((unsigned int)(s)-1 & 0xFFFF) < 0xFF) /* signaled */
  680. 05928 #define WIFSTOPPED(s)   (_LOW(s) == 0177)                   /* stopped */
  681. 05929 #define WSTOPSIG(s)     (_HIGH(s) & 0377)                   /* stop signal */
  682. 05930
  683. 05931 /* Function Prototypes. */
  684. 05932 #ifndef _ANSI_H
  685. 05933 #include <ansi.h>
  686. 05934 #endif
  687. 05935
  688. 05936 _PROTOTYPE( pid_t wait, (int *_stat_loc)                                   );
  689. 05937 _PROTOTYPE( pid_t waitpid, (pid_t _pid, int *_stat_loc, int _options)      );
  690. 05938
  691. 05939 #endif /* _WAIT_H */
  692. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  693. include/minix/boot.h    
  694. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  695. 06000 /* boot.h */
  696. 06001
  697. 06002 #ifndef _BOOT_H
  698. 06003 #define _BOOT_H
  699. 06004
  700. 06005 /* Redefine root and root image devices as variables.
  701. 06006  * This keeps the diffs small but may cause future confusion.
  702. 06007  */
  703. 06008 #define ROOT_DEV   (boot_parameters.bp_rootdev)
  704. 06009 #define IMAGE_DEV  (boot_parameters.bp_ramimagedev)
  705. 06010
  706. 06011 /* Device numbers of RAM, floppy and hard disk devices.
  707. 06012  * h/com.h defines RAM_DEV but only as the minor number.
  708. 06013  */
  709. 06014 #define DEV_FD0   0x200
  710. 06015 #define DEV_HD0   0x300
  711. 06016 #define DEV_RAM   0x100
  712. 06017 #define DEV_SCSI  0x700 /* Atari TT only */
  713. 06018
  714. 06019 /* Structure to hold boot parameters. */
  715. .Op 63 include/minix/boot.h
  716. 06020 struct bparam_s
  717. 06021 {
  718. 06022   dev_t bp_rootdev;
  719. 06023   dev_t bp_ramimagedev;
  720. 06024   unsigned short bp_ramsize;
  721. 06025   unsigned short bp_processor;
  722. 06026 };
  723. 06027
  724. 06028 extern struct bparam_s boot_parameters;
  725. 06029 #endif /* _BOOT_H */
  726. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  727. include/minix/callnr.h    
  728. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  729. 06100 #define NCALLS            77    /* number of system calls allowed */
  730. 06101
  731. 06102 #define EXIT               1 
  732. 06103 #define FORK               2 
  733. 06104 #define READ               3 
  734. 06105 #define WRITE              4 
  735. 06106 #define OPEN               5 
  736. 06107 #define CLOSE              6 
  737. 06108 #define WAIT               7
  738. 06109 #define CREAT              8 
  739. 06110 #define LINK               9 
  740. 06111 #define UNLINK            10 
  741. 06112 #define WAITPID           11
  742. 06113 #define CHDIR             12 
  743. 06114 #define TIME              13
  744. 06115 #define MKNOD             14 
  745. 06116 #define CHMOD             15 
  746. 06117 #define CHOWN             16 
  747. 06118 #define BRK               17
  748. 06119 #define STAT              18 
  749. 06120 #define LSEEK             19
  750. 06121 #define GETPID            20
  751. 06122 #define MOUNT             21 
  752. 06123 #define UMOUNT            22 
  753. 06124 #define SETUID            23
  754. 06125 #define GETUID            24
  755. 06126 #define STIME             25
  756. 06127 #define PTRACE            26
  757. 06128 #define ALARM             27
  758. 06129 #define FSTAT             28 
  759. 06130 #define PAUSE             29
  760. 06131 #define UTIME             30 
  761. 06132 #define ACCESS            33 
  762. 06133 #define SYNC              36 
  763. 06134 #define KILL              37
  764. 06135 #define RENAME            38
  765. 06136 #define MKDIR             39
  766. 06137 #define RMDIR             40
  767. 06138 #define DUP               41 
  768. 06139 #define PIPE              42 
  769. .Ep 64 include/minix/callnr.h
  770. 06140 #define TIMES             43
  771. 06141 #define SETGID            46
  772. 06142 #define GETGID            47
  773. 06143 #define SIGNAL            48
  774. 06144 #define IOCTL             54
  775. 06145 #define FCNTL             55
  776. 06146 #define EXEC              59
  777. 06147 #define UMASK             60 
  778. 06148 #define CHROOT            61 
  779. 06149 #define SETSID            62
  780. 06150 #define GETPGRP           63
  781. 06151
  782. 06152 /* The following are not system calls, but are processed like them. */
  783. 06153 #define KSIG              64    /* kernel detected a signal */
  784. 06154 #define UNPAUSE           65    /* to MM or FS: check for EINTR */
  785. 06155 #define REVIVE            67    /* to FS: revive a sleeping process */
  786. 06156 #define TASK_REPLY        68    /* to FS: reply code from tty task */
  787. 06157
  788. 06158 /* Posix signal handling. */
  789. 06159 #define SIGACTION         71
  790. 06160 #define SIGSUSPEND        72
  791. 06161 #define SIGPENDING        73
  792. 06162 #define SIGPROCMASK       74
  793. 06163 #define SIGRETURN         75
  794. 06164
  795. 06165 #define REBOOT            76
  796. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  797. include/minix/cdrom.h    
  798. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  799. 06200 /* This file contains some structures used by the Mitsumi cdrom driver.
  800. 06201  *
  801. 06202  *  Feb 13 1995                 Author: Michel R. Prevenier 
  802. 06203  */
  803. 06204
  804. 06205 /* Index into the mss arrays */
  805. 06206 #define MINUTES 0
  806. 06207 #define SECONDS 1
  807. 06208 #define SECTOR  2
  808. 06209
  809. 06210 struct cd_play_mss
  810. 06211 {
  811. 06212         u8_t    begin_mss[3];
  812. 06213         u8_t    end_mss[3];
  813. 06214 };
  814. 06215
  815. 06216
  816. 06217 struct cd_play_track
  817. 06218 {
  818. 06219         u8_t    begin_track;
  819. 06220         u8_t    end_track;
  820. 06221 };
  821. 06222
  822. 06223
  823. 06224 struct cd_disk_info
  824. .Op 65 include/minix/cdrom.h
  825. 06225 {
  826. 06226         u8_t    first_track;
  827. 06227         u8_t    last_track;
  828. 06228         u8_t    disk_length_mss[3];
  829. 06229         u8_t    first_track_mss[3];
  830. 06230 };
  831. 06231
  832. 06232
  833. 06233 struct cd_toc_entry
  834. 06234 {
  835. 06235         u8_t    control_address;
  836. 06236         u8_t    track_nr;
  837. 06237         u8_t    index_nr;
  838. 06238         u8_t    track_time_mss[3];
  839. 06239         u8_t    reserved;
  840. 06240         u8_t    position_mss[3];
  841. 06241 };
  842. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  843. include/minix/com.h    
  844. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  845. 06300 /* System calls. */
  846. 06301 #define SEND               1    /* function code for sending messages */
  847. 06302 #define RECEIVE            2    /* function code for receiving messages */
  848. 06303 #define BOTH               3    /* function code for SEND + RECEIVE */
  849. 06304 #define ANY   (NR_PROCS+100)    /* receive(ANY, buf) accepts from any source */
  850. 06305
  851. 06306 /* Task numbers, function codes and reply codes. */
  852. 06307
  853. 06308 /* The values of several task numbers depend on whether they or other tasks
  854. 06309  * are enabled.  They are defined as (PREVIOUS_TASK - ENABLE_TASK) in general.
  855. 06310  * ENABLE_TASK is either 0 or 1, so a task either gets a new number, or gets
  856. 06311  * the same number as the previous task and is further unused.
  857. 06312  * The TTY task must always have the most negative number so that it is
  858. 06313  * initialized first.  Many of the TTY function codes are shared with other
  859. 06314  * tasks.
  860. 06315  */
  861. 06316
  862. 06317 #define TTY             (DL_ETH - 1)
  863. 06318                                 /* terminal I/O class */
  864. 06319 #       define CANCEL       0   /* general req to force a task to cancel */
  865. 06320 #       define HARD_INT     2   /* fcn code for all hardware interrupts */
  866. 06321 #       define DEV_READ     3   /* fcn code for reading from tty */
  867. 06322 #       define DEV_WRITE    4   /* fcn code for writing to tty */
  868. 06323 #       define DEV_IOCTL    5   /* fcn code for ioctl */
  869. 06324 #       define DEV_OPEN     6   /* fcn code for opening tty */
  870. 06325 #       define DEV_CLOSE    7   /* fcn code for closing tty */
  871. 06326 #       define SCATTERED_IO 8   /* fcn code for multiple reads/writes */
  872. 06327 #       define TTY_SETPGRP  9   /* fcn code for setpgroup */
  873. 06328 #       define TTY_EXIT    10   /* a process group leader has exited */ 
  874. 06329 #       define OPTIONAL_IO 16   /* modifier to DEV_* codes within vector */
  875. 06330 #       define SUSPEND   -998   /* used in interrupts when tty has no data */
  876. 06331
  877. 06332 #define DL_ETH          (CDROM - ENABLE_NETWORKING)
  878. 06333                                 /* networking task */
  879. 06334
  880. .Ep 66 include/minix/com.h
  881. 06335 /* Message type for data link layer reqests. */
  882. 06336 #       define DL_WRITE         3
  883. 06337 #       define DL_WRITEV        4
  884. 06338 #       define DL_READ          5
  885. 06339 #       define DL_READV         6
  886. 06340 #       define DL_INIT          7
  887. 06341 #       define DL_STOP          8
  888. 06342 #       define DL_GETSTAT       9
  889. 06343
  890. 06344 /* Message type for data link layer replies. */
  891. 06345 #       define DL_INIT_REPLY    20
  892. 06346 #       define DL_TASK_REPLY    21
  893. 06347
  894. 06348 #       define DL_PORT          m2_i1
  895. 06349 #       define DL_PROC          m2_i2
  896. 06350 #       define DL_COUNT         m2_i3
  897. 06351 #       define DL_MODE          m2_l1
  898. 06352 #       define DL_CLCK          m2_l2
  899. 06353 #       define DL_ADDR          m2_p1
  900. 06354 #       define DL_STAT          m2_l1
  901. 06355
  902. 06356 /* Bits in 'DL_STAT' field of DL replies. */
  903. 06357 #       define DL_PACK_SEND     0x01
  904. 06358 #       define DL_PACK_RECV     0x02
  905. 06359 #       define DL_READ_IP       0x04
  906. 06360
  907. 06361 /* Bits in 'DL_MODE' field of DL requests. */
  908. 06362 #       define DL_NOMODE        0x0
  909. 06363 #       define DL_PROMISC_REQ   0x2
  910. 06364 #       define DL_MULTI_REQ     0x4
  911. 06365 #       define DL_BROAD_REQ     0x8
  912. 06366
  913. 06367 #       define NW_OPEN          DEV_OPEN
  914. 06368 #       define NW_CLOSE         DEV_CLOSE
  915. 06369 #       define NW_READ          DEV_READ
  916. 06370 #       define NW_WRITE         DEV_WRITE
  917. 06371 #       define NW_IOCTL         DEV_IOCTL
  918. 06372 #       define NW_CANCEL        CANCEL
  919. 06373
  920. 06374 #define CDROM           (AUDIO - ENABLE_CDROM)
  921. 06375                                 /* cd-rom device task */
  922. 06376
  923. 06377 #define AUDIO           (MIXER - ENABLE_AUDIO)
  924. 06378 #define MIXER           (SCSI - ENABLE_AUDIO)
  925. 06379                                 /* audio & mixer device tasks */
  926. 06380
  927. 06381 #define SCSI            (WINCHESTER - ENABLE_SCSI)
  928. 06382                                 /* scsi device task */
  929. 06383
  930. 06384 #define WINCHESTER      (SYN_ALRM_TASK - ENABLE_WINI)
  931. 06385                                 /* winchester (hard) disk class */
  932. 06386
  933. 06387 #define SYN_ALRM_TASK     -8    /* task to send CLOCK_INT messages */
  934. 06388
  935. 06389 #define IDLE              -7    /* task to run when there's nothing to run */
  936. 06390
  937. 06391 #define PRINTER           -6    /* printer I/O class */
  938. 06392
  939. 06393 #define FLOPPY            -5    /* floppy disk class */
  940. 06394
  941. .Op 67 include/minix/com.h
  942. 06395 #define MEM               -4    /* /dev/ram, /dev/(k)mem and /dev/null class */
  943. 06396 #       define NULL_MAJOR  1    /* major device for /dev/null */
  944. 06397 #       define RAM_DEV     0    /* minor device for /dev/ram */
  945. 06398 #       define MEM_DEV     1    /* minor device for /dev/mem */
  946. 06399 #       define KMEM_DEV    2    /* minor device for /dev/kmem */
  947. 06400 #       define NULL_DEV    3    /* minor device for /dev/null */
  948. 06401
  949. 06402 #define CLOCK             -3    /* clock class */
  950. 06403 #       define SET_ALARM   1    /* fcn code to CLOCK, set up alarm */
  951. 06404 #       define GET_TIME    3    /* fcn code to CLOCK, get real time */
  952. 06405 #       define SET_TIME    4    /* fcn code to CLOCK, set real time */
  953. 06406 #       define GET_UPTIME  5    /* fcn code to CLOCK, get uptime */
  954. 06407 #       define SET_SYNC_AL 6    /* fcn code to CLOCK, set up alarm which */
  955. 06408                                 /* times out with a send */
  956. 06409 #       define REAL_TIME   1    /* reply from CLOCK: here is real time */
  957. 06410 #       define CLOCK_INT   HARD_INT
  958. 06411                                 /* this code will only be sent by */
  959. 06412                                 /* SYN_ALRM_TASK to a task that requested a */
  960. 06413                                 /* synchronous alarm */
  961. 06414
  962. 06415 #define SYSTASK           -2    /* internal functions */
  963. 06416 #       define SYS_XIT        1 /* fcn code for sys_xit(parent, proc) */
  964. 06417 #       define SYS_GETSP      2 /* fcn code for sys_sp(proc, &new_sp) */
  965. 06418 #       define SYS_OLDSIG     3 /* fcn code for sys_oldsig(proc, sig) */
  966. 06419 #       define SYS_FORK       4 /* fcn code for sys_fork(parent, child) */
  967. 06420 #       define SYS_NEWMAP     5 /* fcn code for sys_newmap(procno, map_ptr) */
  968. 06421 #       define SYS_COPY       6 /* fcn code for sys_copy(ptr) */
  969. 06422 #       define SYS_EXEC       7 /* fcn code for sys_exec(procno, new_sp) */
  970. 06423 #       define SYS_TIMES      8 /* fcn code for sys_times(procno, bufptr) */
  971. 06424 #       define SYS_ABORT      9 /* fcn code for sys_abort() */
  972. 06425 #       define SYS_FRESH     10 /* fcn code for sys_fresh()  (Atari only) */
  973. 06426 #       define SYS_KILL      11 /* fcn code for sys_kill(proc, sig) */
  974. 06427 #       define SYS_GBOOT     12 /* fcn code for sys_gboot(procno, bootptr) */
  975. 06428 #       define SYS_UMAP      13 /* fcn code for sys_umap(procno, etc) */
  976. 06429 #       define SYS_MEM       14 /* fcn code for sys_mem() */
  977. 06430 #       define SYS_TRACE     15 /* fcn code for sys_trace(req,pid,addr,data) */
  978. 06431 #       define SYS_VCOPY     16 /* fnc code for sys_vcopy(src_proc, dest_proc,
  979. 06432                                    vcopy_s, vcopy_ptr) */
  980. 06433 #       define SYS_SENDSIG   17 /* fcn code for sys_sendsig(&sigmsg) */
  981. 06434 #       define SYS_SIGRETURN 18 /* fcn code for sys_sigreturn(&sigmsg) */
  982. 06435 #       define SYS_ENDSIG    19 /* fcn code for sys_endsig(procno) */
  983. 06436 #       define SYS_GETMAP    20 /* fcn code for sys_getmap(procno, map_ptr) */
  984. 06437
  985. 06438 #define HARDWARE          -1    /* used as source on interrupt generated msgs*/
  986. 06439
  987. 06440 /* Names of message fields for messages to CLOCK task. */
  988. 06441 #define DELTA_TICKS    m6_l1    /* alarm interval in clock ticks */
  989. 06442 #define FUNC_TO_CALL   m6_f1    /* pointer to function to call */
  990. 06443 #define NEW_TIME       m6_l1    /* value to set clock to (SET_TIME) */
  991. 06444 #define CLOCK_PROC_NR  m6_i1    /* which proc (or task) wants the alarm? */
  992. 06445 #define SECONDS_LEFT   m6_l1    /* how many seconds were remaining */
  993. 06446
  994. 06447 /* Names of message fields used for messages to block and character tasks. */
  995. 06448 #define DEVICE         m2_i1    /* major-minor device */
  996. 06449 #define PROC_NR        m2_i2    /* which (proc) wants I/O? */
  997. 06450 #define COUNT          m2_i3    /* how many bytes to transfer */
  998. 06451 #define REQUEST        m2_i3    /* ioctl request code */
  999. 06452 #define POSITION       m2_l1    /* file offset */
  1000. 06453 #define ADDRESS        m2_p1    /* core buffer address */
  1001. 06454
  1002. .Ep 68 include/minix/com.h
  1003. 06455 /* Names of message fields for messages to TTY task. */
  1004. 06456 #define TTY_LINE       DEVICE   /* message parameter: terminal line */
  1005. 06457 #define TTY_REQUEST    COUNT    /* message parameter: ioctl request code */
  1006. 06458 #define TTY_SPEK       POSITION /* message parameter: ioctl speed, erasing */
  1007. 06459 #define TTY_FLAGS      m2_l2    /* message parameter: ioctl tty mode */
  1008. 06460 #define TTY_PGRP       m2_i3    /* message parameter: process group */  
  1009. 06461
  1010. 06462 /* Names of the message fields for QIC 02 status reply from tape driver */
  1011. 06463 #define TAPE_STAT0      m2_l1
  1012. 06464 #define TAPE_STAT1      m2_l2
  1013. 06465
  1014. 06466 /* Names of messages fields used in reply messages from tasks. */
  1015. 06467 #define REP_PROC_NR    m2_i1    /* # of proc on whose behalf I/O was done */
  1016. 06468 #define REP_STATUS     m2_i2    /* bytes transferred or error number */
  1017. 06469
  1018. 06470 /* Names of fields for copy message to SYSTASK. */
  1019. 06471 #define SRC_SPACE      m5_c1    /* T or D space (stack is also D) */
  1020. 06472 #define SRC_PROC_NR    m5_i1    /* process to copy from */
  1021. 06473 #define SRC_BUFFER     m5_l1    /* virtual address where data come from */
  1022. 06474 #define DST_SPACE      m5_c2    /* T or D space (stack is also D) */
  1023. 06475 #define DST_PROC_NR    m5_i2    /* process to copy to */
  1024. 06476 #define DST_BUFFER     m5_l2    /* virtual address where data go to */
  1025. 06477 #define COPY_BYTES     m5_l3    /* number of bytes to copy */
  1026. 06478
  1027. 06479 /* Field names for accounting, SYSTASK and miscellaneous. */
  1028. 06480 #define USER_TIME      m4_l1    /* user time consumed by process */
  1029. 06481 #define SYSTEM_TIME    m4_l2    /* system time consumed by process */
  1030. 06482 #define CHILD_UTIME    m4_l3    /* user time consumed by process' children */
  1031. 06483 #define CHILD_STIME    m4_l4    /* sys time consumed by process' children */
  1032. 06484 #define BOOT_TICKS     m4_l5    /* number of clock ticks since boot time */
  1033. 06485
  1034. 06486 #define PROC1          m1_i1    /* indicates a process */
  1035. 06487 #define PROC2          m1_i2    /* indicates a process */
  1036. 06488 #define PID            m1_i3    /* process id passed from MM to kernel */
  1037. 06489 #define STACK_PTR      m1_p1    /* used for stack ptr in sys_exec, sys_getsp */
  1038. 06490 #define PR             m6_i1    /* process number for sys_sig */
  1039. 06491 #define SIGNUM         m6_i2    /* signal number for sys_sig */
  1040. 06492 #define FUNC           m6_f1    /* function pointer for sys_sig */
  1041. 06493 #define MEM_PTR        m1_p1    /* tells where memory map is for sys_newmap */
  1042. 06494 #define NAME_PTR       m1_p2    /* tells where program name is for dmp */
  1043. 06495 #define IP_PTR         m1_p3    /* initial value for ip after exec */
  1044. 06496 #define SIG_PROC       m2_i1    /* process number for inform */
  1045. 06497 #define SIG_MAP        m2_l1    /* used by kernel for passing signal bit map */
  1046. 06498 #define SIG_MSG_PTR    m1_i1    /* pointer to info to build sig catch stack */
  1047. 06499 #define SIG_CTXT_PTR   m1_p1    /* pointer to info to restore signal context */
  1048. .Op 69 include/minix/config.h
  1049. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1050. include/minix/config.h    
  1051. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1052. 06500 #ifndef _CONFIG_H
  1053. 06501 #define _CONFIG_H
  1054. 06502
  1055. 06503 /* Minix release and version numbers. */
  1056. 06504 #define OS_RELEASE "2.0"
  1057. 06505 #define OS_VERSION "0"
  1058. 06506
  1059. 06507 /* This file sets configuration parameters for the MINIX kernel, FS, and MM.
  1060. 06508  * It is divided up into two main sections.  The first section contains
  1061. 06509  * user-settable parameters.  In the second section, various internal system
  1062. 06510  * parameters are set based on the user-settable parameters.
  1063. 06511  */
  1064. 06512
  1065. 06513 /*===========================================================================*
  1066. 06514  *              This section contains user-settable parameters               *
  1067. 06515  *===========================================================================*/
  1068. 06516 #define MACHINE       IBM_PC    /* Must be one of the names listed below */
  1069. 06517
  1070. 06518 #define IBM_PC             1    /* any  8088 or 80x86-based system */
  1071. 06519 #define SUN_4             40    /* any Sun SPARC-based system */
  1072. 06520 #define SUN_4_60          40    /* Sun-4/60 (aka SparcStation 1 or Campus) */
  1073. 06521 #define ATARI             60    /* ATARI ST/STe/TT (68000/68030) */
  1074. 06522 #define AMIGA             61    /* Commodore Amiga (68000) */
  1075. 06523 #define MACINTOSH         62    /* Apple Macintosh (68000) */
  1076. 06524
  1077. 06525 /* Word size in bytes (a constant equal to sizeof(int)). */
  1078. 06526 #if __ACK__
  1079. 06527 #define _WORD_SIZE      _EM_WSIZE
  1080. 06528 #endif
  1081. 06529
  1082. 06530
  1083. 06531 /* If ROBUST is set to 1, writes of i-node, directory, and indirect blocks
  1084. 06532  * from the cache happen as soon as the blocks are modified.  This gives a more
  1085. 06533  * robust, but slower, file system.  If it is set to 0, these blocks are not
  1086. 06534  * given any special treatment, which may cause problems if the system crashes.
  1087. 06535  */
  1088. 06536 #define ROBUST             0    /* 0 for speed, 1 for robustness */
  1089. 06537
  1090. 06538 /* Number of slots in the process table for user processes. */
  1091. 06539 #define NR_PROCS          32
  1092. 06540
  1093. 06541 /* The buffer cache should be made as large as you can afford. */
  1094. 06542 #if (MACHINE == IBM_PC && _WORD_SIZE == 2)
  1095. 06543 #define NR_BUFS           40    /* # blocks in the buffer cache */
  1096. 06544 #define NR_BUF_HASH       64    /* size of buf hash table; MUST BE POWER OF 2*/
  1097. 06545 #endif
  1098. 06546
  1099. 06547 #if (MACHINE == IBM_PC && _WORD_SIZE == 4)
  1100. 06548 #define NR_BUFS         1024    /* # blocks in the buffer cache */
  1101. 06549 #define NR_BUF_HASH     2048    /* size of buf hash table; MUST BE POWER OF 2*/
  1102. 06550 #endif
  1103. 06551
  1104. 06552 #if (MACHINE == SUN_4_60)
  1105. 06553 #define NR_BUFS          512    /* # blocks in the buffer cache (<=1536) */
  1106. 06554 #define NR_BUF_HASH      512    /* size of buf hash table; MUST BE POWER OF 2*/
  1107. .Ep 70 include/minix/config.h
  1108. 06555 #endif
  1109. 06556
  1110. 06557 #if (MACHINE == ATARI)
  1111. 06558 #define NR_BUFS         1536    /* # blocks in the buffer cache (<=1536) */
  1112. 06559 #define NR_BUF_HASH     2048    /* size of buf hash table; MUST BE POWER OF 2*/
  1113. 06560 #endif
  1114. 06561
  1115. 06562 /* Defines for kernel configuration. */
  1116. 06563 #define AUTO_BIOS          0    /* xt_wini.c - use Western's autoconfig BIOS */
  1117. 06564 #define LINEWRAP           1    /* console.c - wrap lines at column 80 */
  1118. 06565 #define ALLOW_GAP_MESSAGES 1    /* proc.c - allow messages in the gap between
  1119. 06566                                  * the end of bss and lowest stack address */
  1120. 06567
  1121. 06568 /* Enable or disable the second level file system cache on the RAM disk. */
  1122. 06569 #define ENABLE_CACHE2      1
  1123. 06570
  1124. 06571 /* Include or exclude device drivers.  Set to 1 to include, 0 to exclude. */
  1125. 06572 #define ENABLE_NETWORKING  1    /* enable TCP/IP code */
  1126. 06573 #define ENABLE_AT_WINI     1    /* enable AT winchester driver */
  1127. 06574 #define ENABLE_BIOS_WINI   1    /* enable BIOS winchester driver */
  1128. 06575 #define ENABLE_ESDI_WINI   1    /* enable ESDI winchester driver */
  1129. 06576 #define ENABLE_XT_WINI     0    /* enable XT winchester driver */
  1130. 06577 #define ENABLE_ADAPTEC_SCSI 1   /* enable ADAPTEC SCSI driver */
  1131. 06578 #define ENABLE_MITSUMI_CDROM 0  /* enable Mitsumi CD-ROM driver */
  1132. 06579 #define ENABLE_SB_AUDIO    0    /* enable Soundblaster audio driver */
  1133. 06580
  1134. 06581 /* DMA_SECTORS may be increased to speed up DMA based drivers. */
  1135. 06582 #define DMA_SECTORS        1    /* DMA buffer size (must be >= 1) */
  1136. 06583
  1137. 06584 /* Include or exclude backwards compatibility code. */
  1138. 06585 #define ENABLE_BINCOMPAT   0    /* for binaries using obsolete calls */
  1139. 06586 #define ENABLE_SRCCOMPAT   0    /* for sources using obsolete calls */
  1140. 06587
  1141. 06588 /* Determine which device to use for pipes. */
  1142. 06589 #define PIPE_DEV    ROOT_DEV    /* put pipes on root device */
  1143. 06590
  1144. 06591 /* NR_CONS, NR_RS_LINES, and NR_PTYS determine the number of terminals the
  1145. 06592  * system can handle.
  1146. 06593  */
  1147. 06594 #define NR_CONS            2    /* # system consoles (1 to 8) */
  1148. 06595 #define NR_RS_LINES        2    /* # rs232 terminals (0, 1, or 2) */
  1149. 06596 #define NR_PTYS            4    /* # pseudo terminals (0 to 64) */
  1150. 06597
  1151. 06598 #if (MACHINE == ATARI)
  1152. 06599 /* The next define says if you have an ATARI ST or TT */
  1153. 06600 #define ATARI_TYPE        TT
  1154. 06601 #define ST                 1    /* all ST's and Mega ST's */
  1155. 06602 #define STE                2    /* all STe and Mega STe's */
  1156. 06603 #define TT                 3
  1157. 06604
  1158. 06605 /* if SCREEN is set to 1 graphical screen operations are possible */
  1159. 06606 #define SCREEN             1    
  1160. 06607
  1161. 06608 /* This define says whether the keyboard generates VT100 or IBM_PC escapes. */
  1162. 06609 #define KEYBOARD       VT100    /* either VT100 or IBM_PC */
  1163. 06610 #define VT100            100
  1164. 06611
  1165. 06612 /* The next define determines the kind of partitioning. */
  1166. 06613 #define PARTITIONING   SUPRA    /* one of the following or ATARI */
  1167. 06614 #define SUPRA              1    /*ICD, SUPRA and BMS are all the same */
  1168. .Op 71 include/minix/config.h
  1169. 06615 #define BMS                1
  1170. 06616 #define ICD                1
  1171. 06617 #define CBHD               2
  1172. 06618 #define EICKMANN           3
  1173. 06619
  1174. 06620 /* Define the number of hard disk drives on your system. */
  1175. 06621 #define NR_ACSI_DRIVES     3    /* typically 0 or 1 */
  1176. 06622 #define NR_SCSI_DRIVES     1    /* typically 0 (ST, STe) or 1 (TT) */
  1177. 06623
  1178. 06624 /* Some systems need to have a little delay after each winchester
  1179. 06625  * commands. These systems need FAST_DISK set to 0. Other disks do not
  1180. 06626  * need this delay, and thus can have FAST_DISK set to 1 to avoid this delay.
  1181. 06627  */
  1182. 06628 #define FAST_DISK          1    /* 0 or 1 */
  1183. 06629
  1184. 06630 /* Note: if you want to make your kernel smaller, you can set NR_FD_DRIVES
  1185. 06631  * to 0. You will still be able to boot minix.img from floppy. However, you
  1186. 06632  * MUST fetch both the root and usr filesystem from a hard disk
  1187. 06633  */
  1188. 06634
  1189. 06635 /* Define the number of floppy disk drives on your system. */
  1190. 06636 #define NR_FD_DRIVES       1    /* 0, 1, 2 */
  1191. 06637
  1192. 06638 /* This configuration define controls parallel printer code. */
  1193. 06639 #define PAR_PRINTER        1    /* disable (0) / enable (1) parallel printer */
  1194. 06640
  1195. 06641 /* This configuration define controls disk controller clock code. */
  1196. 06642 #define HD_CLOCK           1    /* disable (0) / enable (1) hard disk clock */
  1197. 06643
  1198. 06644 #endif
  1199. 06645
  1200. 06646
  1201. 06647 /*===========================================================================*
  1202. 06648  *      There are no user-settable parameters after this line                *
  1203. 06649  *===========================================================================*/
  1204. 06650 /* Set the CHIP type based on the machine selected. The symbol CHIP is actually
  1205. 06651  * indicative of more than just the CPU.  For example, machines for which
  1206. 06652  * CHIP == INTEL are expected to have 8259A interrrupt controllers and the
  1207. 06653  * other properties of IBM PC/XT/AT/386 types machines in general. */
  1208. 06654 #define INTEL             1     /* CHIP type for PC, XT, AT, 386 and clones */
  1209. 06655 #define M68000            2     /* CHIP type for Atari, Amiga, Macintosh    */
  1210. 06656 #define SPARC             3     /* CHIP type for SUN-4 (e.g. SPARCstation)  */
  1211. 06657
  1212. 06658 /* Set the FP_FORMAT type based on the machine selected, either hw or sw    */
  1213. 06659 #define FP_NONE           0     /* no floating point support                */
  1214. 06660 #define FP_IEEE           1     /* conform IEEE floating point standard     */
  1215. 06661
  1216. 06662 #if (MACHINE == IBM_PC)
  1217. 06663 #define CHIP          INTEL
  1218. 06664 #define SHADOWING         0
  1219. 06665 #define ENABLE_WINI     (ENABLE_AT_WINI || ENABLE_BIOS_WINI || 
  1220. 06666                         ENABLE_ESDI_WINI || ENABLE_XT_WINI)
  1221. 06667 #define ENABLE_SCSI     (ENABLE_ADAPTEC_SCSI)
  1222. 06668 #define ENABLE_CDROM    (ENABLE_MITSUMI_CDROM)
  1223. 06669 #define ENABLE_AUDIO    (ENABLE_SB_AUDIO)
  1224. 06670 #endif
  1225. 06671
  1226. 06672 #if (MACHINE == ATARI) || (MACHINE == AMIGA) || (MACHINE == MACINTOSH)
  1227. 06673 #define CHIP         M68000
  1228. 06674 #define SHADOWING         1
  1229. .Ep 72 include/minix/config.h
  1230. 06675 #endif
  1231. 06676
  1232. 06677 #if (MACHINE == SUN_4) || (MACHINE == SUN_4_60)
  1233. 06678 #define CHIP          SPARC
  1234. 06679 #define FP_FORMAT   FP_IEEE
  1235. 06680 #define SHADOWING         0
  1236. 06681 #endif
  1237. 06682
  1238. 06683 #if (MACHINE == ATARI) || (MACHINE == SUN_4)
  1239. 06684 #define ASKDEV            1     /* ask for boot device */
  1240. 06685 #define FASTLOAD          1     /* use multiple block transfers to init ram */
  1241. 06686 #endif
  1242. 06687
  1243. 06688 #if (ATARI_TYPE == TT) /* and all other 68030's */
  1244. 06689 #define FPP
  1245. 06690 #undef SHADOWING
  1246. 06691 #define SHADOWING 0
  1247. 06692 #endif
  1248. 06693
  1249. 06694 #ifndef FP_FORMAT
  1250. 06695 #define FP_FORMAT   FP_NONE
  1251. 06696 #endif
  1252. 06697
  1253. 06698 /* The file buf.h uses MAYBE_WRITE_IMMED. */
  1254. 06699 #if ROBUST
  1255. 06700 #define MAYBE_WRITE_IMMED  WRITE_IMMED  /* slower but perhaps safer */
  1256. 06701 #else
  1257. 06702 #define MAYBE_WRITE_IMMED 0             /* faster */
  1258. 06703 #endif
  1259. 06704
  1260. 06705 #ifndef MACHINE
  1261. 06706 error "In <minix/config.h> please define MACHINE"
  1262. 06707 #endif
  1263. 06708
  1264. 06709 #ifndef CHIP
  1265. 06710 error "In <minix/config.h> please define MACHINE to have a legal value"
  1266. 06711 #endif
  1267. 06712
  1268. 06713 #if (MACHINE == 0)
  1269. 06714 error "MACHINE has incorrect value (0)"
  1270. 06715 #endif
  1271. 06716
  1272. 06717 #endif /* _CONFIG_H */
  1273. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1274. include/minix/const.h    
  1275. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1276. 06800 /* Copyright (C) 1997 by Prentice-Hall, Inc.  Permission is hereby granted
  1277. 06801  * to redistribute the binary and source programs of this system for
  1278. 06802  * educational or research purposes.  For other use, written permission from
  1279. 06803  * Prentice-Hall is required.  
  1280. 06804  */
  1281. 06805
  1282. 06806 #define EXTERN        extern    /* used in *.h files */
  1283. 06807 #define PRIVATE       static    /* PRIVATE x limits the scope of x */
  1284. 06808 #define PUBLIC                  /* PUBLIC is the opposite of PRIVATE */
  1285. 06809 #define FORWARD       static    /* some compilers require this to be 'static'*/
  1286. .Op 73 include/minix/const.h
  1287. 06810
  1288. 06811 #define TRUE               1    /* used for turning integers into Booleans */
  1289. 06812 #define FALSE              0    /* used for turning integers into Booleans */
  1290. 06813
  1291. 06814 #define HZ                60    /* clock freq (software settable on IBM-PC) */
  1292. 06815 #define BLOCK_SIZE      1024    /* # bytes in a disk block */
  1293. 06816 #define SUPER_USER (uid_t) 0    /* uid_t of superuser */
  1294. 06817
  1295. 06818 #define MAJOR              8    /* major device = (dev>>MAJOR) & 0377 */
  1296. 06819 #define MINOR              0    /* minor device = (dev>>MINOR) & 0377 */
  1297. 06820
  1298. 06821 #define NULL     ((void *)0)    /* null pointer */
  1299. 06822 #define CPVEC_NR          16    /* max # of entries in a SYS_VCOPY request */
  1300. 06823 #define NR_IOREQS       MIN(NR_BUFS, 64)
  1301. 06824                                 /* maximum number of entries in an iorequest */
  1302. 06825
  1303. 06826 #define NR_SEGS            3    /* # segments per process */
  1304. 06827 #define T                  0    /* proc[i].mem_map[T] is for text */
  1305. 06828 #define D                  1    /* proc[i].mem_map[D] is for data */
  1306. 06829 #define S                  2    /* proc[i].mem_map[S] is for stack */
  1307. 06830
  1308. 06831 /* Process numbers of some important processes. */
  1309. 06832 #define MM_PROC_NR         0    /* process number of memory manager */
  1310. 06833 #define FS_PROC_NR         1    /* process number of file system */
  1311. 06834 #define INET_PROC_NR       2    /* process number of the TCP/IP server */
  1312. 06835 #define INIT_PROC_NR    (INET_PROC_NR + ENABLE_NETWORKING)
  1313. 06836                                 /* init -- the process that goes multiuser */
  1314. 06837 #define LOW_USER        (INET_PROC_NR + ENABLE_NETWORKING)
  1315. 06838                                 /* first user not part of operating system */
  1316. 06839
  1317. 06840 /* Miscellaneous */
  1318. 06841 #define BYTE            0377    /* mask for 8 bits */
  1319. 06842 #define READING            0    /* copy data to user */
  1320. 06843 #define WRITING            1    /* copy data from user */
  1321. 06844 #define NO_NUM        0x8000    /* used as numerical argument to panic() */
  1322. 06845 #define NIL_PTR   (char *) 0    /* generally useful expression */
  1323. 06846 #define HAVE_SCATTERED_IO  1    /* scattered I/O is now standard */
  1324. 06847
  1325. 06848 /* Macros. */
  1326. 06849 #define MAX(a, b)   ((a) > (b) ? (a) : (b))
  1327. 06850 #define MIN(a, b)   ((a) < (b) ? (a) : (b))
  1328. 06851
  1329. 06852 /* Number of tasks. */
  1330. 06853 #define NR_TASKS        (9 + ENABLE_WINI + ENABLE_SCSI + ENABLE_CDROM 
  1331. 06854                         + ENABLE_NETWORKING + 2 * ENABLE_AUDIO)
  1332. 06855
  1333. 06856 /* Memory is allocated in clicks. */
  1334. 06857 #if (CHIP == INTEL)
  1335. 06858 #define CLICK_SIZE       256    /* unit in which memory is allocated */
  1336. 06859 #define CLICK_SHIFT        8    /* log2 of CLICK_SIZE */
  1337. 06860 #endif
  1338. 06861
  1339. 06862 #if (CHIP == SPARC) || (CHIP == M68000)
  1340. 06863 #define CLICK_SIZE      4096    /* unit in which memory is alocated */
  1341. 06864 #define CLICK_SHIFT       12    /* 2log of CLICK_SIZE */
  1342. 06865 #endif
  1343. 06866
  1344. 06867 #define click_to_round_k(n) 
  1345. 06868         ((unsigned) ((((unsigned long) (n) << CLICK_SHIFT) + 512) / 1024))
  1346. 06869 #if CLICK_SIZE < 1024
  1347. .Ep 74 include/minix/const.h
  1348. 06870 #define k_to_click(n) ((n) * (1024 / CLICK_SIZE))
  1349. 06871 #else
  1350. 06872 #define k_to_click(n) ((n) / (CLICK_SIZE / 1024))
  1351. 06873 #endif
  1352. 06874
  1353. 06875 #define ABS             -999    /* this process means absolute memory */
  1354. 06876
  1355. 06877 /* Flag bits for i_mode in the inode. */
  1356. 06878 #define I_TYPE          0170000 /* this field gives inode type */
  1357. 06879 #define I_REGULAR       0100000 /* regular file, not dir or special */
  1358. 06880 #define I_BLOCK_SPECIAL 0060000 /* block special file */
  1359. 06881 #define I_DIRECTORY     0040000 /* file is a directory */
  1360. 06882 #define I_CHAR_SPECIAL  0020000 /* character special file */
  1361. 06883 #define I_NAMED_PIPE    0010000 /* named pipe (FIFO) */
  1362. 06884 #define I_SET_UID_BIT   0004000 /* set effective uid_t on exec */
  1363. 06885 #define I_SET_GID_BIT   0002000 /* set effective gid_t on exec */
  1364. 06886 #define ALL_MODES       0006777 /* all bits for user, group and others */
  1365. 06887 #define RWX_MODES       0000777 /* mode bits for RWX only */
  1366. 06888 #define R_BIT           0000004 /* Rwx protection bit */
  1367. 06889 #define W_BIT           0000002 /* rWx protection bit */
  1368. 06890 #define X_BIT           0000001 /* rwX protection bit */
  1369. 06891 #define I_NOT_ALLOC     0000000 /* this inode is free */
  1370. 06892
  1371. 06893 /* Some limits. */
  1372. 06894 #define MAX_BLOCK_NR  ((block_t) 077777777)     /* largest block number */
  1373. 06895 #define HIGHEST_ZONE   ((zone_t) 077777777)     /* largest zone number */
  1374. 06896 #define MAX_INODE_NR      ((ino_t) 0177777)     /* largest inode number */
  1375. 06897 #define MAX_FILE_POS ((off_t) 037777777777)     /* largest legal file offset */
  1376. 06898
  1377. 06899 #define NO_BLOCK              ((block_t) 0)     /* absence of a block number */
  1378. 06900 #define NO_ENTRY                ((ino_t) 0)     /* absence of a dir entry */
  1379. 06901 #define NO_ZONE                ((zone_t) 0)     /* absence of a zone number */
  1380. 06902 #define NO_DEV                  ((dev_t) 0)     /* absence of a device numb */
  1381. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1382. include/minix/dl_eth.h    
  1383. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1384. 07000 /* The eth_stat struct is used in a DL_GETSTAT request the the ehw_task. */
  1385. 07001
  1386. 07002 #ifndef _ETH_HW_H
  1387. 07003 #define _ETH_HW_H
  1388. 07004
  1389. 07005 typedef struct eth_stat
  1390. 07006 {
  1391. 07007   unsigned long ets_recvErr,    /* # receive errors */
  1392. 07008         ets_sendErr,            /* # send error */
  1393. 07009         ets_OVW,                /* # buffer overwrite warnings */
  1394. 07010         ets_CRCerr,             /* # crc errors of read */
  1395. 07011         ets_frameAll,           /* # frames not alligned (# bits % 8 != 0) */
  1396. 07012         ets_missedP,            /* # packets missed due to slow processing */
  1397. 07013         ets_packetR,            /* # packets received */
  1398. 07014         ets_packetT,            /* # packets transmitted */
  1399. 07015         ets_transDef,           /* # transmission defered (Tx was busy) */
  1400. 07016         ets_collision,          /* # collissions */
  1401. 07017         ets_transAb,            /* # Tx aborted due to excess collisions */
  1402. 07018         ets_carrSense,          /* # carrier sense lost */
  1403. 07019         ets_fifoUnder,          /* # FIFO underruns (processor too busy) */
  1404. .Op 75 include/minix/dl_eth.h
  1405. 07020         ets_fifoOver,           /* # FIFO overruns (processor too busy) */
  1406. 07021         ets_CDheartbeat,        /* # times unable to transmit collision sig*/
  1407. 07022         ets_OWC;                /* # times out of window collision */
  1408. 07023 } eth_stat_t;
  1409. 07024
  1410. 07025 #endif /* _ETH_HW_H */
  1411. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1412. include/minix/fslib.h    
  1413. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1414. 07100 _PROTOTYPE( int bitmapsize, (bit_t _nr_bits)                            );
  1415. 07101 _PROTOTYPE( unsigned conv2, (int _norm, int _w)                         );
  1416. 07102 _PROTOTYPE( long conv4, (int _norm, long _x)                            );
  1417. 07103 _PROTOTYPE( void conv_inode, (struct inode *_rip, d1_inode *_dip,
  1418. 07104                              d2_inode *_dip2, int _rw_flag, int _magic) );
  1419. 07105 _PROTOTYPE( void old_icopy, (struct inode *_rip, d1_inode *_dip,
  1420. 07106                                               int _direction, int _norm));
  1421. 07107 _PROTOTYPE( void new_icopy, (struct inode *_rip, d2_inode *_dip,
  1422. 07108                                               int _direction, int _norm));
  1423. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1424. include/minix/jmp_buf.h    
  1425. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1426. 07200 /* This file is intended for use by assembly language programs that
  1427. 07201  * need to manipulate a jmp_buf.  It may only be used by those systems
  1428. 07202  * for which a jmp_buf is identical to a struct sigcontext.
  1429. 07203  */
  1430. 07204
  1431. 07205 #ifndef _JMP_BUF_H
  1432. 07206 #define _JMP_BUF_H
  1433. 07207
  1434. 07208 #if !defined(CHIP)
  1435. 07209 #include "error, configuration is not known"
  1436. 07210 #endif
  1437. 07211
  1438. 07212 #if (CHIP == INTEL)
  1439. 07213 #if _WORD_SIZE == 4
  1440. 07214 #define JB_FLAGS         0
  1441. 07215 #define JB_MASK          4
  1442. 07216 #define JB_GS            8
  1443. 07217 #define JB_FS           10
  1444. 07218 #define JB_ES           12
  1445. 07219 #define JB_DS           14
  1446. 07220 #define JB_DI           16
  1447. 07221 #define JB_SI           20
  1448. 07222 #define JB_BP           24
  1449. 07223 #define JB_ST           28
  1450. 07224 #define JB_BX           32
  1451. 07225 #define JB_DX           36
  1452. 07226 #define JB_CX           40
  1453. 07227 #define JB_AX           44
  1454. 07228 #define JB_RETADR       48
  1455. 07229 #define JB_IP           52
  1456. .Ep 76 include/minix/jmp_buf.h
  1457. 07230 #define JB_CS           56
  1458. 07231 #define JB_PSW          60
  1459. 07232 #define JB_SP           64
  1460. 07233 #define JB_SS           68
  1461. 07234 #else /* _WORD_SIZE == 2 */
  1462. 07235 #define JB_FLAGS         0
  1463. 07236 #define JB_MASK          2
  1464. 07237 #define JB_ES            6
  1465. 07238 #define JB_DS            8 
  1466. 07239 #define JB_DI           10
  1467. 07240 #define JB_SI           12
  1468. 07241 #define JB_BP           14
  1469. 07242 #define JB_ST           16
  1470. 07243 #define JB_BX           18
  1471. 07244 #define JB_DX           20
  1472. 07245 #define JB_CX           22
  1473. 07246 #define JB_AX           24
  1474. 07247 #define JB_RETADR       26
  1475. 07248 #define JB_IP           28
  1476. 07249 #define JB_CS           30
  1477. 07250 #define JB_PSW          32
  1478. 07251 #define JB_SP           34
  1479. 07252 #define JB_SS           36
  1480. 07253 #endif /* _WORD_SIZE == 2 */
  1481. 07254 #else /* !(CHIP == INTEL) */
  1482. 07255 #if (CHIP == M68000)
  1483. 07256 #define JB_FLAGS         0
  1484. 07257 #define JB_MASK          2
  1485. 07258 #define JB_RETREG        6
  1486. 07259 #define JB_D1           10
  1487. 07260 #define JB_D2           14
  1488. 07261 #define JB_D3           18
  1489. 07262 #define JB_D4           22
  1490. 07263 #define JB_D5           26
  1491. 07264 #define JB_D6           20
  1492. 07265 #define JB_D7           34
  1493. 07266 #define JB_A0           38
  1494. 07267 #define JB_A1           42
  1495. 07268 #define JB_A2           46
  1496. 07269 #define JB_A3           50
  1497. 07270 #define JB_A4           54
  1498. 07271 #define JB_A5           58
  1499. 07272 #define JB_A6           62
  1500. 07273 #define JB_SP           66
  1501. 07274 #define JB_PC           70
  1502. 07275 #define JB_PSW          74
  1503. 07276 #else /* !(CHIP == INTEL) && !(CHIP == M68000) */
  1504. 07277 #include "error, CHIP is not supported"
  1505. 07278 #endif /* (CHIP == INTEL) */
  1506. 07279
  1507. 07280 /* Defines from C headers needed in assembly code.  The headers have too
  1508. 07281  * much C stuff to used directly.
  1509. 07282  */
  1510. 07283 #define SIG_BLOCK       0       /* must agree with <signal.h> */
  1511. 07284 #define SC_SIGCONTEXT   2       /* must agree with <sys/sigcontext.h> */
  1512. 07285 #define SC_NOREGLOCALS  4       /* must agree with <sys/sigcontext.h> */
  1513. 07286 #endif /* _JMP_BUF_H */
  1514. .Op 77 include/minix/keymap.h
  1515. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1516. include/minix/keymap.h    
  1517. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1518. 07300 /*      keymap.h - defines for keymapping               Author: Marcus Hampel
  1519. 07301  */
  1520. 07302 #ifndef _SYS__KEYMAP_H
  1521. 07303 #define _SYS__KEYMAP_H
  1522. 07304
  1523. 07305 #define C(c)    ((c) & 0x1F)    /* Map to control code          */
  1524. 07306 #define A(c)    ((c) | 0x80)    /* Set eight bit (ALT)          */
  1525. 07307 #define CA(c)   A(C(c))         /* Control-Alt                  */
  1526. 07308 #define L(c)    ((c) | HASCAPS) /* Add "Caps Lock has effect" attribute */
  1527. 07309
  1528. 07310 #define EXT     0x0100          /* Normal function keys         */
  1529. 07311 #define CTRL    0x0200          /* Control key                  */
  1530. 07312 #define SHIFT   0x0400          /* Shift key                    */
  1531. 07313 #define ALT     0x0800          /* Alternate key                */
  1532. 07314 #define EXTKEY  0x1000          /* extended keycode             */
  1533. 07315 #define HASCAPS 0x8000          /* Caps Lock has effect         */
  1534. 07316
  1535. 07317 /* Numeric keypad */
  1536. 07318 #define HOME    (0x01 + EXT)
  1537. 07319 #define END     (0x02 + EXT)
  1538. 07320 #define UP      (0x03 + EXT)
  1539. 07321 #define DOWN    (0x04 + EXT)
  1540. 07322 #define LEFT    (0x05 + EXT)
  1541. 07323 #define RIGHT   (0x06 + EXT)
  1542. 07324 #define PGUP    (0x07 + EXT)
  1543. 07325 #define PGDN    (0x08 + EXT)
  1544. 07326 #define MID     (0x09 + EXT)
  1545. 07327 #define NMIN    (0x0A + EXT)
  1546. 07328 #define PLUS    (0x0B + EXT)
  1547. 07329 #define INSRT   (0x0C + EXT)
  1548. 07330
  1549. 07331 /* Alt + Numeric keypad */
  1550. 07332 #define AHOME   (0x01 + ALT)
  1551. 07333 #define AEND    (0x02 + ALT)
  1552. 07334 #define AUP     (0x03 + ALT)
  1553. 07335 #define ADOWN   (0x04 + ALT)
  1554. 07336 #define ALEFT   (0x05 + ALT)
  1555. 07337 #define ARIGHT  (0x06 + ALT)
  1556. 07338 #define APGUP   (0x07 + ALT)
  1557. 07339 #define APGDN   (0x08 + ALT)
  1558. 07340 #define AMID    (0x09 + ALT)
  1559. 07341 #define ANMIN   (0x0A + ALT)
  1560. 07342 #define APLUS   (0x0B + ALT)
  1561. 07343 #define AINSRT  (0x0C + ALT)
  1562. 07344
  1563. 07345 /* Ctrl + Numeric keypad */
  1564. 07346 #define CHOME   (0x01 + CTRL)
  1565. 07347 #define CEND    (0x02 + CTRL)
  1566. 07348 #define CUP     (0x03 + CTRL)
  1567. 07349 #define CDOWN   (0x04 + CTRL)
  1568. 07350 #define CLEFT   (0x05 + CTRL)
  1569. 07351 #define CRIGHT  (0x06 + CTRL)
  1570. 07352 #define CPGUP   (0x07 + CTRL)
  1571. 07353 #define CPGDN   (0x08 + CTRL)
  1572. 07354 #define CMID    (0x09 + CTRL)
  1573. .Ep 78 include/minix/keymap.h
  1574. 07355 #define CNMIN   (0x0A + CTRL)
  1575. 07356 #define CPLUS   (0x0B + CTRL)
  1576. 07357 #define CINSRT  (0x0C + CTRL)
  1577. 07358
  1578. 07359 /* Lock keys */
  1579. 07360 #define CALOCK  (0x0D + EXT)    /* caps lock    */
  1580. 07361 #define NLOCK   (0x0E + EXT)    /* number lock  */
  1581. 07362 #define SLOCK   (0x0F + EXT)    /* scroll lock  */
  1582. 07363
  1583. 07364 /* Function keys */
  1584. 07365 #define F1      (0x10 + EXT)
  1585. 07366 #define F2      (0x11 + EXT)
  1586. 07367 #define F3      (0x12 + EXT)
  1587. 07368 #define F4      (0x13 + EXT)
  1588. 07369 #define F5      (0x14 + EXT)
  1589. 07370 #define F6      (0x15 + EXT)
  1590. 07371 #define F7      (0x16 + EXT)
  1591. 07372 #define F8      (0x17 + EXT)
  1592. 07373 #define F9      (0x18 + EXT)
  1593. 07374 #define F10     (0x19 + EXT)
  1594. 07375 #define F11     (0x1A + EXT)
  1595. 07376 #define F12     (0x1B + EXT)
  1596. 07377
  1597. 07378 /* Alt+Fn */
  1598. 07379 #define AF1     (0x10 + ALT)
  1599. 07380 #define AF2     (0x11 + ALT)
  1600. 07381 #define AF3     (0x12 + ALT)
  1601. 07382 #define AF4     (0x13 + ALT)
  1602. 07383 #define AF5     (0x14 + ALT)
  1603. 07384 #define AF6     (0x15 + ALT)
  1604. 07385 #define AF7     (0x16 + ALT)
  1605. 07386 #define AF8     (0x17 + ALT)
  1606. 07387 #define AF9     (0x18 + ALT)
  1607. 07388 #define AF10    (0x19 + ALT)
  1608. 07389 #define AF11    (0x1A + ALT)
  1609. 07390 #define AF12    (0x1B + ALT)
  1610. 07391
  1611. 07392 /* Ctrl+Fn */
  1612. 07393 #define CF1     (0x10 + CTRL)
  1613. 07394 #define CF2     (0x11 + CTRL)
  1614. 07395 #define CF3     (0x12 + CTRL)
  1615. 07396 #define CF4     (0x13 + CTRL)
  1616. 07397 #define CF5     (0x14 + CTRL)
  1617. 07398 #define CF6     (0x15 + CTRL)
  1618. 07399 #define CF7     (0x16 + CTRL)
  1619. 07400 #define CF8     (0x17 + CTRL)
  1620. 07401 #define CF9     (0x18 + CTRL)
  1621. 07402 #define CF10    (0x19 + CTRL)
  1622. 07403 #define CF11    (0x1A + CTRL)
  1623. 07404 #define CF12    (0x1B + CTRL)
  1624. 07405
  1625. 07406 /* Shift+Fn */
  1626. 07407 #define SF1     (0x10 + SHIFT)
  1627. 07408 #define SF2     (0x11 + SHIFT)
  1628. 07409 #define SF3     (0x12 + SHIFT)
  1629. 07410 #define SF4     (0x13 + SHIFT)
  1630. 07411 #define SF5     (0x14 + SHIFT)
  1631. 07412 #define SF6     (0x15 + SHIFT)
  1632. 07413 #define SF7     (0x16 + SHIFT)
  1633. 07414 #define SF8     (0x17 + SHIFT)
  1634. .Op 79 include/minix/keymap.h
  1635. 07415 #define SF9     (0x18 + SHIFT)
  1636. 07416 #define SF10    (0x19 + SHIFT)
  1637. 07417 #define SF11    (0x1A + SHIFT)
  1638. 07418 #define SF12    (0x1B + SHIFT)
  1639. 07419
  1640. 07420 /* Alt+Shift+Fn */
  1641. 07421 #define ASF1    (0x10 + ALT + SHIFT)
  1642. 07422 #define ASF2    (0x11 + ALT + SHIFT)
  1643. 07423 #define ASF3    (0x12 + ALT + SHIFT)
  1644. 07424 #define ASF4    (0x13 + ALT + SHIFT)
  1645. 07425 #define ASF5    (0x14 + ALT + SHIFT)
  1646. 07426 #define ASF6    (0x15 + ALT + SHIFT)
  1647. 07427 #define ASF7    (0x16 + ALT + SHIFT)
  1648. 07428 #define ASF8    (0x17 + ALT + SHIFT)
  1649. 07429 #define ASF9    (0x18 + ALT + SHIFT)
  1650. 07430 #define ASF10   (0x19 + ALT + SHIFT)
  1651. 07431 #define ASF11   (0x1A + ALT + SHIFT)
  1652. 07432 #define ASF12   (0x1B + ALT + SHIFT)
  1653. 07433
  1654. 07434 #define MAP_COLS        6       /* Number of columns in keymap */
  1655. 07435 #define NR_SCAN_CODES   0x80    /* Number of scan codes (rows in keymap) */
  1656. 07436
  1657. 07437 typedef unsigned short keymap_t[NR_SCAN_CODES * MAP_COLS];
  1658. 07438
  1659. 07439 #define KEY_MAGIC       "KMAZ"  /* Magic number of keymap file */
  1660. 07440
  1661. 07441 #endif /* _SYS__KEYMAP_H */
  1662. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1663. include/minix/minlib.h    
  1664. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1665. 07500 #ifndef _MINLIB
  1666. 07501 #define _MINLIB
  1667. 07502
  1668. 07503 #ifndef _ANSI_H
  1669. 07504 #include <ansi.h>
  1670. 07505 #endif
  1671. 07506
  1672. 07507 /* Miscellaneous BSD. */
  1673. 07508 _PROTOTYPE(void swab, (char *_from, char *_to, int _count));
  1674. 07509 _PROTOTYPE(char *itoa, (int _n));
  1675. 07510 _PROTOTYPE(char *getpass, (const char *_prompt));
  1676. 07511
  1677. 07512 /* Miscellaneous MINIX. */
  1678. 07513 _PROTOTYPE(void std_err, (char *_s));
  1679. 07514 _PROTOTYPE(void prints, (const char *_s, ...));
  1680. 07515 _PROTOTYPE(int fsversion, (char *_dev, char *_prog));
  1681. 07516 _PROTOTYPE(int getprocessor, (void));
  1682. 07517 _PROTOTYPE(int load_mtab, (char *_prog_name));
  1683. 07518 _PROTOTYPE(int rewrite_mtab, (char *_prog_name));
  1684. 07519 _PROTOTYPE(int get_mtab_entry, (char *_s1, char *_s2, char *_s3, char *_s4));
  1685. 07520 _PROTOTYPE(int put_mtab_entry, (char *_s1, char *_s2, char *_s3, char *_s4));
  1686. 07521
  1687. 07522 #endif
  1688. .Ep 80 include/minix/partition.h
  1689. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1690. include/minix/partition.h    
  1691. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1692. 07600 /*      minix/partition.h                               Author: Kees J. Bot
  1693. 07601  *                                                              7 Dec 1995
  1694. 07602  * Place of a partition on disk and the disk geometry,
  1695. 07603  * for use with the DIOCGETP and DIOCSETP ioctl's.
  1696. 07604  */
  1697. 07605 #ifndef _MINIX__PARTITION_H
  1698. 07606 #define _MINIX__PARTITION_H
  1699. 07607
  1700. 07608 struct partition {
  1701. 07609   u32_t base;           /* byte offset to the partition start */
  1702. 07610   u32_t size;           /* number of bytes in the partition */
  1703. 07611   unsigned cylinders;   /* disk geometry */
  1704. 07612   unsigned heads;
  1705. 07613   unsigned sectors;
  1706. 07614 };
  1707. 07615 #endif /* _MINIX__PARTITION_H */
  1708. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1709. include/minix/sound.h    
  1710. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1711. 07700 /* Definitions used by /dev/audio and /dev/mixer.
  1712. 07701  *
  1713. 07702  *  Feb 13 1995                 Author: Michel R. Prevenier 
  1714. 07703  */
  1715. 07704
  1716. 07705 #ifndef SOUND_H
  1717. 07706 #define SOUND_H
  1718. 07707
  1719. 07708
  1720. 07709 /* ------- Mixer stuff ------- */
  1721. 07710
  1722. 07711 /* Available devices */
  1723. 07712 enum Device
  1724. 07713 {
  1725. 07714   Master,     /* Master volume */
  1726. 07715   Dac,        /* DSP, digitized sound */
  1727. 07716   Fm,         /* Fm synthesized sound */
  1728. 07717   Cd,         /* Compact */
  1729. 07718   Line,       /* Line in */
  1730. 07719   Mic,        /* Microphone */
  1731. 07720   Speaker,    /* Pc speaker */
  1732. 07721   Treble,     /* Treble */
  1733. 07722   Bass        /* Bass */
  1734. 07723 };
  1735. 07724
  1736. 07725 enum InputState
  1737. 07726 {
  1738. 07727   ON, OFF
  1739. 07728 };
  1740. 07729
  1741. .Op 81 include/minix/sound.h
  1742. 07730 /* Volume levels range from 0 to 31, bass & treble range from 0 to 15 */
  1743. 07731 struct volume_level
  1744. 07732 {
  1745. 07733   enum Device   device; 
  1746. 07734   int           left;           
  1747. 07735   int           right;
  1748. 07736 };
  1749. 07737
  1750. 07738 struct inout_ctrl
  1751. 07739 {
  1752. 07740   enum Device           device;
  1753. 07741   enum InputState       left;
  1754. 07742   enum InputState       right;
  1755. 07743 };
  1756. 07744
  1757. 07745 #endif /* SOUND_H */
  1758. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1759. include/minix/syslib.h    
  1760. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1761. 07800 /* Prototypes for system library functions. */
  1762. 07801
  1763. 07802 #ifndef _SYSLIB_H
  1764. 07803 #define _SYSLIB_H
  1765. 07804
  1766. 07805 /* Hide names to avoid name space pollution. */
  1767. 07806 #define sendrec         _sendrec
  1768. 07807 #define receive         _receive
  1769. 07808 #define send            _send
  1770. 07809
  1771. 07810 /* Minix user+system library. */
  1772. 07811 _PROTOTYPE( void printk, (char *_fmt, ...)                              );
  1773. 07812 _PROTOTYPE( int sendrec, (int _src_dest, message *_m_ptr)               );
  1774. 07813 _PROTOTYPE( int _taskcall, (int _who, int _syscallnr, message *_msgptr) );
  1775. 07814
  1776. 07815 /* Minix system library. */
  1777. 07816 _PROTOTYPE( int receive, (int _src, message *_m_ptr)                    );
  1778. 07817 _PROTOTYPE( int send, (int _dest, message *_m_ptr)                      );
  1779. 07818
  1780. 07819 _PROTOTYPE( int sys_abort, (int _how, ...)                              );
  1781. 07820 _PROTOTYPE( int sys_adjmap, (int _proc, struct mem_map *_ptr, 
  1782. 07821                 vir_clicks _data_clicks, vir_clicks _sp)                );
  1783. 07822 _PROTOTYPE( int sys_copy, (int _src_proc, int _src_seg, phys_bytes _src_vir, 
  1784. 07823         int _dst_proc, int _dst_seg, phys_bytes _dst_vir, phys_bytes _bytes));
  1785. 07824 _PROTOTYPE( int sys_exec, (int _proc, char *_ptr, int _traced, 
  1786. 07825                                 char *_aout, vir_bytes _initpc)         );
  1787. 07826 _PROTOTYPE( int sys_execmap, (int _proc, struct mem_map *_ptr)          );
  1788. 07827 _PROTOTYPE( int sys_fork, (int _parent, int _child, int _pid, 
  1789. 07828                                         phys_clicks _shadow)            );
  1790. 07829 _PROTOTYPE( int sys_fresh, (int _proc, struct mem_map *_ptr,
  1791. 07830         phys_clicks _dc, phys_clicks *_basep, phys_clicks *_sizep)      );
  1792. 07831 _PROTOTYPE( int sys_getsp, (int _proc, vir_bytes *_newsp)               );
  1793. 07832 _PROTOTYPE( int sys_newmap, (int _proc, struct mem_map *_ptr)           );
  1794. 07833 _PROTOTYPE( int sys_getmap, (int _proc, struct mem_map *_ptr)           );
  1795. 07834 _PROTOTYPE( int sys_sendsig, (int _proc, struct sigmsg *_ptr)           );
  1796. .Ep 82 include/minix/syslib.h
  1797. 07835 _PROTOTYPE( int sys_oldsig, (int _proc, int _sig, sighandler_t _sighandler));
  1798. 07836 _PROTOTYPE( int sys_endsig, (int _proc)                                 );
  1799. 07837 _PROTOTYPE( int sys_sigreturn, (int _proc, vir_bytes _scp, int _flags)  );
  1800. 07838 _PROTOTYPE( int sys_trace, (int _req, int _procnr, long _addr, long *_data_p));
  1801. 07839 _PROTOTYPE( int sys_xit, (int _parent, int _proc, phys_clicks *_basep, 
  1802. 07840                                                  phys_clicks *_sizep));
  1803. 07841 _PROTOTYPE( int sys_kill, (int _proc, int _sig)                         );
  1804. 07842 _PROTOTYPE( int sys_times, (int _proc, clock_t _ptr[5])                 );
  1805. 07843
  1806. 07844 #endif /* _SYSLIB_H */
  1807. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1808. include/minix/type.h    
  1809. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1810. 07900 #ifndef _TYPE_H
  1811. 07901 #define _TYPE_H
  1812. 07902 #ifndef _MINIX_TYPE_H
  1813. 07903 #define _MINIX_TYPE_H
  1814. 07904
  1815. 07905 /* Type definitions. */
  1816. 07906 typedef unsigned int vir_clicks; /* virtual  addresses and lengths in clicks */
  1817. 07907 typedef unsigned long phys_bytes;/* physical addresses and lengths in bytes */
  1818. 07908 typedef unsigned int phys_clicks;/* physical addresses and lengths in clicks */
  1819. 07909
  1820. 07910 #if (CHIP == INTEL)
  1821. 07911 typedef unsigned int vir_bytes; /* virtual addresses and lengths in bytes */
  1822. 07912 #endif
  1823. 07913
  1824. 07914 #if (CHIP == M68000)
  1825. 07915 typedef unsigned long vir_bytes;/* virtual addresses and lengths in bytes */
  1826. 07916 #endif
  1827. 07917
  1828. 07918 #if (CHIP == SPARC)
  1829. 07919 typedef unsigned long vir_bytes;/* virtual addresses and lengths in bytes */
  1830. 07920 #endif
  1831. 07921
  1832. 07922 /* Types relating to messages. */
  1833. 07923 #define M1                 1
  1834. 07924 #define M3                 3
  1835. 07925 #define M4                 4
  1836. 07926 #define M3_STRING         14
  1837. 07927
  1838. 07928 typedef struct {int m1i1, m1i2, m1i3; char *m1p1, *m1p2, *m1p3;} mess_1;
  1839. 07929 typedef struct {int m2i1, m2i2, m2i3; long m2l1, m2l2; char *m2p1;} mess_2;
  1840. 07930 typedef struct {int m3i1, m3i2; char *m3p1; char m3ca1[M3_STRING];} mess_3;
  1841. 07931 typedef struct {long m4l1, m4l2, m4l3, m4l4, m4l5;} mess_4;
  1842. 07932 typedef struct {char m5c1, m5c2; int m5i1, m5i2; long m5l1, m5l2, m5l3;}mess_5;
  1843. 07933 typedef struct {int m6i1, m6i2, m6i3; long m6l1; sighandler_t m6f1;} mess_6;
  1844. 07934
  1845. 07935 typedef struct {
  1846. 07936   int m_source;                 /* who sent the message */
  1847. 07937   int m_type;                   /* what kind of message is it */
  1848. 07938   union {
  1849. 07939         mess_1 m_m1;
  1850. .Op 83 include/minix/type.h
  1851. 07940         mess_2 m_m2;
  1852. 07941         mess_3 m_m3;
  1853. 07942         mess_4 m_m4;
  1854. 07943         mess_5 m_m5;
  1855. 07944         mess_6 m_m6;
  1856. 07945   } m_u;
  1857. 07946 } message;
  1858. 07947
  1859. 07948 /* The following defines provide names for useful members. */
  1860. 07949 #define m1_i1  m_u.m_m1.m1i1
  1861. 07950 #define m1_i2  m_u.m_m1.m1i2
  1862. 07951 #define m1_i3  m_u.m_m1.m1i3
  1863. 07952 #define m1_p1  m_u.m_m1.m1p1
  1864. 07953 #define m1_p2  m_u.m_m1.m1p2
  1865. 07954 #define m1_p3  m_u.m_m1.m1p3
  1866. 07955
  1867. 07956 #define m2_i1  m_u.m_m2.m2i1
  1868. 07957 #define m2_i2  m_u.m_m2.m2i2
  1869. 07958 #define m2_i3  m_u.m_m2.m2i3
  1870. 07959 #define m2_l1  m_u.m_m2.m2l1
  1871. 07960 #define m2_l2  m_u.m_m2.m2l2
  1872. 07961 #define m2_p1  m_u.m_m2.m2p1
  1873. 07962
  1874. 07963 #define m3_i1  m_u.m_m3.m3i1
  1875. 07964 #define m3_i2  m_u.m_m3.m3i2
  1876. 07965 #define m3_p1  m_u.m_m3.m3p1
  1877. 07966 #define m3_ca1 m_u.m_m3.m3ca1
  1878. 07967
  1879. 07968 #define m4_l1  m_u.m_m4.m4l1
  1880. 07969 #define m4_l2  m_u.m_m4.m4l2
  1881. 07970 #define m4_l3  m_u.m_m4.m4l3
  1882. 07971 #define m4_l4  m_u.m_m4.m4l4
  1883. 07972 #define m4_l5  m_u.m_m4.m4l5
  1884. 07973
  1885. 07974 #define m5_c1  m_u.m_m5.m5c1
  1886. 07975 #define m5_c2  m_u.m_m5.m5c2
  1887. 07976 #define m5_i1  m_u.m_m5.m5i1
  1888. 07977 #define m5_i2  m_u.m_m5.m5i2
  1889. 07978 #define m5_l1  m_u.m_m5.m5l1
  1890. 07979 #define m5_l2  m_u.m_m5.m5l2
  1891. 07980 #define m5_l3  m_u.m_m5.m5l3
  1892. 07981
  1893. 07982 #define m6_i1  m_u.m_m6.m6i1
  1894. 07983 #define m6_i2  m_u.m_m6.m6i2
  1895. 07984 #define m6_i3  m_u.m_m6.m6i3
  1896. 07985 #define m6_l1  m_u.m_m6.m6l1
  1897. 07986 #define m6_f1  m_u.m_m6.m6f1
  1898. 07987
  1899. 07988 struct mem_map {
  1900. 07989   vir_clicks mem_vir;           /* virtual address */
  1901. 07990   phys_clicks mem_phys;         /* physical address */
  1902. 07991   vir_clicks mem_len;           /* length */
  1903. 07992 };
  1904. 07993
  1905. 07994 struct iorequest_s {
  1906. 07995   long io_position;             /* position in device file (really off_t) */
  1907. 07996   char *io_buf;                 /* buffer in user space */
  1908. 07997   int io_nbytes;                /* size of request */
  1909. 07998   unsigned short io_request;    /* read, write (optionally) */
  1910. 07999 };
  1911. .Ep 84 include/minix/type.h
  1912. 08000 #endif /* _TYPE_H */
  1913. 08001
  1914. 08002 typedef struct {
  1915. 08003   vir_bytes iov_addr;           /* address of an I/O buffer */
  1916. 08004   vir_bytes iov_size;           /* sizeof an I/O buffer */
  1917. 08005 } iovec_t;
  1918. 08006
  1919. 08007 typedef struct {
  1920. 08008   vir_bytes cpv_src;            /* src address of data */
  1921. 08009   vir_bytes cpv_dst;            /* dst address of data */
  1922. 08010   vir_bytes cpv_size;           /* size of data */
  1923. 08011 } cpvec_t;
  1924. 08012
  1925. 08013 /* MM passes the address of a structure of this type to KERNEL when
  1926. 08014  * do_sendsig() is invoked as part of the signal catching mechanism.
  1927. 08015  * The structure contain all the information that KERNEL needs to build
  1928. 08016  * the signal stack.
  1929. 08017  */
  1930. 08018 struct sigmsg {
  1931. 08019   int sm_signo;                 /* signal number being caught */
  1932. 08020   unsigned long sm_mask;        /* mask to restore when handler returns */
  1933. 08021   vir_bytes sm_sighandler;      /* address of handler */
  1934. 08022   vir_bytes sm_sigreturn;       /* address of _sigreturn in C library */
  1935. 08023   vir_bytes sm_stkptr;          /* user stack pointer */
  1936. 08024 };
  1937. 08025
  1938. 08026 #define MESS_SIZE (sizeof(message))     /* might need usizeof from fs here */
  1939. 08027 #define NIL_MESS ((message *) 0)
  1940. 08028
  1941. 08029 struct psinfo {         /* information for the ps(1) program */
  1942. 08030   u16_t nr_tasks, nr_procs;     /* NR_TASKS and NR_PROCS constants. */
  1943. 08031   vir_bytes proc, mproc, fproc; /* addresses of the main process tables. */
  1944. 08032 };
  1945. 08033
  1946. 08034 #endif /* _MINIX_TYPE_H */
  1947. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1948. include/ibm/diskparm.h    
  1949. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1950. 08100 /* PC (and AT) BIOS structure to hold disk parameters.  Under Minix, it is
  1951. 08101  * used mainly for formatting.
  1952. 08102  */
  1953. 08103
  1954. 08104 #ifndef _DISKPARM_H
  1955. 08105 #define _DISKPARM_H
  1956. 08106 struct disk_parameter_s {
  1957. 08107   char spec1;
  1958. 08108   char spec2;
  1959. 08109   char motor_turnoff_sec;
  1960. 08110   char sector_size_code;
  1961. 08111   char sectors_per_cylinder;
  1962. 08112   char gap_length;
  1963. 08113   char dtl;
  1964. 08114   char gap_length_for_format;
  1965. .Op 85 include/ibm/diskparm.h
  1966. 08115   char fill_byte_for_format;
  1967. 08116   char head_settle_msec;
  1968. 08117   char motor_start_eigth_sec;
  1969. 08118 };
  1970. 08119 #endif /* _DISKPARM_H */
  1971. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1972. include/ibm/partition.h    
  1973. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1974. 08200 /* Description of entry in partition table.  */
  1975. 08201 #ifndef _PARTITION_H
  1976. 08202 #define _PARTITION_H
  1977. 08203
  1978. 08204 struct part_entry {
  1979. 08205   unsigned char bootind;        /* boot indicator 0/ACTIVE_FLAG  */
  1980. 08206   unsigned char start_head;     /* head value for first sector   */
  1981. 08207   unsigned char start_sec;      /* sector value + cyl bits for first sector */
  1982. 08208   unsigned char start_cyl;      /* track value for first sector  */
  1983. 08209   unsigned char sysind;         /* system indicator              */
  1984. 08210   unsigned char last_head;      /* head value for last sector    */
  1985. 08211   unsigned char last_sec;       /* sector value + cyl bits for last sector */
  1986. 08212   unsigned char last_cyl;       /* track value for last sector   */
  1987. 08213   unsigned long lowsec;         /* logical first sector          */
  1988. 08214   unsigned long size;           /* size of partition in sectors  */
  1989. 08215 };
  1990. 08216
  1991. 08217 #define ACTIVE_FLAG     0x80    /* value for active in bootind field (hd0) */
  1992. 08218 #define NR_PARTITIONS   4       /* number of entries in partition table */
  1993. 08219 #define PART_TABLE_OFF  0x1BE   /* offset of partition table in boot sector */
  1994. 08220
  1995. 08221 /* Partition types. */
  1996. 08222 #define MINIX_PART      0x81    /* Minix partition type */
  1997. 08223 #define NO_PART         0x00    /* unused entry */
  1998. 08224 #define OLD_MINIX_PART  0x80    /* created before 1.4b, obsolete */
  1999. 08225 #define EXT_PART        0x05    /* extended partition */
  2000. 08226
  2001. 08227 #endif /* _PARTITION_H */
  2002. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2003. src/kernel/assert.h    
  2004. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2005. 08300 /*
  2006. 08301 assert.h
  2007. 08302 */
  2008. 08303 #ifndef ASSERT_H
  2009. 08304 #define ASSERT_H
  2010. 08305
  2011. 08306 #if DEBUG
  2012. 08307
  2013. 08308 #define INIT_ASSERT     static char *assert_file= __FILE__;
  2014. 08309
  2015. .Ep 86 src/kernel/assert.h
  2016. 08310 void bad_assertion(char *file, int line, char *what);
  2017. 08311 void bad_compare(char *file, int line, int lhs, char *what, int rhs);
  2018. 08312
  2019. 08313 #define assert(x)       (!(x) ? bad_assertion(assert_file, __LINE__, #x) 
  2020. 08314                                                                 : (void) 0)
  2021. 08315 #define compare(a,t,b)  (!((a) t (b)) ? bad_compare(assert_file, __LINE__, 
  2022. 08316                                 (a), #a " " #t " " #b, (b)) : (void) 0)
  2023. 08317 #else /* !DEBUG */
  2024. 08318
  2025. 08319 #define INIT_ASSERT     /* nothing */
  2026. 08320
  2027. 08321 #define assert(x)       (void)0
  2028. 08322 #define compare(a,t,b)  (void)0
  2029. 08323
  2030. 08324 #endif /* !DEBUG */
  2031. 08325
  2032. 08326 #endif /* ASSERT_H */
  2033. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2034. src/kernel/const.h    
  2035. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2036. 08400 /* General constants used by the kernel. */
  2037. 08401
  2038. 08402 #if (CHIP == INTEL)
  2039. 08403
  2040. 08404 #define K_STACK_BYTES   1024    /* how many bytes for the kernel stack */
  2041. 08405
  2042. 08406 #define INIT_PSW      0x0200    /* initial psw */
  2043. 08407 #define INIT_TASK_PSW 0x1200    /* initial psw for tasks (with IOPL 1) */
  2044. 08408 #define TRACEBIT       0x100    /* OR this with psw in proc[] for tracing */
  2045. 08409 #define SETPSW(rp, new) /* permits only certain bits to be set */ 
  2046. 08410         ((rp)->p_reg.psw = (rp)->p_reg.psw & ~0xCD5 | (new) & 0xCD5)
  2047. 08411
  2048. 08412 /* Initial sp for mm, fs and init.
  2049. 08413  *      2 bytes for short jump
  2050. 08414  *      2 bytes unused
  2051. 08415  *      3 words for init_org[] used by fs only
  2052. 08416  *      3 words for real mode debugger trap (actually needs 1 more)
  2053. 08417  *      3 words for save and restart temporaries
  2054. 08418  *      3 words for interrupt
  2055. 08419  * Leave no margin, to flush bugs early.
  2056. 08420  */
  2057. 08421 #define INIT_SP (2 + 2 + 3 * 2 + 3 * 2 + 3 * 2 + 3 * 2)
  2058. 08422
  2059. 08423 #define HCLICK_SHIFT       4    /* log2 of HCLICK_SIZE */
  2060. 08424 #define HCLICK_SIZE       16    /* hardware segment conversion magic */
  2061. 08425 #if CLICK_SIZE >= HCLICK_SIZE
  2062. 08426 #define click_to_hclick(n) ((n) << (CLICK_SHIFT - HCLICK_SHIFT))
  2063. 08427 #else
  2064. 08428 #define click_to_hclick(n) ((n) >> (HCLICK_SHIFT - CLICK_SHIFT))
  2065. 08429 #endif
  2066. 08430 #define hclick_to_physb(n) ((phys_bytes) (n) << HCLICK_SHIFT)
  2067. 08431 #define physb_to_hclick(n) ((n) >> HCLICK_SHIFT)
  2068. 08432
  2069. 08433 /* Interrupt vectors defined/reserved by processor. */
  2070. 08434 #define DIVIDE_VECTOR      0    /* divide error */
  2071. .Op 87 src/kernel/const.h
  2072. 08435 #define DEBUG_VECTOR       1    /* single step (trace) */
  2073. 08436 #define NMI_VECTOR         2    /* non-maskable interrupt */
  2074. 08437 #define BREAKPOINT_VECTOR  3    /* software breakpoint */
  2075. 08438 #define OVERFLOW_VECTOR    4    /* from INTO */
  2076. 08439
  2077. 08440 /* Fixed system call vector. */
  2078. 08441 #define SYS_VECTOR        32    /* system calls are made with int SYSVEC */
  2079. 08442 #define SYS386_VECTOR     33    /* except 386 system calls use this */
  2080. 08443 #define LEVEL0_VECTOR     34    /* for execution of a function at level 0 */
  2081. 08444
  2082. 08445 /* Suitable irq bases for hardware interrupts.  Reprogram the 8259(s) from
  2083. 08446  * the PC BIOS defaults since the BIOS doesn't respect all the processor's
  2084. 08447  * reserved vectors (0 to 31).
  2085. 08448  */
  2086. 08449 #define BIOS_IRQ0_VEC   0x08    /* base of IRQ0-7 vectors used by BIOS */
  2087. 08450 #define BIOS_IRQ8_VEC   0x70    /* base of IRQ8-15 vectors used by BIOS */
  2088. 08451 #define IRQ0_VECTOR     0x28    /* more or less arbitrary, but > SYS_VECTOR */
  2089. 08452 #define IRQ8_VECTOR     0x30    /* together for simplicity */
  2090. 08453
  2091. 08454 /* Hardware interrupt numbers. */
  2092. 08455 #define NR_IRQ_VECTORS    16
  2093. 08456 #define CLOCK_IRQ          0
  2094. 08457 #define KEYBOARD_IRQ       1
  2095. 08458 #define CASCADE_IRQ        2    /* cascade enable for 2nd AT controller */
  2096. 08459 #define ETHER_IRQ          3    /* default ethernet interrupt vector */
  2097. 08460 #define SECONDARY_IRQ      3    /* RS232 interrupt vector for port 2 */
  2098. 08461 #define RS232_IRQ          4    /* RS232 interrupt vector for port 1 */
  2099. 08462 #define XT_WINI_IRQ        5    /* xt winchester */
  2100. 08463 #define FLOPPY_IRQ         6    /* floppy disk */
  2101. 08464 #define PRINTER_IRQ        7
  2102. 08465 #define AT_WINI_IRQ       14    /* at winchester */
  2103. 08466
  2104. 08467 /* Interrupt number to hardware vector. */
  2105. 08468 #define BIOS_VECTOR(irq)        
  2106. 08469         (((irq) < 8 ? BIOS_IRQ0_VEC : BIOS_IRQ8_VEC) + ((irq) & 0x07))
  2107. 08470 #define VECTOR(irq)     
  2108. 08471         (((irq) < 8 ? IRQ0_VECTOR : IRQ8_VECTOR) + ((irq) & 0x07))
  2109. 08472
  2110. 08473 /* BIOS hard disk parameter vectors. */
  2111. 08474 #define WINI_0_PARM_VEC 0x41
  2112. 08475 #define WINI_1_PARM_VEC 0x46
  2113. 08476
  2114. 08477 /* 8259A interrupt controller ports. */
  2115. 08478 #define INT_CTL         0x20    /* I/O port for interrupt controller */
  2116. 08479 #define INT_CTLMASK     0x21    /* setting bits in this port disables ints */
  2117. 08480 #define INT2_CTL        0xA0    /* I/O port for second interrupt controller */
  2118. 08481 #define INT2_CTLMASK    0xA1    /* setting bits in this port disables ints */
  2119. 08482
  2120. 08483 /* Magic numbers for interrupt controller. */
  2121. 08484 #define ENABLE          0x20    /* code used to re-enable after an interrupt */
  2122. 08485
  2123. 08486 /* Sizes of memory tables. */
  2124. 08487 #define NR_MEMS            3    /* number of chunks of memory */
  2125. 08488
  2126. 08489 /* Miscellaneous ports. */
  2127. 08490 #define PCR             0x65    /* Planar Control Register */
  2128. 08491 #define PORT_B          0x61    /* I/O port for 8255 port B (kbd, beeper...) */
  2129. 08492 #define TIMER0          0x40    /* I/O port for timer channel 0 */
  2130. 08493 #define TIMER2          0x42    /* I/O port for timer channel 2 */
  2131. 08494 #define TIMER_MODE      0x43    /* I/O port for timer mode control */
  2132. .Ep 88 src/kernel/const.h
  2133. 08495
  2134. 08496 #endif /* (CHIP == INTEL) */
  2135. 08497
  2136. 08498 #if (CHIP == M68000)
  2137. 08499
  2138. 08500 #define K_STACK_BYTES   1024    /* how many bytes for the kernel stack */
  2139. 08501
  2140. 08502 /* Sizes of memory tables. */
  2141. 08503 #define NR_MEMS            2    /* number of chunks of memory */
  2142. 08504
  2143. 08505 /* p_reg contains: d0-d7, a0-a6,   in that order. */
  2144. 08506 #define NR_REGS           15    /* number of general regs in each proc slot */
  2145. 08507  
  2146. 08508 #define TRACEBIT      0x8000    /* or this with psw in proc[] for tracing */
  2147. 08509 #define SETPSW(rp, new)         /* permits only certain bits to be set */ 
  2148. 08510         ((rp)->p_reg.psw = (rp)->p_reg.psw & ~0xFF | (new) & 0xFF)
  2149. 08511  
  2150. 08512 #define MEM_BYTES  0xffffffff   /* memory size for /dev/mem */
  2151. 08513  
  2152. 08514 #ifdef __ACK__
  2153. 08515 #define FSTRUCOPY
  2154. 08516 #endif
  2155. 08517
  2156. 08518 #endif /* (CHIP == M68000) */
  2157. 08519
  2158. 08520 /* The following items pertain to the scheduling queues. */
  2159. 08521 #define TASK_Q             0    /* ready tasks are scheduled via queue 0 */
  2160. 08522 #define SERVER_Q           1    /* ready servers are scheduled via queue 1 */
  2161. 08523 #define USER_Q             2    /* ready users are scheduled via queue 2 */
  2162. 08524
  2163. 08525 #if (MACHINE == ATARI)
  2164. 08526 #define SHADOW_Q           3    /* runnable, but shadowed processes */
  2165. 08527 #define NQ                 4    /* # of scheduling queues */
  2166. 08528 #else
  2167. 08529 #define NQ                 3    /* # of scheduling queues */
  2168. 08530 #endif
  2169. 08531
  2170. 08532 /* Env_parse() return values. */
  2171. 08533 #define EP_UNSET        0       /* variable not set */
  2172. 08534 #define EP_OFF          1       /* var = off */
  2173. 08535 #define EP_ON           2       /* var = on (or field left blank) */
  2174. 08536 #define EP_SET          3       /* var = 1:2:3 (nonblank field) */
  2175. 08537
  2176. 08538 /* To translate an address in kernel space to a physical address.  This is
  2177. 08539  * the same as umap(proc_ptr, D, vir, sizeof(*vir)), but a lot less costly.
  2178. 08540  */
  2179. 08541 #define vir2phys(vir)   (data_base + (vir_bytes) (vir))
  2180. 08542
  2181. 08543 #define printf        printk    /* the kernel really uses printk, not printf */
  2182. .Op 89 src/kernel/dp8390.h
  2183. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2184. src/kernel/dp8390.h    
  2185. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2186. 08600 /*
  2187. 08601 dp8390.h
  2188. 08602
  2189. 08603 Created:        before Dec 28, 1992 by Philip Homburg
  2190. 08604 */
  2191. 08605
  2192. 08606 /* National Semiconductor DP8390 Network Interface Controller. */
  2193. 08607
  2194. 08608                                 /* Page 0, for reading ------------- */
  2195. 08609 #define DP_CR           0x0     /* Read side of Command Register     */
  2196. 08610 #define DP_CLDA0        0x1     /* Current Local Dma Address 0       */
  2197. 08611 #define DP_CLDA1        0x2     /* Current Local Dma Address 1       */
  2198. 08612 #define DP_BNRY         0x3     /* Boundary Pointer                  */
  2199. 08613 #define DP_TSR          0x4     /* Transmit Status Register          */
  2200. 08614 #define DP_NCR          0x5     /* Number of Collisions Register     */
  2201. 08615 #define DP_FIFO         0x6     /* Fifo ??                           */
  2202. 08616 #define DP_ISR          0x7     /* Interrupt Status Register         */
  2203. 08617 #define DP_CRDA0        0x8     /* Current Remote Dma Address 0      */
  2204. 08618 #define DP_CRDA1        0x9     /* Current Remote Dma Address 1      */
  2205. 08619 #define DP_DUM1         0xA     /* unused                            */
  2206. 08620 #define DP_DUM2         0xB     /* unused                            */
  2207. 08621 #define DP_RSR          0xC     /* Receive Status Register           */
  2208. 08622 #define DP_CNTR0        0xD     /* Tally Counter 0                   */
  2209. 08623 #define DP_CNTR1        0xE     /* Tally Counter 1                   */
  2210. 08624 #define DP_CNTR2        0xF     /* Tally Counter 2                   */
  2211. 08625
  2212. 08626                                 /* Page 0, for writing ------------- */
  2213. 08627 #define DP_CR           0x0     /* Write side of Command Register    */
  2214. 08628 #define DP_PSTART       0x1     /* Page Start Register               */
  2215. 08629 #define DP_PSTOP        0x2     /* Page Stop Register                */
  2216. 08630 #define DP_BNRY         0x3     /* Boundary Pointer                  */
  2217. 08631 #define DP_TPSR         0x4     /* Transmit Page Start Register      */
  2218. 08632 #define DP_TBCR0        0x5     /* Transmit Byte Count Register 0    */
  2219. 08633 #define DP_TBCR1        0x6     /* Transmit Byte Count Register 1    */
  2220. 08634 #define DP_ISR          0x7     /* Interrupt Status Register         */
  2221. 08635 #define DP_RSAR0        0x8     /* Remote Start Address Register 0   */
  2222. 08636 #define DP_RSAR1        0x9     /* Remote Start Address Register 1   */
  2223. 08637 #define DP_RBCR0        0xA     /* Remote Byte Count Register 0      */
  2224. 08638 #define DP_RBCR1        0xB     /* Remote Byte Count Register 1      */
  2225. 08639 #define DP_RCR          0xC     /* Receive Configuration Register    */
  2226. 08640 #define DP_TCR          0xD     /* Transmit Configuration Register   */
  2227. 08641 #define DP_DCR          0xE     /* Data Configuration Register       */
  2228. 08642 #define DP_IMR          0xF     /* Interrupt Mask Register           */
  2229. 08643
  2230. 08644                                 /* Page 1, read/write -------------- */
  2231. 08645 #define DP_CR           0x0     /* Command Register                  */
  2232. 08646 #define DP_PAR0         0x1     /* Physical Address Register 0       */
  2233. 08647 #define DP_PAR1         0x2     /* Physical Address Register 1       */
  2234. 08648 #define DP_PAR2         0x3     /* Physical Address Register 2       */
  2235. 08649 #define DP_PAR3         0x4     /* Physical Address Register 3       */
  2236. 08650 #define DP_PAR4         0x5     /* Physical Address Register 4       */
  2237. 08651 #define DP_PAR5         0x6     /* Physical Address Register 5       */
  2238. 08652 #define DP_CURR         0x7     /* Current Page Register             */
  2239. 08653 #define DP_MAR0         0x8     /* Multicast Address Register 0      */
  2240. 08654 #define DP_MAR1         0x9     /* Multicast Address Register 1      */
  2241. .Ep 90 src/kernel/dp8390.h
  2242. 08655 #define DP_MAR2         0xA     /* Multicast Address Register 2      */
  2243. 08656 #define DP_MAR3         0xB     /* Multicast Address Register 3      */
  2244. 08657 #define DP_MAR4         0xC     /* Multicast Address Register 4      */
  2245. 08658 #define DP_MAR5         0xD     /* Multicast Address Register 5      */
  2246. 08659 #define DP_MAR6         0xE     /* Multicast Address Register 6      */
  2247. 08660 #define DP_MAR7         0xF     /* Multicast Address Register 7      */
  2248. 08661
  2249. 08662 /* Bits in dp_cr */
  2250. 08663 #define CR_STP          0x01    /* Stop: software reset              */
  2251. 08664 #define CR_STA          0x02    /* Start: activate NIC               */
  2252. 08665 #define CR_TXP          0x04    /* Transmit Packet                   */
  2253. 08666 #define CR_DMA          0x38    /* Mask for DMA control              */
  2254. 08667 #define CR_DM_NOP       0x00    /* DMA: No Operation                 */
  2255. 08668 #define CR_DM_RR        0x08    /* DMA: Remote Read                  */
  2256. 08669 #define CR_DM_RW        0x10    /* DMA: Remote Write                 */
  2257. 08670 #define CR_DM_SP        0x18    /* DMA: Send Packet                  */
  2258. 08671 #define CR_DM_ABORT     0x20    /* DMA: Abort Remote DMA Operation   */
  2259. 08672 #define CR_PS           0xC0    /* Mask for Page Select              */
  2260. 08673 #define CR_PS_P0        0x00    /* Register Page 0                   */
  2261. 08674 #define CR_PS_P1        0x40    /* Register Page 1                   */
  2262. 08675 #define CR_PS_T0        0x80    /* Test Mode Register Map ??         */
  2263. 08676 #define CR_SP_T1        0xC0    /* Test Mode Register Map ??         */
  2264. 08677
  2265. 08678 /* Bits in dp_isr */
  2266. 08679 #define ISR_MASK        0x3F
  2267. 08680 #define ISR_PRX         0x01    /* Packet Received with no errors    */
  2268. 08681 #define ISR_PTX         0x02    /* Packet Transmitted with no errors */
  2269. 08682 #define ISR_RXE         0x04    /* Receive Error                     */
  2270. 08683 #define ISR_TXE         0x08    /* Transmit Error                    */
  2271. 08684 #define ISR_OVW         0x10    /* Overwrite Warning                 */
  2272. 08685 #define ISR_CNT         0x20    /* Counter Overflow                  */
  2273. 08686 #define ISR_RDC         0x40    /* Remote DMA Complete               */
  2274. 08687 #define ISR_RST         0x80    /* Reset Status                      */
  2275. 08688
  2276. 08689 /* Bits in dp_imr */
  2277. 08690 #define IMR_PRXE        0x01    /* Packet Received iEnable           */
  2278. 08691 #define IMR_PTXE        0x02    /* Packet Transmitted iEnable        */
  2279. 08692 #define IMR_RXEE        0x04    /* Receive Error iEnable             */
  2280. 08693 #define IMR_TXEE        0x08    /* Transmit Error iEnable            */
  2281. 08694 #define IMR_OVWE        0x10    /* Overwrite Warning iEnable         */
  2282. 08695 #define IMR_CNTE        0x20    /* Counter Overflow iEnable          */
  2283. 08696 #define IMR_RDCE        0x40    /* DMA Complete iEnable              */
  2284. 08697
  2285. 08698 /* Bits in dp_dcr */
  2286. 08699 #define DCR_WTS         0x01    /* Word Transfer Select              */
  2287. 08700 #define DCR_BYTEWIDE    0x00    /* WTS: byte wide transfers          */
  2288. 08701 #define DCR_WORDWIDE    0x01    /* WTS: word wide transfers          */
  2289. 08702 #define DCR_BOS         0x02    /* Byte Order Select                 */
  2290. 08703 #define DCR_LTLENDIAN   0x00    /* BOS: Little Endian                */
  2291. 08704 #define DCR_BIGENDIAN   0x02    /* BOS: Big Endian                   */
  2292. 08705 #define DCR_LAS         0x04    /* Long Address Select               */
  2293. 08706 #define DCR_BMS         0x08    /* Burst Mode Select                 */
  2294. 08707 #define DCR_AR          0x10    /* Autoinitialize Remote             */
  2295. 08708 #define DCR_FTS         0x60    /* Fifo Threshold Select             */
  2296. 08709 #define DCR_2BYTES      0x00    /* 2 bytes                           */
  2297. 08710 #define DCR_4BYTES      0x40    /* 4 bytes                           */
  2298. 08711 #define DCR_8BYTES      0x20    /* 8 bytes                           */
  2299. 08712 #define DCR_12BYTES     0x60    /* 12 bytes                          */
  2300. 08713
  2301. 08714 /* Bits in dp_tcr */
  2302. .Op 91 src/kernel/dp8390.h
  2303. 08715 #define TCR_CRC         0x01    /* Inhibit CRC                       */
  2304. 08716 #define TCR_ELC         0x06    /* Encoded Loopback Control          */
  2305. 08717 #define TCR_NORMAL      0x00    /* ELC: Normal Operation             */
  2306. 08718 #define TCR_INTERNAL    0x02    /* ELC: Internal Loopback            */
  2307. 08719 #define TCR_0EXTERNAL   0x04    /* ELC: External Loopback LPBK=0     */
  2308. 08720 #define TCR_1EXTERNAL   0x06    /* ELC: External Loopback LPBK=1     */
  2309. 08721 #define TCR_ATD         0x08    /* Auto Transmit                     */
  2310. 08722 #define TCR_OFST        0x10    /* Collision Offset Enable (be nice) */
  2311. 08723
  2312. 08724 /* Bits in dp_tsr */
  2313. 08725 #define TSR_PTX         0x01    /* Packet Transmitted (without error)*/
  2314. 08726 #define TSR_DFR         0x02    /* Transmit Deferred                 */
  2315. 08727 #define TSR_COL         0x04    /* Transmit Collided                 */
  2316. 08728 #define TSR_ABT         0x08    /* Transmit Aborted                  */
  2317. 08729 #define TSR_CRS         0x10    /* Carrier Sense Lost                */
  2318. 08730 #define TSR_FU          0x20    /* FIFO Underrun                     */
  2319. 08731 #define TSR_CDH         0x40    /* CD Heartbeat                      */
  2320. 08732 #define TSR_OWC         0x80    /* Out of Window Collision           */
  2321. 08733
  2322. 08734 /* Bits in tp_rcr */
  2323. 08735 #define RCR_SEP         0x01    /* Save Errored Packets              */
  2324. 08736 #define RCR_AR          0x02    /* Accept Runt Packets               */
  2325. 08737 #define RCR_AB          0x04    /* Accept Broadcast                  */
  2326. 08738 #define RCR_AM          0x08    /* Accept Multicast                  */
  2327. 08739 #define RCR_PRO         0x10    /* Physical Promiscuous              */
  2328. 08740 #define RCR_MON         0x20    /* Monitor Mode                      */
  2329. 08741
  2330. 08742 /* Bits in dp_rsr */
  2331. 08743 #define RSR_PRX         0x01    /* Packet Received Intact            */
  2332. 08744 #define RSR_CRC         0x02    /* CRC Error                         */
  2333. 08745 #define RSR_FAE         0x04    /* Frame Alignment Error             */
  2334. 08746 #define RSR_FO          0x08    /* FIFO Overrun                      */
  2335. 08747 #define RSR_MPA         0x10    /* Missed Packet                     */
  2336. 08748 #define RSR_PHY         0x20    /* Multicast Address Match !!        */
  2337. 08749 #define RSR_DIS         0x40    /* Receiver Disabled                 */
  2338. 08750
  2339. 08751
  2340. 08752 typedef struct dp_rcvhdr
  2341. 08753 {
  2342. 08754         u8_t dr_status;                 /* Copy of rsr                       */
  2343. 08755         u8_t dr_next;                   /* Pointer to next packet            */
  2344. 08756         u8_t dr_rbcl;                   /* Receive Byte Count Low            */
  2345. 08757         u8_t dr_rbch;                   /* Receive Byte Count High           */
  2346. 08758 } dp_rcvhdr_t;
  2347. 08759
  2348. 08760 #define DP_PAGESIZE     256
  2349. 08761
  2350. 08762 /* Some macros to simplify accessing the dp8390 */
  2351. 08763 #define inb_reg0(dep, reg)      (in_byte(dep->de_dp8390_port+reg))
  2352. 08764 #define outb_reg0(dep, reg, data) (out_byte(dep->de_dp8390_port+reg, data))
  2353. 08765 #define inb_reg1(dep, reg)      (in_byte (dep->de_dp8390_port+reg))
  2354. 08766 #define outb_reg1(dep, reg, data) (out_byte(dep->de_dp8390_port+reg, data))
  2355. 08767
  2356. 08768 /* Software interface to the dp8390 driver */
  2357. 08769
  2358. 08770 struct dpeth;
  2359. 08771 struct iovec_dat;
  2360. 08772 _PROTOTYPE( typedef void (*dp_initf_t), (struct dpeth *dep)             );
  2361. 08773 _PROTOTYPE( typedef void (*dp_stopf_t), (struct dpeth *dep)             );
  2362. 08774 _PROTOTYPE( typedef void (*dp_user2nicf_t), (struct dpeth *dep,
  2363. .Ep 92 src/kernel/dp8390.h
  2364. 08775                         struct iovec_dat *iovp, vir_bytes offset,
  2365. 08776                         int nic_addr, vir_bytes count)                  );
  2366. 08777 _PROTOTYPE( typedef void (*dp_nic2userf_t), (struct dpeth *dep,
  2367. 08778                         int nic_addr, struct iovec_dat *iovp,
  2368. 08779                         vir_bytes offset, vir_bytes count)              );
  2369. 08780 #if 0
  2370. 08781 _PROTOTYPE( typedef void (*dp_getheaderf_t), (struct dpeth *dep,
  2371. 08782                         int page, struct dp_rcvhdr *h, u16_t *eth_type) );
  2372. 08783 #endif
  2373. 08784 _PROTOTYPE( typedef void (*dp_getblock_t), (struct dpeth *dep,
  2374. 08785                 int page, size_t offset, size_t size, void *dst)        );
  2375. 08786
  2376. 08787 /* iovectors are handled IOVEC_NR entries at a time. */
  2377. 08788 #define IOVEC_NR        16
  2378. 08789
  2379. 08790 typedef struct iovec_dat
  2380. 08791 {
  2381. 08792   iovec_t iod_iovec[IOVEC_NR];
  2382. 08793   int iod_iovec_s;
  2383. 08794   int iod_proc_nr;
  2384. 08795   vir_bytes iod_iovec_addr;
  2385. 08796 } iovec_dat_t;
  2386. 08797
  2387. 08798 #define SENDQ_NR        2       /* Maximum size of the send queue */
  2388. 08799 #define SENDQ_PAGES     6       /* 6 * DP_PAGESIZE >= 1514 bytes */
  2389. 08800
  2390. 08801 typedef struct dpeth
  2391. 08802 {
  2392. 08803         /* The de_base_port field is the starting point of the probe.
  2393. 08804          * The conf routine also fills de_linmem and de_irq. If the probe
  2394. 08805          * routine knows the irq and/or memory address because they are
  2395. 08806          * hardwired in the board, the probe should modify these fields.
  2396. 08807          * Futhermore, the probe routine should also fill in de_initf and
  2397. 08808          * de_stopf fields with the appropriate function pointers and set
  2398. 08809          * de_prog_IO iff programmed I/O is to be used.
  2399. 08810          */
  2400. 08811         port_t de_base_port;
  2401. 08812         phys_bytes de_linmem;
  2402. 08813         int de_irq;
  2403. 08814         dp_initf_t de_initf; 
  2404. 08815         dp_stopf_t de_stopf; 
  2405. 08816         int de_prog_IO;
  2406. 08817
  2407. 08818         /* The initf function fills the following fields. Only cards that do
  2408. 08819          * programmed I/O fill in the de_pata_port field.
  2409. 08820          * In addition, the init routine has to fill in the sendq data
  2410. 08821          * structures.
  2411. 08822          */
  2412. 08823         ether_addr_t de_address;
  2413. 08824         port_t de_dp8390_port;
  2414. 08825         port_t de_data_port;
  2415. 08826         int de_16bit;
  2416. 08827         int de_ramsize;
  2417. 08828         int de_offset_page;
  2418. 08829         int de_startpage;
  2419. 08830         int de_stoppage;
  2420. 08831
  2421. 08832         /* Do it yourself send queue */
  2422. 08833         struct sendq
  2423. 08834         {
  2424. .Op 93 src/kernel/dp8390.h
  2425. 08835                 int sq_filled;          /* this buffer contains a packet */
  2426. 08836                 int sq_size;            /* with this size */
  2427. 08837                 int sq_sendpage;        /* starting page of the buffer */
  2428. 08838         } de_sendq[SENDQ_NR];
  2429. 08839         int de_sendq_nr;
  2430. 08840         int de_sendq_head;              /* Enqueue at the head */
  2431. 08841         int de_sendq_tail;              /* Dequeue at the tail */
  2432. 08842
  2433. 08843         /* The de_memsegm field is calculated based on the de_linmem field */
  2434. 08844         segm_t de_memsegm;
  2435. 08845
  2436. 08846         /* Fields for internal use by the dp8390 driver. */
  2437. 08847         int de_flags;
  2438. 08848         int de_mode;
  2439. 08849         eth_stat_t de_stat;
  2440. 08850         iovec_dat_t de_read_iovec;
  2441. 08851         iovec_dat_t de_write_iovec;
  2442. 08852         iovec_dat_t de_tmp_iovec;
  2443. 08853         vir_bytes de_read_s;
  2444. 08854         int de_client;
  2445. 08855         message de_sendmsg;
  2446. 08856         dp_user2nicf_t de_user2nicf; 
  2447. 08857         dp_nic2userf_t de_nic2userf; 
  2448. 08858         dp_getblock_t de_getblockf; 
  2449. 08859 } dpeth_t;
  2450. 08860
  2451. 08861 #define DEI_DEFAULT     0x8000
  2452. 08862
  2453. 08863 #define DEF_EMPTY       0x000
  2454. 08864 #define DEF_PACK_SEND   0x001
  2455. 08865 #define DEF_PACK_RECV   0x002
  2456. 08866 #define DEF_SEND_AVAIL  0x004
  2457. 08867 #define DEF_READING     0x010
  2458. 08868 #define DEF_PROMISC     0x040
  2459. 08869 #define DEF_MULTI       0x080
  2460. 08870 #define DEF_BROAD       0x100
  2461. 08871 #define DEF_ENABLED     0x200
  2462. 08872 #define DEF_STOPPED     0x400
  2463. 08873
  2464. 08874 #define DEM_DISABLED    0x0
  2465. 08875 #define DEM_SINK        0x1
  2466. 08876 #define DEM_ENABLED     0x2
  2467. 08877
  2468. 08878
  2469. 08879 /*
  2470. 08880  * $PchHeader: /mount/hd2/minix/sys/kernel/ibm/RCS/dp8390.h,v 1.4 1995/06/12 18:21:01 philip Exp $
  2471. 08881  */
  2472. .Ep 94 src/kernel/driver.h
  2473. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2474. src/kernel/driver.h    
  2475. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2476. 08900 /* Types and constants shared between the generic and device dependent
  2477. 08901  * device driver code.
  2478. 08902  */
  2479. 08903
  2480. 08904 #include <minix/callnr.h>
  2481. 08905 #include <minix/com.h>
  2482. 08906 #include "proc.h"
  2483. 08907 #include <minix/partition.h>
  2484. 08908
  2485. 08909 /* Info about and entry points into the device dependent code. */
  2486. 08910 struct driver {
  2487. 08911   _PROTOTYPE( char *(*dr_name), (void) );
  2488. 08912   _PROTOTYPE( int (*dr_open), (struct driver *dp, message *m_ptr) );
  2489. 08913   _PROTOTYPE( int (*dr_close), (struct driver *dp, message *m_ptr) );
  2490. 08914   _PROTOTYPE( int (*dr_ioctl), (struct driver *dp, message *m_ptr) );
  2491. 08915   _PROTOTYPE( struct device *(*dr_prepare), (int device) );
  2492. 08916   _PROTOTYPE( int (*dr_schedule), (int proc_nr, struct iorequest_s *request) );
  2493. 08917   _PROTOTYPE( int (*dr_finish), (void) );
  2494. 08918   _PROTOTYPE( void (*dr_cleanup), (void) );
  2495. 08919   _PROTOTYPE( void (*dr_geometry), (struct partition *entry) );
  2496. 08920 };
  2497. 08921
  2498. 08922 #if (CHIP == INTEL)
  2499. 08923
  2500. 08924 /* Number of bytes you can DMA before hitting a 64K boundary: */
  2501. 08925 #define dma_bytes_left(phys)    
  2502. 08926    ((unsigned) (sizeof(int) == 2 ? 0 : 0x10000) - (unsigned) ((phys) & 0xFFFF))
  2503. 08927
  2504. 08928 #endif /* CHIP == INTEL */
  2505. 08929
  2506. 08930 /* Base and size of a partition in bytes. */
  2507. 08931 struct device {
  2508. 08932   unsigned long dv_base;
  2509. 08933   unsigned long dv_size;
  2510. 08934 };
  2511. 08935
  2512. 08936 #define NIL_DEV         ((struct device *) 0)
  2513. 08937
  2514. 08938 /* Functions defined by driver.c: */
  2515. 08939 _PROTOTYPE( void driver_task, (struct driver *dr) );
  2516. 08940 _PROTOTYPE( int do_rdwt, (struct driver *dr, message *m_ptr) );
  2517. 08941 _PROTOTYPE( int do_vrdwt, (struct driver *dr, message *m_ptr) );
  2518. 08942 _PROTOTYPE( char *no_name, (void) );
  2519. 08943 _PROTOTYPE( int do_nop, (struct driver *dp, message *m_ptr) );
  2520. 08944 _PROTOTYPE( int nop_finish, (void) );
  2521. 08945 _PROTOTYPE( void nop_cleanup, (void) );
  2522. 08946 _PROTOTYPE( void clock_mess, (int ticks, watchdog_t func) );
  2523. 08947 _PROTOTYPE( int do_diocntl, (struct driver *dr, message *m_ptr) );
  2524. 08948
  2525. 08949 /* Parameters for the disk drive. */
  2526. 08950 #define SECTOR_SIZE      512    /* physical sector size in bytes */
  2527. 08951 #define SECTOR_SHIFT       9    /* for division */
  2528. 08952 #define SECTOR_MASK      511    /* and remainder */
  2529. 08953
  2530. 08954 /* Size of the DMA buffer buffer in bytes. */
  2531. .Op 95 src/kernel/driver.h
  2532. 08955 #define DMA_BUF_SIZE    (DMA_SECTORS * SECTOR_SIZE)
  2533. 08956
  2534. 08957 #if (CHIP == INTEL)
  2535. 08958 extern u8_t *tmp_buf;                   /* the DMA buffer */
  2536. 08959 #else
  2537. 08960 extern u8_t tmp_buf[];                  /* the DMA buffer */
  2538. 08961 #endif
  2539. 08962 extern phys_bytes tmp_phys;             /* phys address of DMA buffer */
  2540. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2541. src/kernel/drvlib.h    
  2542. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2543. 09000 /* IBM device driver definitions                        Author: Kees J. Bot
  2544. 09001  *                                                              7 Dec 1995
  2545. 09002  */
  2546. 09003
  2547. 09004 #include <ibm/partition.h>
  2548. 09005
  2549. 09006 _PROTOTYPE( void partition, (struct driver *dr, int device, int style) );
  2550. 09007
  2551. 09008 /* BIOS parameter table layout. */
  2552. 09009 #define bp_cylinders(t)         (* (u16_t *) (&(t)[0]))
  2553. 09010 #define bp_heads(t)             (* (u8_t *)  (&(t)[2]))
  2554. 09011 #define bp_reduced_wr(t)        (* (u16_t *) (&(t)[3]))
  2555. 09012 #define bp_precomp(t)           (* (u16_t *) (&(t)[5]))
  2556. 09013 #define bp_max_ecc(t)           (* (u8_t *)  (&(t)[7]))
  2557. 09014 #define bp_ctlbyte(t)           (* (u8_t *)  (&(t)[8]))
  2558. 09015 #define bp_landingzone(t)       (* (u16_t *) (&(t)[12]))
  2559. 09016 #define bp_sectors(t)           (* (u8_t *)  (&(t)[14]))
  2560. 09017
  2561. 09018 /* Miscellaneous. */
  2562. 09019 #define DEV_PER_DRIVE   (1 + NR_PARTITIONS)
  2563. 09020 #define MINOR_hd1a      128
  2564. 09021 #define MINOR_fd0a      (28<<2)
  2565. 09022 #define P_FLOPPY        0
  2566. 09023 #define P_PRIMARY       1
  2567. 09024 #define P_SUB           2
  2568. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2569. src/kernel/glo.h    
  2570. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2571. 09100 /* Global variables used in the kernel. */
  2572. 09101
  2573. 09102 /* EXTERN is defined as extern except in table.c. */
  2574. 09103 #ifdef _TABLE
  2575. 09104 #undef EXTERN
  2576. 09105 #define EXTERN
  2577. 09106 #endif
  2578. 09107
  2579. 09108 /* Kernel memory. */
  2580. 09109 EXTERN phys_bytes code_base;    /* base of kernel code */
  2581. .Ep 96 src/kernel/glo.h
  2582. 09110 EXTERN phys_bytes data_base;    /* base of kernel data */
  2583. 09111
  2584. 09112 /* Low level interrupt communications. */
  2585. 09113 EXTERN struct proc *held_head;  /* head of queue of held-up interrupts */
  2586. 09114 EXTERN struct proc *held_tail;  /* tail of queue of held-up interrupts */
  2587. 09115 EXTERN unsigned char k_reenter; /* kernel reentry count (entry count less 1)*/
  2588. 09116
  2589. 09117 /* Process table.  Here to stop too many things having to include proc.h. */
  2590. 09118 EXTERN struct proc *proc_ptr;   /* pointer to currently running process */
  2591. 09119
  2592. 09120 /* Signals. */
  2593. 09121 EXTERN int sig_procs;           /* number of procs with p_pending != 0 */
  2594. 09122
  2595. 09123 /* Memory sizes. */
  2596. 09124 EXTERN struct memory mem[NR_MEMS];      /* base and size of chunks of memory */
  2597. 09125 EXTERN phys_clicks tot_mem_size;        /* total system memory size */
  2598. 09126
  2599. 09127 /* Miscellaneous. */
  2600. 09128 extern u16_t sizes[];           /* table filled in by boot monitor */
  2601. 09129 extern struct tasktab tasktab[];/* initialized in table.c, so extern here */
  2602. 09130 extern char *t_stack[];         /* initialized in table.c, so extern here */
  2603. 09131 EXTERN unsigned lost_ticks;     /* clock ticks counted outside the clock task */
  2604. 09132 EXTERN clock_t tty_timeout;     /* time to wake up the TTY task */
  2605. 09133 EXTERN int current;             /* currently visible console */
  2606. 09134
  2607. 09135 #if (CHIP == INTEL)
  2608. 09136
  2609. 09137 /* Machine type. */
  2610. 09138 EXTERN int pc_at;               /* PC-AT compatible hardware interface */
  2611. 09139 EXTERN int ps_mca;              /* PS/2 with Micro Channel */
  2612. 09140 EXTERN unsigned int processor;  /* 86, 186, 286, 386, ... */
  2613. 09141 #if _WORD_SIZE == 2
  2614. 09142 EXTERN int protected_mode;      /* nonzero if running in Intel protected mode*/
  2615. 09143 #else
  2616. 09144 #define protected_mode  1       /* 386 mode implies protected mode */
  2617. 09145 #endif
  2618. 09146
  2619. 09147 /* Video card types. */
  2620. 09148 EXTERN int ega;                 /* nonzero if console is EGA */
  2621. 09149 EXTERN int vga;                 /* nonzero if console is VGA */
  2622. 09150
  2623. 09151 /* Memory sizes. */
  2624. 09152 EXTERN unsigned ext_memsize;    /* initialized by assembler startup code */
  2625. 09153 EXTERN unsigned low_memsize;
  2626. 09154
  2627. 09155 /* Miscellaneous. */
  2628. 09156 EXTERN irq_handler_t irq_table[NR_IRQ_VECTORS];
  2629. 09157 EXTERN int irq_use;             /* bit map of all in-use irq's */
  2630. 09158 EXTERN reg_t mon_ss, mon_sp;    /* monitor stack */
  2631. 09159 EXTERN int mon_return;          /* true if return to the monitor possible */
  2632. 09160 EXTERN phys_bytes reboot_code;  /* program for the boot monitor */
  2633. 09161
  2634. 09162 /* Variables that are initialized elsewhere are just extern here. */
  2635. 09163 extern struct segdesc_s gdt[];  /* global descriptor table for protected mode*/
  2636. 09164
  2637. 09165 EXTERN _PROTOTYPE( void (*level0_func), (void) );
  2638. 09166 #endif /* (CHIP == INTEL) */
  2639. 09167
  2640. 09168 #if (CHIP == M68000)
  2641. 09169 /* Variables that are initialized elsewhere are just extern here. */
  2642. .Op 97 src/kernel/glo.h
  2643. 09170 extern int keypad;              /* Flag for keypad mode */
  2644. 09171 extern int app_mode;            /* Flag for arrow key application mode */
  2645. 09172 extern int STdebKey;            /* nonzero if ctl-alt-Fx detected */
  2646. 09173 extern struct tty *cur_cons;    /* virtual cons currently displayed */
  2647. 09174 extern unsigned char font8[];   /* 8 pixel wide font table (initialized) */
  2648. 09175 extern unsigned char font12[];  /* 12 pixel wide font table (initialized) */
  2649. 09176 extern unsigned char font16[];  /* 16 pixel wide font table (initialized) */
  2650. 09177 extern unsigned short resolution; /* screen res; ST_RES_LOW..TT_RES_HIGH */
  2651. 09178 #endif
  2652. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2653. src/kernel/kernel.h    
  2654. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2655. 09200 /* This is the master header for the kernel.  It includes some other files
  2656. 09201  * and defines the principal constants.
  2657. 09202  */
  2658. 09203 #define _POSIX_SOURCE      1    /* tell headers to include POSIX stuff */
  2659. 09204 #define _MINIX             1    /* tell headers to include MINIX stuff */
  2660. 09205 #define _SYSTEM            1    /* tell headers that this is the kernel */
  2661. 09206
  2662. 09207 /* The following are so basic, all the *.c files get them automatically. */
  2663. 09208 #include <minix/config.h>       /* MUST be first */
  2664. 09209 #include <ansi.h>               /* MUST be second */
  2665. 09210 #include <sys/types.h>
  2666. 09211 #include <minix/const.h>
  2667. 09212 #include <minix/type.h>
  2668. 09213 #include <minix/syslib.h>
  2669. 09214
  2670. 09215 #include <string.h>
  2671. 09216 #include <limits.h>
  2672. 09217 #include <errno.h>
  2673. 09218
  2674. 09219 #include "const.h"
  2675. 09220 #include "type.h"
  2676. 09221 #include "proto.h"
  2677. 09222 #include "glo.h"
  2678. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2679. src/kernel/ne2000.h    
  2680. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2681. 09300 /*
  2682. 09301 ne2000.h
  2683. 09302
  2684. 09303 Created:        March 15, 1994 by Philip Homburg <philip@cs.vu.nl>
  2685. 09304 */
  2686. 09305
  2687. 09306 #ifndef NE2000_H
  2688. 09307 #define NE2000_H
  2689. 09308
  2690. 09309 #define NE_DP8390       0x00
  2691. 09310 #define NE_DATA         0x10
  2692. 09311 #define NE_RESET        0x1F
  2693. 09312
  2694. 09313 #define NE1000_START    0x2000
  2695. 09314 #define NE1000_SIZE     0x2000
  2696. .Ep 98 src/kernel/ne2000.h
  2697. 09315 #define NE2000_START    0x4000
  2698. 09316 #define NE2000_SIZE     0x4000
  2699. 09317
  2700. 09318 #define inb_ne(dep, reg) (in_byte(dep->de_base_port+reg))
  2701. 09319 #define outb_ne(dep, reg, data) (out_byte(dep->de_base_port+reg, data))
  2702. 09320 #define inw_ne(dep, reg) (in_word(dep->de_base_port+reg))
  2703. 09321 #define outw_ne(dep, reg, data) (out_word(dep->de_base_port+reg, data))
  2704. 09322
  2705. 09323 #endif /* NE2000_H */
  2706. 09324
  2707. 09325 /*
  2708. 09326  * $PchHeader: /mount/hd2/minix/sys/kernel/ibm/RCS/ne2000.h,v 1.1 1994/04/07 22:58:48 philip Exp $
  2709. 09327  */
  2710. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2711. src/kernel/proc.h    
  2712. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2713. 09400 #ifndef PROC_H
  2714. 09401 #define PROC_H
  2715. 09402
  2716. 09403 /* Here is the declaration of the process table.  It contains the process'
  2717. 09404  * registers, memory map, accounting, and message send/receive information.
  2718. 09405  * Many assembly code routines reference fields in it.  The offsets to these
  2719. 09406  * fields are defined in the assembler include file sconst.h.  When changing
  2720. 09407  * 'proc', be sure to change sconst.h to match.
  2721. 09408  */
  2722. 09409
  2723. 09410 struct proc {
  2724. 09411   struct stackframe_s p_reg;    /* process' registers saved in stack frame */
  2725. 09412
  2726. 09413 #if (CHIP == INTEL)
  2727. 09414   reg_t p_ldt_sel;              /* selector in gdt giving ldt base and limit*/
  2728. 09415   struct segdesc_s p_ldt[2];    /* local descriptors for code and data */
  2729. 09416                                 /* 2 is LDT_SIZE - avoid include protect.h */
  2730. 09417 #endif /* (CHIP == INTEL) */
  2731. 09418
  2732. 09419 #if (CHIP == M68000)
  2733. 09420   reg_t p_splow;                /* lowest observed stack value */
  2734. 09421   int p_trap;                   /* trap type (only low byte) */
  2735. 09422 #if (SHADOWING == 0)
  2736. 09423   char *p_crp;                  /* mmu table pointer (really struct _rpr *) */
  2737. 09424 #else
  2738. 09425   phys_clicks p_shadow;         /* set if shadowed process image */
  2739. 09426   int align;                    /* make the struct size a multiple of 4 */
  2740. 09427 #endif
  2741. 09428   int p_nflips;                 /* statistics */
  2742. 09429   char p_physio;                /* cannot be (un)shadowed now if set */
  2743. 09430 #if defined(FPP)
  2744. 09431   struct fsave p_fsave;         /* FPP state frame and registers */
  2745. 09432   int align2;                   /* make the struct size a multiple of 4 */
  2746. 09433 #endif
  2747. 09434 #endif /* (CHIP == M68000) */
  2748. 09435
  2749. 09436   reg_t *p_stguard;             /* stack guard word */
  2750. 09437
  2751. 09438   int p_nr;                     /* number of this process (for fast access) */
  2752. 09439
  2753. .Op 99 src/kernel/proc.h
  2754. 09440   int p_int_blocked;            /* nonzero if int msg blocked by busy task */
  2755. 09441   int p_int_held;               /* nonzero if int msg held by busy syscall */
  2756. 09442   struct proc *p_nextheld;      /* next in chain of held-up int processes */
  2757. 09443
  2758. 09444   int p_flags;                  /* P_SLOT_FREE, SENDING, RECEIVING, etc. */
  2759. 09445   struct mem_map p_map[NR_SEGS];/* memory map */
  2760. 09446   pid_t p_pid;                  /* process id passed in from MM */
  2761. 09447
  2762. 09448   clock_t user_time;            /* user time in ticks */
  2763. 09449   clock_t sys_time;             /* sys time in ticks */
  2764. 09450   clock_t child_utime;          /* cumulative user time of children */
  2765. 09451   clock_t child_stime;          /* cumulative sys time of children */
  2766. 09452   clock_t p_alarm;              /* time of next alarm in ticks, or 0 */
  2767. 09453
  2768. 09454   struct proc *p_callerq;       /* head of list of procs wishing to send */
  2769. 09455   struct proc *p_sendlink;      /* link to next proc wishing to send */
  2770. 09456   message *p_messbuf;           /* pointer to message buffer */
  2771. 09457   int p_getfrom;                /* from whom does process want to receive? */
  2772. 09458   int p_sendto;
  2773. 09459
  2774. 09460   struct proc *p_nextready;     /* pointer to next ready process */
  2775. 09461   sigset_t p_pending;           /* bit map for pending signals */
  2776. 09462   unsigned p_pendcount;         /* count of pending and unfinished signals */
  2777. 09463
  2778. 09464   char p_name[16];              /* name of the process */
  2779. 09465 };
  2780. 09466
  2781. 09467 /* Guard word for task stacks. */
  2782. 09468 #define STACK_GUARD     ((reg_t) (sizeof(reg_t) == 2 ? 0xBEEF : 0xDEADBEEF))
  2783. 09469
  2784. 09470 /* Bits for p_flags in proc[].  A process is runnable iff p_flags == 0. */
  2785. 09471 #define P_SLOT_FREE      001    /* set when slot is not in use */
  2786. 09472 #define NO_MAP           002    /* keeps unmapped forked child from running */
  2787. 09473 #define SENDING          004    /* set when process blocked trying to send */
  2788. 09474 #define RECEIVING        010    /* set when process blocked trying to recv */
  2789. 09475 #define PENDING          020    /* set when inform() of signal pending */
  2790. 09476 #define SIG_PENDING      040    /* keeps to-be-signalled proc from running */
  2791. 09477 #define P_STOP          0100    /* set when process is being traced */
  2792. 09478
  2793. 09479 /* Magic process table addresses. */
  2794. 09480 #define BEG_PROC_ADDR (&proc[0])
  2795. 09481 #define END_PROC_ADDR (&proc[NR_TASKS + NR_PROCS])
  2796. 09482 #define END_TASK_ADDR (&proc[NR_TASKS])
  2797. 09483 #define BEG_SERV_ADDR (&proc[NR_TASKS])
  2798. 09484 #define BEG_USER_ADDR (&proc[NR_TASKS + LOW_USER])
  2799. 09485
  2800. 09486 #define NIL_PROC          ((struct proc *) 0)
  2801. 09487 #define isidlehardware(n) ((n) == IDLE || (n) == HARDWARE)
  2802. 09488 #define isokprocn(n)      ((unsigned) ((n) + NR_TASKS) < NR_PROCS + NR_TASKS)
  2803. 09489 #define isoksrc_dest(n)   (isokprocn(n) || (n) == ANY)
  2804. 09490 #define isoksusern(n)     ((unsigned) (n) < NR_PROCS)
  2805. 09491 #define isokusern(n)      ((unsigned) ((n) - LOW_USER) < NR_PROCS - LOW_USER)
  2806. 09492 #define isrxhardware(n)   ((n) == ANY || (n) == HARDWARE)
  2807. 09493 #define issysentn(n)      ((n) == FS_PROC_NR || (n) == MM_PROC_NR)
  2808. 09494 #define istaskp(p)        ((p) < END_TASK_ADDR && (p) != proc_addr(IDLE))
  2809. 09495 #define isuserp(p)        ((p) >= BEG_USER_ADDR)