root/include/unistd.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   1 #ifndef _UNISTD_H
   2 #define _UNISTD_H
   3 
   4 /* ok, this may be a joke, but I'm working on it */
   5 #define _POSIX_VERSION 198808L
   6 
   7 #define _POSIX_CHOWN_RESTRICTED 1    /* only root can do a chown (I think..) */
   8 #define _POSIX_NO_TRUNC         1    /* no pathname truncation (but see kernel) */
   9 #define _POSIX_VDISABLE         '\0' /* character to disable things like ^C */
  10 #define _POSIX_JOB_CONTROL      1
  11 #define _POSIX_SAVED_IDS        1    /* Implemented, for whatever good it is */
  12 
  13 #define STDIN_FILENO    0
  14 #define STDOUT_FILENO   1
  15 #define STDERR_FILENO   2
  16 
  17 #ifndef NULL
  18 #define NULL    ((void *)0)
  19 #endif
  20 
  21 /* access */
  22 #define F_OK    0
  23 #define X_OK    1
  24 #define W_OK    2
  25 #define R_OK    4
  26 
  27 /* lseek */
  28 #define SEEK_SET        0
  29 #define SEEK_CUR        1
  30 #define SEEK_END        2
  31 
  32 /* _SC stands for System Configuration. We don't use them much */
  33 #define _SC_ARG_MAX             1
  34 #define _SC_CHILD_MAX           2
  35 #define _SC_CLOCKS_PER_SEC      3
  36 #define _SC_NGROUPS_MAX         4
  37 #define _SC_OPEN_MAX            5
  38 #define _SC_JOB_CONTROL         6
  39 #define _SC_SAVED_IDS           7
  40 #define _SC_VERSION             8
  41 
  42 /* more (possibly) configurable things - now pathnames */
  43 #define _PC_LINK_MAX            1
  44 #define _PC_MAX_CANON           2
  45 #define _PC_MAX_INPUT           3
  46 #define _PC_NAME_MAX            4
  47 #define _PC_PATH_MAX            5
  48 #define _PC_PIPE_BUF            6
  49 #define _PC_NO_TRUNC            7
  50 #define _PC_VDISABLE            8
  51 #define _PC_CHOWN_RESTRICTED    9
  52 
  53 #if 0
  54 /* XXX - <sys/stat.h> illegally <sys/types.h> already.
  55  * The rest of these includes are also illegal (too much pollution).
  56  */
  57 #include <sys/types.h>
  58 #endif
  59 #include <sys/stat.h>
  60 #include <sys/time.h>
  61 #include <sys/times.h>
  62 #include <sys/utsname.h>
  63 #include <sys/resource.h>
  64 #include <utime.h>
  65 
  66 #ifdef __LIBRARY__
  67 
  68 #define __NR_setup                0     /* used only by init, to get system going */
  69 #define __NR_exit                 1
  70 #define __NR_fork                 2
  71 #define __NR_read                 3
  72 #define __NR_write                4
  73 #define __NR_open                 5
  74 #define __NR_close                6
  75 #define __NR_waitpid              7
  76 #define __NR_creat                8
  77 #define __NR_link                 9
  78 #define __NR_unlink              10
  79 #define __NR_execve              11
  80 #define __NR_chdir               12
  81 #define __NR_time                13
  82 #define __NR_mknod               14
  83 #define __NR_chmod               15
  84 #define __NR_chown               16
  85 #define __NR_break               17
  86 #define __NR_stat                18
  87 #define __NR_lseek               19
  88 #define __NR_getpid              20
  89 #define __NR_mount               21
  90 #define __NR_umount              22
  91 #define __NR_setuid              23
  92 #define __NR_getuid              24
  93 #define __NR_stime               25
  94 #define __NR_ptrace              26
  95 #define __NR_alarm               27
  96 #define __NR_fstat               28
  97 #define __NR_pause               29
  98 #define __NR_utime               30
  99 #define __NR_stty                31
 100 #define __NR_gtty                32
 101 #define __NR_access              33
 102 #define __NR_nice                34
 103 #define __NR_ftime               35
 104 #define __NR_sync                36
 105 #define __NR_kill                37
 106 #define __NR_rename              38
 107 #define __NR_mkdir               39
 108 #define __NR_rmdir               40
 109 #define __NR_dup                 41
 110 #define __NR_pipe                42
 111 #define __NR_times               43
 112 #define __NR_prof                44
 113 #define __NR_brk                 45
 114 #define __NR_setgid              46
 115 #define __NR_getgid              47
 116 #define __NR_signal              48
 117 #define __NR_geteuid             49
 118 #define __NR_getegid             50
 119 #define __NR_acct                51
 120 #define __NR_phys                52
 121 #define __NR_lock                53
 122 #define __NR_ioctl               54
 123 #define __NR_fcntl               55
 124 #define __NR_mpx                 56
 125 #define __NR_setpgid             57
 126 #define __NR_ulimit              58
 127 #define __NR_uname               59
 128 #define __NR_umask               60
 129 #define __NR_chroot              61
 130 #define __NR_ustat               62
 131 #define __NR_dup2                63
 132 #define __NR_getppid             64
 133 #define __NR_getpgrp             65
 134 #define __NR_setsid              66
 135 #define __NR_sigaction           67
 136 #define __NR_sgetmask            68
 137 #define __NR_ssetmask            69
 138 #define __NR_setreuid            70
 139 #define __NR_setregid            71
 140 #define __NR_sigsuspend          72
 141 #define __NR_sigpending          73
 142 #define __NR_sethostname         74
 143 #define __NR_setrlimit           75
 144 #define __NR_getrlimit           76
 145 #define __NR_getrusage           77
 146 #define __NR_gettimeofday        78
 147 #define __NR_settimeofday        79
 148 #define __NR_getgroups           80
 149 #define __NR_setgroups           81
 150 #define __NR_select              82
 151 #define __NR_symlink             83
 152 #define __NR_lstat               84
 153 #define __NR_readlink            85
 154 #define __NR_uselib              86
 155 #define __NR_swapon              87
 156 #define __NR_reboot              88
 157 #define __NR_readdir             89
 158 #define __NR_mmap                90
 159 #define __NR_munmap              91
 160 /*
 161  * Not all of these are implemented yet, but these are the
 162  * numbers they will use.
 163  */
 164 #define __NR_truncate            92
 165 #define __NR_ftruncate           93
 166 #define __NR_fchmod              94
 167 #define __NR_fchown              95
 168 #define __NR_getpriority         96
 169 #define __NR_setpriority         97
 170 #define __NR_profil              98
 171 #define __NR_statfs              99
 172 #define __NR_fstatfs            100
 173 #define __NR_ioperm             101
 174 
 175 /* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
 176 #define _syscall0(type,name) \
 177 type name(void) \
 178 { \
 179 long __res; \
 180 __asm__ volatile ("int $0x80" \
 181         : "=a" (__res) \
 182         : "0" (__NR_##name)); \
 183 if (__res >= 0) \
 184         return (type) __res; \
 185 errno = -__res; \
 186 return -1; \
 187 }
 188 
 189 #define _syscall1(type,name,atype,a) \
 190 type name(atype a) \
 191 { \
 192 long __res; \
 193 __asm__ volatile ("movl %2,%%ebx\n\t" \
 194         "int $0x80" \
 195         : "=a" (__res) \
 196         : "0" (__NR_##name),"g" ((long)(a)):"bx"); \
 197 if (__res >= 0) \
 198         return (type) __res; \
 199 errno = -__res; \
 200 return -1; \
 201 }
 202 
 203 #define _syscall2(type,name,atype,a,btype,b) \
 204 type name(atype a,btype b) \
 205 { \
 206 long __res; \
 207 __asm__ volatile ("movl %2,%%ebx\n\t" \
 208         "int $0x80" \
 209         : "=a" (__res) \
 210         : "0" (__NR_##name),"g" ((long)(a)),"c" ((long)(b)):"bx"); \
 211 if (__res >= 0) \
 212         return (type) __res; \
 213 errno = -__res; \
 214 return -1; \
 215 }
 216 
 217 #define _syscall3(type,name,atype,a,btype,b,ctype,c) \
 218 type name(atype a,btype b,ctype c) \
 219 { \
 220 long __res; \
 221 __asm__ volatile ("movl %2,%%ebx\n\t" \
 222         "int $0x80" \
 223         : "=a" (__res) \
 224         : "0" (__NR_##name),"g" ((long)(a)),"c" ((long)(b)),"d" ((long)(c)):"bx"); \
 225 if (__res>=0) \
 226         return (type) __res; \
 227 errno=-__res; \
 228 return -1; \
 229 }
 230 
 231 #define _syscall4(type,name,atype,a,btype,b,ctype,c,dtype,d) \
 232 type name (atype a, btype b, ctype c, dtype d) \
 233 { \
 234 long __res; \
 235 __asm__ volatile ("movl %2,%%ebx\n\t" \
 236         "int $0x80" \
 237         : "=a" (__res) \
 238         : "0" (__NR_##name),"b" ((long)(a)),"c" ((long)(b)), \
 239           "d" ((long)(c)),"S" ((long)(d))); \
 240 if (__res>=0) \
 241         return (type) __res; \
 242 errno=-__res; \
 243 return -1; \
 244 }
 245 
 246 #define _syscall5(type,name,atype,a,btype,b,ctype,c,dtype,d,etype,e) \
 247 type name (atype a,btype b,ctype c,dtype d,etype e) \
 248 { \
 249 long __res; \
 250 __asm__ volatile ("movl %2,%%ebx\n\t" \
 251         "int $0x80" \
 252         : "=a" (__res) \
 253         : "0" (__NR_##name),"b" ((long)(a)),"c" ((long)(b)), \
 254           "d" ((long)(c)),"S" ((long)(d)),"D" ((long)(e))); \
 255 if (__res>=0) \
 256         return (type) __res; \
 257 errno=-__res; \
 258 return -1; \
 259 }
 260 
 261 #endif /* __LIBRARY__ */
 262 
 263 /* XXX - illegal. */
 264 extern int errno;
 265 
 266 /* XXX - several non-POSIX functions here, and POSIX functions that are
 267  * supposed to be declared elsewhere.  Non-promotion of short types in
 268  * prototypes may cause trouble.  Arg names should be prefixed by
 269  * underscores.
 270  */
 271 int access(const char * filename, mode_t mode); /* XXX - short type */
 272 int acct(const char * filename);
 273 int brk(void * end_data_segment);
 274 /* XXX - POSIX says unsigned alarm(unsigned sec) */
 275 int alarm(int sec);
 276 void * sbrk(ptrdiff_t increment);
 277 int chdir(const char * filename);
 278 int chmod(const char * filename, mode_t mode);  /* XXX - short type */
 279 int chown(const char * filename, uid_t owner, gid_t group); /* XXX - shorts */
 280 int chroot(const char * filename);
 281 int close(int fildes);
 282 int creat(const char * filename, mode_t mode);  /* XXX - short type */
 283 int dup(int fildes);
 284 int execve(const char * filename, char ** argv, char ** envp);
 285 int execv(const char * pathname, char ** argv);
 286 int execvp(const char * file, char ** argv);
 287 int execl(const char * pathname, char * arg0, ...);
 288 int execlp(const char * file, char * arg0, ...);
 289 int execle(const char * pathname, char * arg0, ...);
 290 volatile void exit(int status);
 291 volatile void _exit(int status);
 292 int fcntl(int fildes, int cmd, ...);
 293 pid_t fork(void);
 294 pid_t getpid(void);
 295 uid_t getuid(void);
 296 uid_t geteuid(void);
 297 gid_t getgid(void);
 298 gid_t getegid(void);
 299 int ioctl(int fildes, int cmd, ...);
 300 int kill(pid_t pid, int signal);
 301 int link(const char * filename1, const char * filename2);
 302 off_t lseek(int fildes, off_t offset, int origin);
 303 int mknod(const char * filename, mode_t mode, dev_t dev); /* XXX - shorts */
 304 int mount(const char * specialfile, const char * dir, const char * type, int rwflag);
 305 int nice(int val);
 306 int open(const char * filename, int flag, ...);
 307 int pause(void);
 308 int pipe(int * fildes);
 309 /* XXX**2 - POSIX says unsigned count */
 310 int read(int fildes, char * buf, off_t count);
 311 int setpgrp(void);
 312 int setpgid(pid_t pid,pid_t pgid);      /* XXX - short types */
 313 int setuid(uid_t uid);          /* XXX - short type */
 314 int setgid(gid_t gid);          /* XXX - short type */
 315 void (*signal(int sig, void (*fn)(int)))(int);
 316 int stat(const char * filename, struct stat * stat_buf);
 317 int fstat(int fildes, struct stat * stat_buf);
 318 int stime(time_t * tptr);
 319 int sync(void);
 320 time_t time(time_t * tloc);
 321 time_t times(struct tms * tbuf);
 322 int ulimit(int cmd, long limit);
 323 mode_t umask(mode_t mask);
 324 int umount(const char * specialfile);
 325 int uname(struct utsname * name);
 326 int unlink(const char * filename);
 327 int ustat(dev_t dev, struct ustat * ubuf);
 328 int utime(const char * filename, struct utimbuf * times);
 329 pid_t waitpid(pid_t pid,int * wait_stat,int options);
 330 pid_t wait(int * wait_stat);
 331 /* XXX**2 - POSIX says unsigned count */
 332 int write(int fildes, const char * buf, off_t count);
 333 int dup2(int oldfd, int newfd);
 334 int getppid(void);
 335 pid_t getpgrp(void);
 336 pid_t setsid(void);
 337 int sethostname(char *name, int len);
 338 int setrlimit(int resource, struct rlimit *rlp);
 339 int getrlimit(int resource, struct rlimit *rlp);
 340 int getrusage(int who, struct rusage *rusage);
 341 int gettimeofday(struct timeval *tv, struct timezone *tz);
 342 int settimeofday(struct timeval *tv, struct timezone *tz);
 343 int getgroups(int gidsetlen, gid_t *gidset);
 344 int setgroups(int gidsetlen, gid_t *gidset);
 345 int select(int width, fd_set * readfds, fd_set * writefds,
 346         fd_set * exceptfds, struct timeval * timeout);
 347 int swapon(const char * specialfile);
 348 #endif

/* [previous][next][first][last][top][bottom][index][help] */