summaryrefslogtreecommitdiffstats
path: root/src/include/unistd.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/unistd.h')
-rw-r--r--src/include/unistd.h254
1 files changed, 254 insertions, 0 deletions
diff --git a/src/include/unistd.h b/src/include/unistd.h
new file mode 100644
index 0000000..956554a
--- /dev/null
+++ b/src/include/unistd.h
@@ -0,0 +1,254 @@
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 /* only root can do a chown (I think..) */
8#define _POSIX_NO_TRUNC /* no pathname truncation (but see in kernel) */
9#define _POSIX_VDISABLE '\0' /* character to disable things like ^C */
10/*#define _POSIX_SAVED_IDS */ /* we'll get to this yet */
11/*#define _POSIX_JOB_CONTROL */ /* we aren't there quite yet. Soon hopefully */
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#include <sys/stat.h>
54#include <sys/times.h>
55#include <sys/utsname.h>
56#include <utime.h>
57
58#ifdef __LIBRARY__
59
60#define __NR_setup 0 /* used only by init, to get system going */
61#define __NR_exit 1
62#define __NR_fork 2
63#define __NR_read 3
64#define __NR_write 4
65#define __NR_open 5
66#define __NR_close 6
67#define __NR_waitpid 7
68#define __NR_creat 8
69#define __NR_link 9
70#define __NR_unlink 10
71#define __NR_execve 11
72#define __NR_chdir 12
73#define __NR_time 13
74#define __NR_mknod 14
75#define __NR_chmod 15
76#define __NR_chown 16
77#define __NR_break 17
78#define __NR_stat 18
79#define __NR_lseek 19
80#define __NR_getpid 20
81#define __NR_mount 21
82#define __NR_umount 22
83#define __NR_setuid 23
84#define __NR_getuid 24
85#define __NR_stime 25
86#define __NR_ptrace 26
87#define __NR_alarm 27
88#define __NR_fstat 28
89#define __NR_pause 29
90#define __NR_utime 30
91#define __NR_stty 31
92#define __NR_gtty 32
93#define __NR_access 33
94#define __NR_nice 34
95#define __NR_ftime 35
96#define __NR_sync 36
97#define __NR_kill 37
98#define __NR_rename 38
99#define __NR_mkdir 39
100#define __NR_rmdir 40
101#define __NR_dup 41
102#define __NR_pipe 42
103#define __NR_times 43
104#define __NR_prof 44
105#define __NR_brk 45
106#define __NR_setgid 46
107#define __NR_getgid 47
108#define __NR_signal 48
109#define __NR_geteuid 49
110#define __NR_getegid 50
111#define __NR_acct 51
112#define __NR_phys 52
113#define __NR_lock 53
114#define __NR_ioctl 54
115#define __NR_fcntl 55
116#define __NR_mpx 56
117#define __NR_setpgid 57
118#define __NR_ulimit 58
119#define __NR_uname 59
120#define __NR_umask 60
121#define __NR_chroot 61
122#define __NR_ustat 62
123#define __NR_dup2 63
124#define __NR_getppid 64
125#define __NR_getpgrp 65
126#define __NR_setsid 66
127#define __NR_sigaction 67
128#define __NR_sgetmask 68
129#define __NR_ssetmask 69
130#define __NR_setreuid 70
131#define __NR_setregid 71
132
133#define _syscall0(type,name) \
134 type name(void) \
135{ \
136long __res; \
137__asm__ volatile ("int $0x80" \
138 : "=a" (__res) \
139 : "0" (__NR_##name)); \
140if (__res >= 0) \
141 return (type) __res; \
142errno = -__res; \
143return -1; \
144}
145
146#define _syscall1(type,name,atype,a) \
147type name(atype a) \
148{ \
149long __res; \
150__asm__ volatile ("int $0x80" \
151 : "=a" (__res) \
152 : "0" (__NR_##name),"b" ((long)(a))); \
153if (__res >= 0) \
154 return (type) __res; \
155errno = -__res; \
156return -1; \
157}
158
159#define _syscall2(type,name,atype,a,btype,b) \
160type name(atype a,btype b) \
161{ \
162long __res; \
163__asm__ volatile ("int $0x80" \
164 : "=a" (__res) \
165 : "0" (__NR_##name),"b" ((long)(a)),"c" ((long)(b))); \
166if (__res >= 0) \
167 return (type) __res; \
168errno = -__res; \
169return -1; \
170}
171
172#define _syscall3(type,name,atype,a,btype,b,ctype,c) \
173type name(atype a,btype b,ctype c) \
174{ \
175long __res; \
176__asm__ volatile ("int $0x80" \
177 : "=a" (__res) \
178 : "0" (__NR_##name),"b" ((long)(a)),"c" ((long)(b)),"d" ((long)(c))); \
179if (__res>=0) \
180 return (type) __res; \
181errno=-__res; \
182return -1; \
183}
184
185#endif /* __LIBRARY__ */
186
187extern int errno;
188
189int access(const char * filename, mode_t mode);
190int acct(const char * filename);
191int alarm(int sec);
192int brk(void * end_data_segment);
193void * sbrk(ptrdiff_t increment);
194int chdir(const char * filename);
195int chmod(const char * filename, mode_t mode);
196int chown(const char * filename, uid_t owner, gid_t group);
197int chroot(const char * filename);
198int close(int fildes);
199int creat(const char * filename, mode_t mode);
200int dup(int fildes);
201int execve(const char * filename, char ** argv, char ** envp);
202int execv(const char * pathname, char ** argv);
203int execvp(const char * file, char ** argv);
204int execl(const char * pathname, char * arg0, ...);
205int execlp(const char * file, char * arg0, ...);
206int execle(const char * pathname, char * arg0, ...);
207//volatile void exit(int status);
208void _exit(int status);
209//volatile void _exit(int status);
210int fcntl(int fildes, int cmd, ...);
211static int fork(void);
212int getpid(void);
213int getuid(void);
214int geteuid(void);
215int getgid(void);
216int getegid(void);
217int ioctl(int fildes, int cmd, ...);
218int kill(pid_t pid, int signal);
219int link(const char * filename1, const char * filename2);
220int lseek(int fildes, off_t offset, int origin);
221int mknod(const char * filename, mode_t mode, dev_t dev);
222int mount(const char * specialfile, const char * dir, int rwflag);
223int nice(int val);
224int open(const char * filename, int flag, ...);
225static int pause(void);
226int pipe(int * fildes);
227int read(int fildes, char * buf, off_t count);
228int setpgrp(void);
229int setpgid(pid_t pid,pid_t pgid);
230int setuid(uid_t uid);
231int setgid(gid_t gid);
232void (*signal(int sig, void (*fn)(int)))(int);
233int stat(const char * filename, struct stat * stat_buf);
234int fstat(int fildes, struct stat * stat_buf);
235int stime(time_t * tptr);
236static int sync(void);
237time_t time(time_t * tloc);
238time_t times(struct tms * tbuf);
239int ulimit(int cmd, long limit);
240mode_t umask(mode_t mask);
241int umount(const char * specialfile);
242int uname(struct utsname * name);
243int unlink(const char * filename);
244int ustat(dev_t dev, struct ustat * ubuf);
245int utime(const char * filename, struct utimbuf * times);
246pid_t waitpid(pid_t pid,int * wait_stat,int options);
247pid_t wait(int * wait_stat);
248int write(int fildes, const char * buf, off_t count);
249int dup2(int oldfd, int newfd);
250int getppid(void);
251pid_t getpgrp(void);
252pid_t setsid(void);
253
254#endif