1: /* The <unistd.h> header contains a few miscellaneous manifest constants. */
   2: 
   3: #ifndef _UNISTD_H
   4: #define _UNISTD_H
   5: 
   6: #ifndef _TYPES_H
   7: #include <sys/types.h>
   8: #endif
   9: 
  10: /* Values used by access().  POSIX Table 2-8. */
  11: #define F_OK               0    /* test if file exists */
  12: #define X_OK               1    /* test if file is executable */
  13: #define W_OK               2    /* test if file is writable */
  14: #define R_OK               4    /* test if file is readable */
  15: 
  16: /* Values used for whence in lseek(fd, offset, whence).  POSIX Table 2-9. */
  17: #define SEEK_SET           0    /* offset is absolute  */
  18: #define SEEK_CUR           1    /* offset is relative to current position */
  19: #define SEEK_END           2    /* offset is relative to end of file */
  20: 
  21: /* This value is required by POSIX Table 2-10. */
  22: #define _POSIX_VERSION 199009L  /* which standard is being conformed to */
  23: 
  24: /* These three definitions are required by POSIX Sec. 8.2.1.2. */
  25: #define STDIN_FILENO       0    /* file descriptor for stdin */
  26: #define STDOUT_FILENO      1    /* file descriptor for stdout */
  27: #define STDERR_FILENO      2    /* file descriptor for stderr */
  28: 
  29: #ifdef _MINIX
  30: /* How to exit the system or stop a server process. */
  31: #define RBT_HALT           0
  32: #define RBT_REBOOT         1
  33: #define RBT_PANIC          2    /* a server panics */
  34: #define RBT_MONITOR        3    /* let the monitor do this */
  35: #define RBT_RESET          4    /* hard reset the system */
  36: #endif
  37: 
  38: /* What system info to retrieve with sysgetinfo(). */
  39: #define SI_KINFO           0    /* get kernel info via PM */
  40: #define SI_PROC_ADDR       1    /* address of process table */
  41: #define SI_PROC_TAB        2    /* copy of entire process table */
  42: #define SI_DMAP_TAB        3    /* get device <-> driver mappings */
  43: #define SI_MEM_ALLOC       4    /* get memory allocation data */
  44: #define SI_DATA_STORE      5    /* get copy of data store */
  45: 
  46: /* NULL must be defined in <unistd.h> according to POSIX Sec. 2.7.1. */
  47: #define NULL    ((void *)0)
  48: 
  49: /* The following relate to configurable system variables. POSIX Table 4-2. */
  50: #define _SC_ARG_MAX        1
  51: #define _SC_CHILD_MAX      2
  52: #define _SC_CLOCKS_PER_SEC 3
  53: #define _SC_CLK_TCK        3
  54: #define _SC_NGROUPS_MAX    4
  55: #define _SC_OPEN_MAX       5
  56: #define _SC_JOB_CONTROL    6
  57: #define _SC_SAVED_IDS      7
  58: #define _SC_VERSION        8
  59: #define _SC_STREAM_MAX     9
  60: #define _SC_TZNAME_MAX    10
  61: 
  62: /* The following relate to configurable pathname variables. POSIX Table 5-2. */
  63: #define _PC_LINK_MAX       1    /* link count */
  64: #define _PC_MAX_CANON      2    /* size of the canonical input queue */
  65: #define _PC_MAX_INPUT      3    /* type-ahead buffer size */
  66: #define _PC_NAME_MAX       4    /* file name size */
  67: #define _PC_PATH_MAX       5    /* pathname size */
  68: #define _PC_PIPE_BUF       6    /* pipe size */
  69: #define _PC_NO_TRUNC       7    /* treatment of long name components */
  70: #define _PC_VDISABLE       8    /* tty disable */
  71: #define _PC_CHOWN_RESTRICTED 9  /* chown restricted or not */
  72: 
  73: /* POSIX defines several options that may be implemented or not, at the
  74:  * implementer's whim.  This implementer has made the following choices:
  75:  *
  76:  * _POSIX_JOB_CONTROL       not defined:        no job control
  77:  * _POSIX_SAVED_IDS         not defined:        no saved uid/gid
  78:  * _POSIX_NO_TRUNC          defined as -1:      long path names are truncated
  79:  * _POSIX_CHOWN_RESTRICTED  defined:            you can't give away files
  80:  * _POSIX_VDISABLE          defined:            tty functions can be disabled
  81:  */
  82: #define _POSIX_NO_TRUNC       (-1)
  83: #define _POSIX_CHOWN_RESTRICTED  1
  84: 
  85: /* Function Prototypes. */
  86: _PROTOTYPE( void _exit, (int _status)                                   );
  87: _PROTOTYPE( int access, (const char *_path, int _amode)                 );
  88: _PROTOTYPE( unsigned int alarm, (unsigned int _seconds)                 );
  89: _PROTOTYPE( int chdir, (const char *_path)                              );
  90: _PROTOTYPE( int fchdir, (int fd)                                        );
  91: _PROTOTYPE( int chown, (const char *_path, _mnx_Uid_t _owner, _mnx_Gid_t _group)        );
  92: _PROTOTYPE( int close, (int _fd)                                        );
  93: _PROTOTYPE( char *ctermid, (char *_s)                                   );
  94: _PROTOTYPE( char *cuserid, (char *_s)                                   );
  95: _PROTOTYPE( int dup, (int _fd)                                          );
  96: _PROTOTYPE( int dup2, (int _fd, int _fd2)                               );
  97: _PROTOTYPE( int execl, (const char *_path, const char *_arg, ...)       );
  98: _PROTOTYPE( int execle, (const char *_path, const char *_arg, ...)      );
  99: _PROTOTYPE( int execlp, (const char *_file, const char *arg, ...)       );
 100: _PROTOTYPE( int execv, (const char *_path, char *const _argv[])         );
 101: _PROTOTYPE( int execve, (const char *_path, char *const _argv[], 
 102:                                                 char *const _envp[])    );
 103: _PROTOTYPE( int execvp, (const char *_file, char *const _argv[])        );
 104: _PROTOTYPE( pid_t fork, (void)                                          );
 105: _PROTOTYPE( long fpathconf, (int _fd, int _name)                        );
 106: _PROTOTYPE( char *getcwd, (char *_buf, size_t _size)                    );
 107: _PROTOTYPE( gid_t getegid, (void)                                       );
 108: _PROTOTYPE( uid_t geteuid, (void)                                       );
 109: _PROTOTYPE( gid_t getgid, (void)                                        );
 110: _PROTOTYPE( int getgroups, (int _gidsetsize, gid_t _grouplist[])        );
 111: _PROTOTYPE( char *getlogin, (void)                                      );
 112: _PROTOTYPE( pid_t getpgrp, (void)                                       );
 113: _PROTOTYPE( pid_t getpid, (void)                                        );
 114: _PROTOTYPE( pid_t getnpid, (int proc_nr)                                );
 115: _PROTOTYPE( pid_t getppid, (void)                                       );
 116: _PROTOTYPE( uid_t getuid, (void)                                        );
 117: _PROTOTYPE( int isatty, (int _fd)                                       );
 118: _PROTOTYPE( int link, (const char *_existing, const char *_new)         );
 119: _PROTOTYPE( off_t lseek, (int _fd, off_t _offset, int _whence)          );
 120: _PROTOTYPE( long pathconf, (const char *_path, int _name)               );
 121: _PROTOTYPE( int pause, (void)                                           );
 122: _PROTOTYPE( int pipe, (int _fildes[2])                                  );
 123: _PROTOTYPE( ssize_t read, (int _fd, void *_buf, size_t _n)              );
 124: _PROTOTYPE( int rmdir, (const char *_path)                              );
 125: _PROTOTYPE( int setgid, (_mnx_Gid_t _gid)                               );
 126: _PROTOTYPE( int setpgid, (pid_t _pid, pid_t _pgid)                      );
 127: _PROTOTYPE( pid_t setsid, (void)                                        );
 128: _PROTOTYPE( int setuid, (_mnx_Uid_t _uid)                               );
 129: _PROTOTYPE( unsigned int sleep, (unsigned int _seconds)                 );
 130: _PROTOTYPE( long sysconf, (int _name)                                   );
 131: _PROTOTYPE( pid_t tcgetpgrp, (int _fd)                                  );
 132: _PROTOTYPE( int tcsetpgrp, (int _fd, pid_t _pgrp_id)                    );
 133: _PROTOTYPE( char *ttyname, (int _fd)                                    );
 134: _PROTOTYPE( int unlink, (const char *_path)                             );
 135: _PROTOTYPE( ssize_t write, (int _fd, const void *_buf, size_t _n)       );
 136: 
 137: /* Open Group Base Specifications Issue 6 (not complete) */
 138: _PROTOTYPE( int symlink, (const char *path1, const char *path2)         );
 139: _PROTOTYPE( int getopt, (int _argc, char **_argv, char *_opts)          );
 140: extern char *optarg;
 141: extern int optind, opterr, optopt;
 142: _PROTOTYPE( int usleep, (useconds_t _useconds)                          );
 143: 
 144: #ifdef _MINIX
 145: #ifndef _TYPE_H
 146: #include <minix/type.h>
 147: #endif
 148: _PROTOTYPE( int brk, (char *_addr)                                      );
 149: _PROTOTYPE( int chroot, (const char *_name)                             );
 150: _PROTOTYPE( int mknod, (const char *_name, _mnx_Mode_t _mode, Dev_t _addr)      );
 151: _PROTOTYPE( int mknod4, (const char *_name, _mnx_Mode_t _mode, Dev_t _addr,
 152:             long _size)                                                 );
 153: _PROTOTYPE( char *mktemp, (char *_template)                             );
 154: _PROTOTYPE( int mount, (char *_spec, char *_name, int _flag)            );
 155: _PROTOTYPE( long ptrace, (int _req, pid_t _pid, long _addr, long _data) );
 156: _PROTOTYPE( char *sbrk, (int _incr)                                     );
 157: _PROTOTYPE( int sync, (void)                                            );
 158: _PROTOTYPE( int fsync, (int fd)                                         );
 159: _PROTOTYPE( int umount, (const char *_name)                             );
 160: _PROTOTYPE( int reboot, (int _how, ...)                                 );
 161: _PROTOTYPE( int gethostname, (char *_hostname, size_t _len)             );
 162: _PROTOTYPE( int getdomainname, (char *_domain, size_t _len)             );
 163: _PROTOTYPE( int ttyslot, (void)                                         );
 164: _PROTOTYPE( int fttyslot, (int _fd)                                     );
 165: _PROTOTYPE( char *crypt, (const char *_key, const char *_salt)          );
 166: _PROTOTYPE( int getsysinfo, (int who, int what, void *where)            );
 167: _PROTOTYPE( int getprocnr, (void)                                       );
 168: _PROTOTYPE( int getnprocnr, (pid_t pid)                                 );
 169: _PROTOTYPE( int getpprocnr, (void)                                      );
 170: _PROTOTYPE( int findproc, (char *proc_name, int *proc_nr)               );
 171: _PROTOTYPE( int allocmem, (phys_bytes size, phys_bytes *base)           );
 172: _PROTOTYPE( int freemem, (phys_bytes size, phys_bytes base)             );
 173: #define DEV_MAP 1
 174: #define DEV_UNMAP 2
 175: #define mapdriver(driver, device, style) devctl(DEV_MAP, driver, device, style)
 176: #define unmapdriver(device) devctl(DEV_UNMAP, 0, device, 0)
 177: _PROTOTYPE( int devctl, (int ctl_req, int driver, int device, int style));
 178: 
 179: /* For compatibility with other Unix systems */
 180: _PROTOTYPE( int getpagesize, (void)                                     );
 181: _PROTOTYPE( int setgroups, (int ngroups, const gid_t *gidset)           );
 182: 
 183: #endif
 184: 
 185: _PROTOTYPE( int readlink, (const char *, char *, int));
 186: _PROTOTYPE( int getopt, (int, char **, char *));
 187: extern int optind, opterr, optopt;
 188: 
 189: #endif /* _UNISTD_H */