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 void 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);
101 long execregs(ulong, ulong, ulong);
102 void exhausted(char*);
104 uvlong fastticks(uvlong*);
105 uvlong fastticks2ns(uvlong);
106 uvlong fastticks2us(uvlong);
107 int fault(ulong, int);
108 void fdclose(int, int);
109 Chan* fdtochan(int, int, int, int);
110 int findmount(Chan**, Mhead**, int, int, Qid);
111 int fixfault(Segment*, ulong, int, int);
113 void forceclosefgrp(void);
114 void forkchild(Proc*, Ureg*);
118 void freeblist(Block*);
119 int freebroken(void);
120 void freepte(Segment*, Pte*);
121 void getcolor(ulong, ulong*, ulong*, ulong*);
122 ulong getmalloctag(void*);
123 ulong getrealloctag(void*);
124 void gotolabel(Label*);
125 char* getconfenv(void);
127 long hostdomainwrite(char*, int);
128 long hostownerwrite(char*, int);
131 void iallocsummary(void);
132 long ibrk(ulong, int);
137 int iprint(char*, ...);
141 Segment* isoverlap(Proc*, ulong, int);
143 int isphysseg(char*);
144 void ixsummary(void);
145 void kickpager(void);
147 void kproc(char*, void(*)(void*), void*);
148 void kprocchild(Proc*, void (*)(void*), void*);
149 void (*kproftimer)(ulong);
150 void ksetenv(char*, char*, int);
151 void kstrcpy(char*, char*, int);
152 void kstrdup(char**, char*);
156 char* logctl(Log*, int, char**, Logflag*);
157 void logn(Log*, int, void*, int);
158 long logread(Log*, void*, ulong, long);
159 void log(Log*, int, char*, ...);
160 Cmdtab* lookupcmd(Cmdbuf*, Cmdtab*, int);
161 Page* lookpage(Image*, ulong);
162 #define MS2NS(n) (((vlong)(n))*1000000LL)
164 void* mallocz(ulong, int);
166 void* mallocalign(ulong, ulong, long, ulong);
167 void mallocsummary(void);
168 Block* mem2bl(uchar*, int);
169 void mfreeseg(Segment*, ulong, int);
170 void microdelay(int);
171 uvlong mk64fract(uvlong, uvlong);
172 void mkqid(Qid*, vlong, ulong, int);
173 void mmurelease(Proc*);
174 void mmuswitch(Proc*);
175 Chan* mntauth(Chan*, char*);
176 long mntversion(Chan*, char*, int, int);
177 void mouseresize(void);
178 void mountfree(Mount*);
182 uvlong ms2fastticks(ulong);
183 void mul64fract(uvlong*, uvlong, uvlong);
185 Chan* namec(char*, int, int, ulong);
186 void nameerror(char*, char*);
189 Mhead* newmhead(Chan*);
190 Mount* newmount(Mhead*, Chan*, int, char*);
191 Page* newpage(int, Segment **, ulong);
192 Path* newpath(char*);
196 void nexterror(void);
199 uvlong ns2fastticks(uvlong);
200 int okaddr(ulong, ulong, int);
202 Block* packblock(Block*);
203 Block* padblock(Block*, int);
204 void pagechainhead(Page*);
206 ulong pagenumber(Page*);
207 void pagersummary(void);
208 void panic(char*, ...);
209 Cmdbuf* parsecmd(char *a, int n);
210 void pathclose(Path*);
211 ulong perfticks(void);
212 void pexit(char*, int);
213 void pgrpcpy(Pgrp*, Pgrp*);
214 void pgrpnote(ulong, char*, long, int);
215 void pio(Segment *, ulong, ulong, Page **);
216 #define poperror() up->nerrlab--
217 void portcountpagerefs(ulong*, int);
218 int postnote(Proc*, int, char*, int);
219 int pprint(char*, ...);
222 void printinit(void);
223 ulong procalarm(ulong);
226 int procfdprint(Chan*, int, int, char*, int);
227 int procindex(ulong);
228 void procinit0(void);
229 void procflushseg(Segment*);
230 void procpriority(Proc*, int, int);
232 extern void (*proctrace)(Proc*, int, vlong);
233 void procwired(Proc*, int);
236 int pullblock(Block**, int);
237 Block* pullupblock(Block*, int);
238 Block* pullupqueue(Queue*, int);
239 void putimage(Image*);
240 void putmhead(Mhead*);
241 void putmmu(ulong, ulong, Page*);
243 void putseg(Segment*);
244 void putstrn(char*, int);
246 ulong pwait(Waitmsg*);
247 void qaddlist(Queue*, Block*);
248 Block* qbread(Queue*, int);
249 long qbwrite(Queue*, Block*);
250 Queue* qbypass(void (*)(void*, Block*), void*);
251 int qcanread(Queue*);
253 int qconsume(Queue*, void*, int);
254 Block* qcopy(Queue*, int, ulong);
255 int qdiscard(Queue*, int);
260 void qhangup(Queue*, char*);
261 int qisclosed(Queue*);
262 int qiwrite(Queue*, void*, int);
265 Queue* qopen(int, int, void (*)(void*), void*);
266 int qpass(Queue*, Block*);
267 int qpassnolim(Queue*, Block*);
268 int qproduce(Queue*, void*, int);
269 void qputback(Queue*, Block*);
270 long qread(Queue*, void*, int);
271 Block* qremove(Queue*);
272 void qreopen(Queue*);
273 void qsetlimit(Queue*, int);
274 void qunlock(QLock*);
276 int qwrite(Queue*, void*, int);
277 void qnoblock(Queue*, int);
279 void randominit(void);
280 ulong randomread(void*, ulong);
282 int readnum(ulong, char*, ulong, ulong, int);
283 int readstr(ulong, char*, ulong, char*);
285 void* realloc(void *v, ulong size);
286 void rebootcmd(int, char**);
287 void reboot(void*, void*, ulong);
288 void relocateseg(Segment*, ulong);
289 void renameuser(char*, char*);
291 void resrcwait(char*);
295 void runlock(RWlock*);
297 void savefpregs(FPsave*);
299 void scheddump(void);
300 void schedinit(void);
301 void (*screenputs)(char*, int);
303 ulong segattach(Proc*, ulong, char *, ulong, ulong);
304 void segclock(ulong);
305 void segpage(Segment*, Page*);
306 int setcolor(ulong, ulong, ulong, ulong);
307 void setkernur(Ureg*, Proc*);
308 int setlabel(Label*);
309 void setmalloctag(void*, ulong);
310 void setrealloctag(void*, ulong);
311 void setregisters(Ureg*, char*, char*, int);
312 void setswapchan(Chan*);
313 char* skipslash(char*);
314 void sleep(Rendez*, int(*)(void*), void*);
315 void* smalloc(ulong);
320 char* srvname(Chan*);
321 void srvrenameuser(char*, char*);
322 int swapcount(ulong);
325 void timeradd(Timer*);
326 void timerdel(Timer*);
327 void timersinit(void);
328 void timerintr(Ureg*, Tval);
331 #define TK2MS(x) ((x)*(1000/HZ))
332 uvlong tod2fastticks(vlong);
333 vlong todget(vlong*);
334 void todsetfreq(vlong);
336 void todset(vlong, vlong, int);
337 Block* trimblock(Block*, int, int);
338 void tsleep(Rendez*, int (*)(void*), void*, ulong);
339 int uartctl(Uart*, char*);
341 void uartkick(void*);
342 void uartmouse(Uart*, int (*)(Queue*, int), int);
343 void uartsetmouseputc(Uart*, int (*)(Queue*, int));
345 void uartputs(char*, int);
346 void uartrecv(Uart*, char);
347 int uartstageoutput(Uart*);
349 void uncachepage(Page*);
350 long unionread(Chan*, void*, long);
352 uvlong us2fastticks(uvlong);
355 long userwrite(char*, int);
356 void validaddr(ulong, ulong, int);
357 void validname(char*, int);
358 char* validnamedup(char*, int);
359 void validstat(uchar*, int);
360 void* vmemchr(void*, int, int);
361 Proc* wakeup(Rendez*);
362 int walk(Chan**, char**, int, int, int*);
364 void wunlock(RWlock*);
366 void* xallocz(ulong, int);
368 void xhole(ulong, ulong);
370 int xmerge(void*, void*);
371 void* xspanalloc(ulong, int, ulong);
374 Segment* data2txt(Segment*);
375 Segment* dupseg(Segment**, int, int);
376 Segment* newseg(int, ulong, ulong);
377 Segment* seg(Proc*, ulong, int);
378 void hnputv(void*, uvlong);
379 void hnputl(void*, uint);
380 void hnputs(void*, ushort);
381 uvlong nhgetv(void*);
383 ushort nhgets(void*);
389 #pragma varargck argpos iprint 1
390 #pragma varargck argpos panic 1
391 #pragma varargck argpos pprint 1