cae36a52 |
1 | /* error */ |
2 | int mkerror(void); |
3 | #pragma varargck type "E" int |
4 | int Efmt(Fmt *e); |
5 | int sys_nosys(void); |
6 | |
7 | /* linuxcall */ |
8 | int linuxcall(void); |
9 | |
10 | /* trap */ |
11 | void inittrap(void); |
12 | void retuser(void); |
13 | |
14 | /* bits */ |
15 | void incref(Ref *); |
16 | int decref(Ref *); |
17 | void jumpstart(ulong addr, ulong *stack); |
18 | void jumpureg(void *ureg); |
19 | void linux_sigreturn(void); |
20 | void linux_rtsigreturn(void); |
21 | |
22 | /* trace */ |
23 | void inittrace(void); |
24 | void exittrace(Uproc *proc); |
25 | void clonetrace(Uproc *new, int copy); |
26 | void tprint(char *fmt, ...); |
27 | #pragma varargck argpos tprint 1 |
28 | #define trace if(debug)tprint |
29 | |
30 | /* proc */ |
31 | void initproc(void); |
32 | void exitproc(Uproc *proc, int code, int group); |
33 | void stopproc(Uproc *proc, int code, int group); |
34 | void contproc(Uproc *proc, int code, int group); |
35 | int procfork(void (*fproc)(void *aux), void *aux, int flags); |
36 | Uproc* getproc(int tid); |
37 | Uproc* getprocn(int n); |
38 | int threadcount(int pid); |
39 | void zapthreads(void); |
40 | void setprocname(char *s); |
41 | int notifyme(int on); |
42 | void wakeme(int on); |
43 | int sleepproc(QLock *l, int flags); |
44 | Uwait* addwaitq(Uwaitq *q); |
45 | void delwaitq(Uwait *w); |
46 | int sleepq(Uwaitq *q, QLock *l, int flags); |
47 | int wakeq(Uwaitq *q, int nwake); |
48 | int requeue(Uwaitq *q1, Uwaitq *q2, int nrequeue); |
49 | int killproc(Uproc *p, Usiginfo *info, int group); |
50 | void setalarm(vlong t); |
51 | |
52 | int sys_waitpid(int pid, int *pexit, int opt); |
53 | int sys_wait4(int pid, int *pexit, int opt, void *prusage); |
54 | int sys_exit(int code); |
55 | int sys_exit_group(int code); |
56 | int sys_linux_clone(int flags, void *newstack, int *parenttidptr, int *tlsdescr, void *childtidptr); |
57 | int sys_fork(void); |
58 | int sys_vfork(void); |
59 | int sys_getpid(void); |
60 | int sys_getppid(void); |
61 | int sys_gettid(void); |
62 | int sys_setpgid(int pid, int pgid); |
63 | int sys_getpgid(int pid); |
64 | int sys_setpgrp(int pid); |
65 | int sys_getpgrp(void); |
66 | int sys_getuid(void); |
67 | int sys_getgid(void); |
68 | int sys_setgid(int gid); |
69 | int sys_setuid(int uid); |
70 | int sys_setresuid(int ruid, int euid, int suid); |
71 | int sys_getresuid(int *ruid, int *euid, int *suid); |
72 | int sys_setresgid(int rgid, int egid, int sgid); |
73 | int sys_getresgid(int *rgid, int *egid, int *sgid); |
74 | int sys_setreuid(int ruid, int euid); |
75 | int sys_setregid(int rgid, int egid); |
76 | int sys_uname(void *); |
77 | int sys_personality(ulong p); |
78 | int sys_setsid(void); |
79 | int sys_getsid(int pid); |
80 | int sys_getgroups(int size, int *groups); |
81 | int sys_setgroups(int size, int *groups); |
82 | |
83 | int sys_kill(int pid, int sig); |
84 | int sys_tkill(int tid, int sig); |
85 | int sys_tgkill(int pid, int tid, int sig); |
86 | int sys_rt_sigqueueinfo(int pid, int sig, void *info); |
87 | |
88 | int sys_set_tid_address(int *tidptr); |
89 | |
90 | int sys_sched_setscheduler(int pid, int policy, void *param); |
91 | int sys_sched_getscheduler(int pid); |
92 | int sys_sched_setparam(int pid, void *param); |
93 | int sys_sched_getparam(int pid, void *param); |
94 | int sys_sched_yield(void); |
95 | |
96 | int sys_getrlimit(long resource, void *rlim); |
97 | int sys_setrlimit(long resource, void *rlim); |
98 | |
99 | /* signal */ |
100 | void initsignal(void); |
101 | void exitsignal(void); |
102 | void clonesignal(Uproc *new, int copyhand, int newproc); |
103 | void settty(Ufile *tty); |
104 | Ufile* gettty(void); |
105 | #pragma varargck type "S" int |
106 | int Sfmt(Fmt *f); |
107 | |
108 | int wantssignal(Uproc *proc, int sig); |
109 | int ignoressignal(Uproc *proc, int sig); |
110 | int signalspending(Uproc *proc); |
111 | |
112 | void handlesignals(void); |
113 | int sendsignal(Uproc *proc, Usiginfo *info, int group); |
114 | |
115 | void siginfo2linux(Usiginfo *, void *); |
116 | void linux2siginfo(void *, Usiginfo *); |
117 | |
118 | int sys_sigaltstack(void *stk, void *ostk); |
119 | int sys_rt_sigaction(int sig, void *pact, void *poact, int setsize); |
120 | int sys_rt_sigpending(uchar *set, int setsize); |
121 | int sys_rt_sigprocmask(int how, uchar *act, uchar *oact, int setsize); |
122 | int sys_rt_sigsuspend(uchar *set, int setsize); |
123 | int sys_sigreturn(void); |
124 | int sys_rt_sigreturn(void); |
125 | |
126 | int sys_setitimer(int which, void *value, void *ovalue); |
127 | int sys_getitimer(int which, void *value); |
128 | int sys_alarm(long seconds); |
129 | |
130 | /* file */ |
131 | void initfile(void); |
132 | void exitfile(Uproc *proc); |
133 | void clonefile(Uproc *new, int copy); |
134 | void closexfds(void); |
135 | Ufile *procfdgetfile(Uproc *proc, int fd); |
136 | Ufile* fdgetfile(int fd); |
137 | Ufile* getfile(Ufile *file); |
138 | void putfile(Ufile *file); |
139 | int newfd(Ufile *file, int flags); |
140 | int chdirfile(Ufile *file); |
141 | int readfile(Ufile *file, void *buf, int len); |
142 | int writefile(Ufile *file, void *buf, int len); |
143 | int preadfile(Ufile *file, void *buf, int len, vlong off); |
144 | int pwritefile(Ufile *file, void *buf, int len, vlong off); |
145 | int sys_dup(int fd); |
146 | int sys_dup2(int old, int new); |
147 | int sys_fcntl(int fd, int cmd, int arg); |
148 | int sys_close(int fd); |
149 | int sys_ioctl(int fd, int cmd, void *arg); |
150 | int sys_read(int fd, void *buf, int len); |
151 | int sys_readv(int fd, void *vec, int n); |
152 | int sys_pread64(int fd, void *buf, int len, ulong off); |
153 | int sys_write(int fd, void *buf, int len); |
154 | int sys_pwrite64(int fd, void *buf, int len, ulong off); |
155 | int sys_writev(int fd, void *vec, int n); |
156 | ulong sys_lseek(int fd, ulong off, int whence); |
157 | int sys_llseek(int fd, ulong hioff, ulong looff, vlong *res, int whence); |
158 | int sys_umask(int umask); |
159 | int sys_flock(int fd, int cmd); |
160 | int sys_fsync(int fd); |
161 | int sys_fchdir(int fd); |
162 | int sys_getcwd(char *buf, int len); |
163 | int sys_fchmod(int fd, int mode); |
164 | int sys_fchown(int fd, int uid, int gid); |
165 | int sys_ftruncate(int fd, ulong size); |
166 | |
167 | /* poll */ |
168 | void pollwait(Ufile *f, Uwaitq *q, void *t); |
169 | int sys_poll(void *p, int nfd, long timeout); |
170 | int sys_select(int nfd, ulong *rfd, ulong *wfd, ulong *efd, void *ptv); |
171 | |
172 | /* mem */ |
173 | void* kmalloc(int size); |
174 | void* kmallocz(int size, int zero); |
175 | void* krealloc(void *ptr, int size); |
176 | char* kstrdup(char *s); |
177 | char* ksmprint(char *fmt, ...); |
178 | #pragma varargck argpos ksmprint 1 |
179 | |
180 | ulong pagealign(ulong addr); |
181 | |
182 | void initmem(void); |
183 | void exitmem(void); |
184 | void clonemem(Uproc *new, int copy); |
185 | ulong procmemstat(Uproc *proc, ulong *pdat, ulong *plib, ulong *pshr, ulong *pstk, ulong *pexe); |
186 | void* mapstack(int size); |
187 | void mapdata(ulong base); |
188 | void unmapuserspace(void); |
189 | int okaddr(void *ptr, int len, int write); |
190 | |
191 | ulong sys_linux_mmap(void *a); |
192 | ulong sys_mmap(ulong addr, ulong len, int prot, int flags, int fd, ulong pgoff); |
193 | int sys_munmap(ulong addr, ulong len); |
194 | ulong sys_brk(ulong bk); |
195 | int sys_mprotect(ulong addr, ulong len, int prot); |
196 | int sys_msync(ulong addr, ulong len, int flags); |
197 | ulong sys_mremap(ulong addr, ulong oldlen, ulong newlen, int flags, ulong newaddr); |
198 | |
199 | int sys_futex(ulong *addr, int op, int val, void *ptime, ulong *addr2, int val3); |
200 | |
201 | /* exec */ |
202 | int sys_execve(char *name, char *argv[], char *envp[]); |
203 | |
204 | /* time */ |
205 | void inittime(void); |
206 | int sys_time(long *p); |
207 | int sys_gettimeofday(void *tvp, void *tzp); |
208 | int sys_clock_gettime(int clock, void *t); |
209 | int sys_nanosleep(void *rqp, void *rmp); |
210 | int proctimes(Uproc *p, ulong *t); |
211 | int sys_times(void *times); |
212 | |
213 | /* tls */ |
214 | void inittls(void); |
215 | void clonetls(Uproc *new); |
216 | |
217 | int sys_set_thread_area(void *pinfo); |
218 | int sys_get_thread_area(void *pinfo); |
219 | int sys_modify_ldt(int func, void *data, int count); |
220 | |
221 | /* bufproc */ |
222 | void *newbufproc(int fd); |
223 | void freebufproc(void *bp); |
224 | int readbufproc(void *bp, void *data, int len, int peek, int noblock); |
225 | int pollbufproc(void *bp, Ufile *file, void *tab); |
226 | int nreadablebufproc(void *bp); |
227 | |
228 | /* main */ |
229 | void panic(char *msg, ...); |
230 | int onstack(long *stk, int (*func)(void *arg), void *arg); |
231 | void profme(void); |
232 | |
233 | /* stat */ |
234 | int ufstat(int fd, Ustat *ps); |
235 | Udirent *newdirent(char *path, char *name, int mode); |
236 | |
237 | int sys_getxattr(char *path, char *name, void *value, int size); |
238 | int sys_lgetxattr(char *path, char *name, void *value, int size); |
239 | int sys_fgetxattr(int fd, char *name, void *value, int size); |
240 | int sys_setxattr(char *path, char *name, void *value, int flags, int size); |
241 | int sys_lsetxattr(char *path, char *name, void *value, int flags, int size); |
242 | int sys_fsetxattr(int fd, char *name, void *value, int size, int flags); |
243 | |
244 | int sys_linux_fstat(int fd, void *st); |
245 | int sys_linux_fstat64(int fd, void *st); |
246 | int sys_linux_getdents(int fd, void *buf, int nbuf); |
247 | int sys_linux_getdents64(int fd, void *buf, int nbuf); |
248 | int sys_linux_lstat(char *path, void *st); |
249 | int sys_linux_lstat64(char *path, void *st); |
250 | int sys_linux_stat(char *path, void *st); |
251 | int sys_linux_stat64(char *path, void *st); |
252 | |
253 | int sys_statfs(char *name, void *pstatfs); |
254 | |
255 | /* fs */ |
256 | void fsmount(Udev *dev, char *path); |
257 | |
258 | char* allocpath(char *base, char *prefix, char *name); |
259 | char* fullpath(char *base, char *name); |
260 | char* shortpath(char *base, char *path); |
261 | char* fsfullpath(char *path); |
262 | char* fsrootpath(char *path); |
263 | char* basepath(char *p, char **ps); |
264 | ulong hashpath(char *s); |
265 | |
266 | int fsaccess(char *path, int mode); |
267 | int fschmod(char *path, int mode); |
268 | int fschown(char *path, int uid, int gid, int link); |
269 | int fslink(char *old, char *new, int sym); |
270 | int fsmkdir(char *path, int mode); |
271 | int fsopen(char *path, int mode, int perm, Ufile **pf); |
272 | int fsreadlink(char *path, char *buf, int len); |
273 | int fsrename(char *old, char *new); |
274 | int fsstat(char *path, int link, Ustat *ps); |
275 | int fstruncate(char *path, vlong size); |
276 | int fsunlink(char *path, int rmdir); |
277 | int fsutime(char *path, int atime, int mtime); |
278 | |
279 | int sys_access(char *name, int mode); |
280 | int sys_chdir(char *name); |
281 | int sys_chroot(char *name); |
282 | int sys_chmod(char *name, int mode); |
283 | int sys_chown(char *name, int uid, int gid); |
284 | int sys_creat(char *name, int perm); |
285 | int sys_lchown(char *name, int uid, int gid); |
286 | int sys_link(char *old, char *new); |
287 | int sys_open(char *name, int mode, int perm); |
288 | int sys_readlink(char *name, char *buf, int len); |
289 | int sys_rename(char *from, char *to); |
290 | int sys_rmdir(char *name); |
291 | int sys_symlink(char *old, char *new); |
292 | int sys_truncate(char *name, ulong size); |
293 | int sys_unlink(char *name); |
294 | int sys_utime(char *name, void *times); |
295 | int sys_utimes(char *name, void *tvp); |
296 | int sys_mkdir(char *name, int mode); |
297 | |
298 | /* drivers */ |
299 | void rootdevinit(void); |
300 | void sockdevinit(void); |
301 | int sys_linux_socketcall(int call, int *arg); |
302 | void pipedevinit(void); |
303 | int sys_pipe(int *fds); |
304 | void fddevinit(void); |
305 | void ptsdevinit(void); |
306 | void dspdevinit(void); |
307 | void miscdevinit(void); |
308 | void ptydevinit(void); |
309 | void consdevinit(void); |
310 | void procdevinit(void); |
311 | |