sys9.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. typedef
  2. struct Waitmsg
  3. {
  4. int pid; /* of loved one */
  5. unsigned long time[3]; /* of loved one & descendants */
  6. char *msg;
  7. } Waitmsg;
  8. #define STATMAX 65535U /* max length of machine-independent stat structure */
  9. #define DIRMAX (sizeof(Dir)+STATMAX) /* max length of Dir structure */
  10. #define ERRMAX 128 /* max length of error string */
  11. #define MORDER 0x0003 /* mask for bits defining order of mounting */
  12. #define MREPL 0x0000 /* mount replaces object */
  13. #define MBEFORE 0x0001 /* mount goes before others in union directory */
  14. #define MAFTER 0x0002 /* mount goes after others in union directory */
  15. #define MCREATE 0x0004 /* permit creation in mounted directory */
  16. #define MCACHE 0x0010 /* cache some data */
  17. #define MMASK 0x0007 /* all bits on */
  18. #define OREAD 0 /* open for read */
  19. #define OWRITE 1 /* write */
  20. #define ORDWR 2 /* read and write */
  21. #define OEXEC 3 /* execute, == read but check execute permission */
  22. #define OTRUNC 16 /* or'ed in (except for exec), truncate file first */
  23. #define OCEXEC 32 /* or'ed in, close on exec */
  24. #define ORCLOSE 64 /* or'ed in, remove on close */
  25. #define OEXCL 0x1000 /* or'ed in, exclusive use (create only) */
  26. #define AEXIST 0 /* accessible: exists */
  27. #define AEXEC 1 /* execute access */
  28. #define AWRITE 2 /* write access */
  29. #define AREAD 4 /* read access */
  30. /* Segattch */
  31. #define SG_RONLY 0040 /* read only */
  32. #define SG_CEXEC 0100 /* detach on exec */
  33. #define NCONT 0 /* continue after note */
  34. #define NDFLT 1 /* terminate after note */
  35. #define NSAVE 2 /* clear note but hold state */
  36. #define NRSTR 3 /* restore saved state */
  37. /* bits in Qid.type */
  38. #define QTDIR 0x80 /* type bit for directories */
  39. #define QTAPPEND 0x40 /* type bit for append only files */
  40. #define QTEXCL 0x20 /* type bit for exclusive use files */
  41. #define QTMOUNT 0x10 /* type bit for mounted channel */
  42. #define QTFILE 0x00 /* plain file */
  43. /* bits in Dir.mode */
  44. #define DMDIR 0x80000000 /* mode bit for directories */
  45. #define DMAPPEND 0x40000000 /* mode bit for append only files */
  46. #define DMEXCL 0x20000000 /* mode bit for exclusive use files */
  47. #define DMMOUNT 0x10000000 /* mode bit for mounted channel */
  48. #define DMREAD 0x4 /* mode bit for read permission */
  49. #define DMWRITE 0x2 /* mode bit for write permission */
  50. #define DMEXEC 0x1 /* mode bit for execute permission */
  51. /* rfork */
  52. enum
  53. {
  54. RFNAMEG = (1<<0),
  55. RFENVG = (1<<1),
  56. RFFDG = (1<<2),
  57. RFNOTEG = (1<<3),
  58. RFPROC = (1<<4),
  59. RFMEM = (1<<5),
  60. RFNOWAIT = (1<<6),
  61. RFCNAMEG = (1<<10),
  62. RFCENVG = (1<<11),
  63. RFCFDG = (1<<12),
  64. RFREND = (1<<13),
  65. RFNOMNT = (1<<14)
  66. };
  67. extern int _AWAIT(char*, int);
  68. extern int _ALARM(unsigned long);
  69. extern int _BIND(const char*, const char*, int);
  70. extern int _CHDIR(const char*);
  71. extern int _CLOSE(int);
  72. extern int _CREATE(char*, int, unsigned long);
  73. extern int _DUP(int, int);
  74. extern int _ERRSTR(char*, unsigned int);
  75. extern int _EXEC(char*, char*[]);
  76. extern void _EXITS(char *);
  77. extern int _FD2PATH(int, char*, int);
  78. extern int _FAUTH(int, char*);
  79. extern int _FSESSION(int, char*, int);
  80. extern int _FSTAT(int, unsigned char*, int);
  81. extern int _FWSTAT(int, unsigned char*, int);
  82. extern int _MOUNT(int, int, const char*, int, const char*);
  83. extern int _NOTED(int);
  84. extern int _NOTIFY(int(*)(void*, char*));
  85. extern int _OPEN(const char*, int);
  86. extern int _PIPE(int*);
  87. extern long _PREAD(int, void*, long, long long);
  88. extern long _PWRITE(int, void*, long, long long);
  89. extern long _READ(int, void*, long);
  90. extern int _REMOVE(const char*);
  91. extern int _RENDEZVOUS(unsigned long, unsigned long);
  92. extern int _RFORK(int);
  93. extern int _SEGATTACH(int, char*, void*, unsigned long);
  94. extern int _SEGBRK(void*, void*);
  95. extern int _SEGDETACH(void*);
  96. extern int _SEGFLUSH(void*, unsigned long);
  97. extern int _SEGFREE(void*, unsigned long);
  98. extern long long _SEEK(int, long long, int);
  99. extern int _SLEEP(long);
  100. extern int _STAT(const char*, unsigned char*, int);
  101. extern Waitmsg* _WAIT(void);
  102. extern long _WRITE(int, const void*, long);
  103. extern int _WSTAT(const char*, unsigned char*, int);
  104. extern int __open(char *, int, ...);
  105. extern int __access(char *, int);
  106. extern int __chdir(char *);
  107. extern int __creat(char *, int);
  108. extern int __link(char *, int);
  109. extern int __stat(char *, struct stat *);
  110. extern int __unlink(char *);