add linux_emul base, reorganize docs
[openbsd_emul.git] / linux_emul_base / fns.h
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