2 void accounttime(void);
3 Timer* addclock0link(void (*)(void), int);
4 int addphysseg(Physseg*);
5 void addbootfile(char*, uchar*, ulong);
6 void addwatchdog(Watchdog*);
7 Block* adjustblock(Block*, int);
8 void alarmkproc(void*);
12 Image* attachimage(int, Chan*, ulong, ulong);
14 Block* bl2mem(uchar*, Block*, int);
17 void cachedel(Image*, ulong);
18 void cachepage(Page*, Image*);
19 void callwithureg(void(*)(Ureg*));
20 char* chanpath(Chan*);
24 int canrlock(RWlock*);
25 void chandevinit(void);
26 void chandevreset(void);
27 void chandevshutdown(void);
29 void checkalarms(void);
30 void checkb(Block*, char*);
35 void closeegrp(Egrp*);
36 void closefgrp(Fgrp*);
37 void closepgrp(Pgrp*);
38 void closergrp(Rgrp*);
40 void cmderror(Cmdbuf*, char*);
41 int cmount(Chan**, Chan*, int, char*);
44 void (*consdebug)(void);
46 Block* concatblock(Block*);
47 Block* copyblock(Block*, int);
48 void copypage(Page*, Page*);
49 void countpagerefs(ulong*, int);
50 int cread(Chan*, uchar*, int, vlong);
51 void cunmount(Chan*, Chan*);
52 void cupdate(Chan*, uchar*, int, vlong);
53 void cwrite(Chan*, uchar*, int, vlong);
56 int decrypt(void*, void*, int);
58 Proc* dequeueproc(Schedq*, Proc*);
59 Chan* devattach(int, char*);
60 Block* devbread(Chan*, long, ulong);
61 long devbwrite(Chan*, Block*, ulong);
62 Chan* devclone(Chan*);
63 int devconfig(int, char *, DevConf *);
64 Chan* devcreate(Chan*, char*, int, ulong);
65 void devdir(Chan*, Qid, char*, vlong, char*, long, Dir*);
66 long devdirread(Chan*, char*, long, Dirtab*, int, Devgen*);
70 Chan* devopen(Chan*, int, Dirtab*, int, Devgen*);
71 void devpermcheck(char*, ulong, int);
73 void devremove(Chan*);
75 void devshutdown(void);
76 int devstat(Chan*, uchar*, int, Dirtab*, int, Devgen*);
77 Walkqid* devwalk(Chan*, Chan*, char**, int, Dirtab*, int, Devgen*);
78 int devwstat(Chan*, uchar*, int);
81 void dumpaproc(Proc*);
88 char* edfadmit(Proc*);
90 void edfrecord(Proc*);
91 void edfrun(Proc*, int);
95 int encrypt(void*, void*, int);
96 void envcpy(Egrp*, Egrp*);
97 int eqchan(Chan*, Chan*, int);
98 int eqchantdqid(Chan*, int, int, Qid, int);
102 long execregs(ulong, ulong, ulong);
103 void exhausted(char*);
105 uvlong fastticks(uvlong*);
106 uvlong fastticks2ns(uvlong);
107 uvlong fastticks2us(uvlong);
108 int fault(ulong, int);
109 void fdclose(int, int);
110 Chan* fdtochan(int, int, int, int);
111 int findmount(Chan**, Mhead**, int, int, Qid);
112 int fixfault(Segment*, ulong, int, int);
114 void forceclosefgrp(void);
115 void forkchild(Proc*, Ureg*);
119 void freeblist(Block*);
120 int freebroken(void);
121 void freepte(Segment*, Pte*);
122 void getcolor(ulong, ulong*, ulong*, ulong*);
123 ulong getmalloctag(void*);
124 ulong getrealloctag(void*);
125 void gotolabel(Label*);
126 char* getconfenv(void);
128 long hostdomainwrite(char*, int);
129 long hostownerwrite(char*, int);
132 void iallocsummary(void);
133 long ibrk(ulong, int);
138 int iprint(char*, ...);
142 Segment* isoverlap(Proc*, ulong, int);
144 int isphysseg(char*);
145 void ixsummary(void);
146 void kickpager(void);
148 void kproc(char*, void(*)(void*), void*);
149 void kprocchild(Proc*, void (*)(void*), void*);
150 void (*kproftimer)(ulong);
151 void ksetenv(char*, char*, int);
152 void kstrcpy(char*, char*, int);
153 void kstrdup(char**, char*);
157 char* logctl(Log*, int, char**, Logflag*);
158 void logn(Log*, int, void*, int);
159 long logread(Log*, void*, ulong, long);
160 void log(Log*, int, char*, ...);
161 Cmdtab* lookupcmd(Cmdbuf*, Cmdtab*, int);
162 Page* lookpage(Image*, ulong);
163 #define MS2NS(n) (((vlong)(n))*1000000LL)
165 void* mallocz(ulong, int);
167 void* mallocalign(ulong, ulong, long, ulong);
168 void mallocsummary(void);
169 Block* mem2bl(uchar*, int);
170 int mcountseg(Segment*);
171 void mfreeseg(Segment*, ulong, int);
172 void microdelay(int);
173 uvlong mk64fract(uvlong, uvlong);
174 void mkqid(Qid*, vlong, ulong, int);
175 void mmurelease(Proc*);
176 void mmuswitch(Proc*);
177 Chan* mntauth(Chan*, char*);
178 long mntversion(Chan*, char*, int, int);
179 void mouseresize(void);
180 void mountfree(Mount*);
184 uvlong ms2fastticks(ulong);
185 void mul64fract(uvlong*, uvlong, uvlong);
187 Chan* namec(char*, int, int, ulong);
188 void nameerror(char*, char*);
191 Mhead* newmhead(Chan*);
192 Mount* newmount(Mhead*, Chan*, int, char*);
193 Page* newpage(int, Segment **, ulong);
194 Path* newpath(char*);
198 void nexterror(void);
201 uvlong ns2fastticks(uvlong);
202 int okaddr(ulong, ulong, int);
204 Block* packblock(Block*);
205 Block* padblock(Block*, int);
206 void pagechainhead(Page*);
208 ulong pagenumber(Page*);
209 void pagersummary(void);
210 void panic(char*, ...);
211 Cmdbuf* parsecmd(char *a, int n);
212 void pathclose(Path*);
213 ulong perfticks(void);
214 void pexit(char*, int);
215 void pgrpcpy(Pgrp*, Pgrp*);
216 void pgrpnote(ulong, char*, long, int);
218 void pio(Segment *, ulong, ulong, Page **);
219 #define poperror() up->nerrlab--
220 void portcountpagerefs(ulong*, int);
221 int postnote(Proc*, int, char*, int);
222 int pprint(char*, ...);
225 void printinit(void);
226 ulong procalarm(ulong);
229 int procfdprint(Chan*, int, int, char*, int);
230 int procindex(ulong);
231 void procinit0(void);
232 void procflushseg(Segment*);
233 void procpriority(Proc*, int, int);
235 extern void (*proctrace)(Proc*, int, vlong);
236 void procwired(Proc*, int);
239 int pullblock(Block**, int);
240 Block* pullupblock(Block*, int);
241 Block* pullupqueue(Queue*, int);
242 void putimage(Image*);
243 void putmhead(Mhead*);
244 void putmmu(ulong, ulong, Page*);
246 void putseg(Segment*);
247 void putstrn(char*, int);
249 ulong pwait(Waitmsg*);
250 void qaddlist(Queue*, Block*);
251 Block* qbread(Queue*, int);
252 long qbwrite(Queue*, Block*);
253 Queue* qbypass(void (*)(void*, Block*), void*);
254 int qcanread(Queue*);
256 int qconsume(Queue*, void*, int);
257 Block* qcopy(Queue*, int, ulong);
258 int qdiscard(Queue*, int);
263 void qhangup(Queue*, char*);
264 int qisclosed(Queue*);
265 int qiwrite(Queue*, void*, int);
268 Queue* qopen(int, int, void (*)(void*), void*);
269 int qpass(Queue*, Block*);
270 int qpassnolim(Queue*, Block*);
271 int qproduce(Queue*, void*, int);
272 void qputback(Queue*, Block*);
273 long qread(Queue*, void*, int);
274 Block* qremove(Queue*);
275 void qreopen(Queue*);
276 void qsetlimit(Queue*, int);
277 void qunlock(QLock*);
279 int qwrite(Queue*, void*, int);
280 void qnoblock(Queue*, int);
282 void randominit(void);
283 ulong randomread(void*, ulong);
285 int readnum(ulong, char*, ulong, ulong, int);
286 int readstr(ulong, char*, ulong, char*);
288 void* realloc(void *v, ulong size);
289 void rebootcmd(int, char**);
290 void reboot(void*, void*, ulong);
291 void relocateseg(Segment*, ulong);
292 void renameuser(char*, char*);
294 void resrcwait(char*);
298 void runlock(RWlock*);
300 void savefpregs(FPsave*);
302 void scheddump(void);
303 void schedinit(void);
304 void (*screenputs)(char*, int);
306 ulong segattach(Proc*, ulong, char *, ulong, ulong);
307 void segclock(ulong);
308 void segpage(Segment*, Page*);
309 int setcolor(ulong, ulong, ulong, ulong);
310 void setkernur(Ureg*, Proc*);
311 int setlabel(Label*);
312 void setmalloctag(void*, ulong);
313 void setrealloctag(void*, ulong);
314 void setregisters(Ureg*, char*, char*, int);
315 void setswapchan(Chan*);
316 char* skipslash(char*);
317 void sleep(Rendez*, int(*)(void*), void*);
318 void* smalloc(ulong);
323 char* srvname(Chan*);
324 void srvrenameuser(char*, char*);
325 void shrrenameuser(char*, char*);
326 int swapcount(ulong);
329 void syscallfmt(ulong syscallno, ulong pc, va_list list);
330 void sysretfmt(ulong syscallno, va_list list, long ret, uvlong start, uvlong stop);
331 void timeradd(Timer*);
332 void timerdel(Timer*);
333 void timersinit(void);
334 void timerintr(Ureg*, Tval);
337 #define TK2MS(x) ((x)*(1000/HZ))
338 uvlong tod2fastticks(vlong);
339 vlong todget(vlong*);
340 void todsetfreq(vlong);
342 void todset(vlong, vlong, int);
343 Block* trimblock(Block*, int, int);
344 void tsleep(Rendez*, int (*)(void*), void*, ulong);
345 int uartctl(Uart*, char*);
347 void uartkick(void*);
348 void uartmouse(char*, int (*)(Queue*, int), int);
349 void uartsetmouseputc(char*, int (*)(Queue*, int));
351 void uartputs(char*, int);
352 void uartrecv(Uart*, char);
353 int uartstageoutput(Uart*);
355 void uncachepage(Page*);
356 long unionread(Chan*, void*, long);
358 uvlong us2fastticks(uvlong);
361 long userwrite(char*, int);
362 void validaddr(ulong, ulong, int);
363 void validname(char*, int);
364 char* validnamedup(char*, int);
365 void validstat(uchar*, int);
366 void* vmemchr(void*, int, int);
367 Proc* wakeup(Rendez*);
368 int walk(Chan**, char**, int, int, int*);
370 void wunlock(RWlock*);
372 void* xallocz(ulong, int);
374 void xhole(ulong, ulong);
376 int xmerge(void*, void*);
377 void* xspanalloc(ulong, int, ulong);
380 Segment* data2txt(Segment*);
381 Segment* dupseg(Segment**, int, int);
382 Segment* newseg(int, ulong, ulong);
383 Segment* seg(Proc*, ulong, int);
384 void hnputv(void*, uvlong);
385 void hnputl(void*, uint);
386 void hnputs(void*, ushort);
387 uvlong nhgetv(void*);
389 ushort nhgets(void*);
395 #pragma varargck argpos iprint 1
396 #pragma varargck argpos panic 1
397 #pragma varargck argpos pprint 1