1 #ifndef _UNISTD_H
2 #define _UNISTD_H
3
4
5 #define _POSIX_VERSION 198808L
6
7 #define _POSIX_CHOWN_RESTRICTED 1
8 #define _POSIX_NO_TRUNC 1
9 #define _POSIX_VDISABLE '\0'
10 #define _POSIX_JOB_CONTROL 1
11 #define _POSIX_SAVED_IDS 1
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
22 #define F_OK 0
23 #define X_OK 1
24 #define W_OK 2
25 #define R_OK 4
26
27
28 #define SEEK_SET 0
29 #define SEEK_CUR 1
30 #define SEEK_END 2
31
32
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
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
55
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
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
162
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
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
262
263
264 extern int errno;
265
266
267
268
269
270
271 int access(const char * filename, mode_t mode);
272 int acct(const char * filename);
273 int brk(void * end_data_segment);
274
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);
279 int chown(const char * filename, uid_t owner, gid_t group);
280 int chroot(const char * filename);
281 int close(int fildes);
282 int creat(const char * filename, mode_t mode);
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);
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
310 int read(int fildes, char * buf, off_t count);
311 int setpgrp(void);
312 int setpgid(pid_t pid,pid_t pgid);
313 int setuid(uid_t uid);
314 int setgid(gid_t gid);
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
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