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