1 void _assert(char*); 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*); 9 Block* allocb(int); 10 int anyhigher(void); 11 int anyready(void); 12 Image* attachimage(int, Chan*, ulong, ulong); 13 Page* auxpage(void); 14 Block* bl2mem(uchar*, Block*, int); 15 int blocklen(Block*); 16 void bootlinks(void); 17 void cachedel(Image*, ulong); 18 void cachepage(Page*, Image*); 19 void callwithureg(void(*)(Ureg*)); 20 char* chanpath(Chan*); 21 int canlock(Lock*); 22 int canpage(Proc*); 23 int canqlock(QLock*); 24 int canrlock(RWlock*); 25 void chandevinit(void); 26 void chandevreset(void); 27 void chandevshutdown(void); 28 void chanfree(Chan*); 29 void checkalarms(void); 30 void checkb(Block*, char*); 31 void cinit(void); 32 Chan* cclone(Chan*); 33 void cclose(Chan*); 34 void ccloseq(Chan*); 35 void closeegrp(Egrp*); 36 void closefgrp(Fgrp*); 37 void closepgrp(Pgrp*); 38 void closergrp(Rgrp*); 39 long clrfpintr(void); 40 void cmderror(Cmdbuf*, char*); 41 int cmount(Chan**, Chan*, int, char*); 42 void confinit(void); 43 int consactive(void); 44 void (*consdebug)(void); 45 void copen(Chan*); 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); 54 ulong dbgpc(Proc*); 55 long decref(Ref*); 56 int decrypt(void*, void*, int); 57 void delay(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*); 67 Devgen devgen; 68 void devinit(void); 69 int devno(int, int); 70 Chan* devopen(Chan*, int, Dirtab*, int, Devgen*); 71 void devpermcheck(char*, ulong, int); 72 void devpower(int); 73 void devremove(Chan*); 74 void devreset(void); 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); 79 void drawactive(int); 80 void drawcmap(void); 81 void dumpaproc(Proc*); 82 void dumpregs(Ureg*); 83 void dumpstack(void); 84 Fgrp* dupfgrp(Fgrp*); 85 int duppage(Page*); 86 void dupswap(Page*); 87 void edfinit(Proc*); 88 char* edfadmit(Proc*); 89 int edfready(Proc*); 90 void edfrecord(Proc*); 91 void edfrun(Proc*, int); 92 void edfstop(Proc*); 93 void edfyield(void); 94 int emptystr(char*); 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); 99 int eqqid(Qid, Qid); 100 void error(char*); 101 long execregs(ulong, ulong, ulong); 102 void exhausted(char*); 103 void exit(int); 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); 112 void flushmmu(void); 113 void forceclosefgrp(void); 114 void forkchild(Proc*, Ureg*); 115 void forkret(void); 116 void free(void*); 117 void freeb(Block*); 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); 126 int haswaitq(void*); 127 long hostdomainwrite(char*, int); 128 long hostownerwrite(char*, int); 129 void hzsched(void); 130 Block* iallocb(int); 131 void iallocsummary(void); 132 long ibrk(ulong, int); 133 void ilock(Lock*); 134 void iunlock(Lock*); 135 long incref(Ref*); 136 void initseg(void); 137 int iprint(char*, ...); 138 void isdir(Chan*); 139 int iseve(void); 140 int islo(void); 141 Segment* isoverlap(Proc*, ulong, int); 142 int ispages(void*); 143 int isphysseg(char*); 144 void ixsummary(void); 145 int kbdcr2nl(Queue*, int); 146 int kbdgetmap(uint, int*, int*, Rune*); 147 int kbdputc(Queue*, int); 148 void kbdputmap(ushort, ushort, Rune); 149 void kickpager(void); 150 void killbig(char*); 151 void kproc(char*, void(*)(void*), void*); 152 void kprocchild(Proc*, void (*)(void*), void*); 153 void (*kproftimer)(ulong); 154 void ksetenv(char*, char*, int); 155 void kstrcpy(char*, char*, int); 156 void kstrdup(char**, char*); 157 long latin1(Rune*, int); 158 int lock(Lock*); 159 void logopen(Log*); 160 void logclose(Log*); 161 char* logctl(Log*, int, char**, Logflag*); 162 void logn(Log*, int, void*, int); 163 long logread(Log*, void*, ulong, long); 164 void log(Log*, int, char*, ...); 165 Cmdtab* lookupcmd(Cmdbuf*, Cmdtab*, int); 166 Page* lookpage(Image*, ulong); 167 #define MS2NS(n) (((vlong)(n))*1000000LL) 168 void machinit(void); 169 void* mallocz(ulong, int); 170 void* malloc(ulong); 171 void* mallocalign(ulong, ulong, long, ulong); 172 void mallocsummary(void); 173 Block* mem2bl(uchar*, int); 174 void mfreeseg(Segment*, ulong, int); 175 void microdelay(int); 176 uvlong mk64fract(uvlong, uvlong); 177 void mkqid(Qid*, vlong, ulong, int); 178 void mmurelease(Proc*); 179 void mmuswitch(Proc*); 180 Chan* mntauth(Chan*, char*); 181 long mntversion(Chan*, char*, int, int); 182 void mouseresize(void); 183 void mountfree(Mount*); 184 ulong ms2tk(ulong); 185 ulong msize(void*); 186 ulong ms2tk(ulong); 187 uvlong ms2fastticks(ulong); 188 void mul64fract(uvlong*, uvlong, uvlong); 189 void muxclose(Mnt*); 190 Chan* namec(char*, int, int, ulong); 191 void nameerror(char*, char*); 192 Chan* newchan(void); 193 int newfd(Chan*); 194 Mhead* newmhead(Chan*); 195 Mount* newmount(Mhead*, Chan*, int, char*); 196 Page* newpage(int, Segment **, ulong); 197 Path* newpath(char*); 198 Pgrp* newpgrp(void); 199 Rgrp* newrgrp(void); 200 Proc* newproc(void); 201 void nexterror(void); 202 int notify(Ureg*); 203 int nrand(int); 204 uvlong ns2fastticks(uvlong); 205 int okaddr(ulong, ulong, int); 206 int openmode(ulong); 207 Block* packblock(Block*); 208 Block* padblock(Block*, int); 209 void pagechainhead(Page*); 210 void pageinit(void); 211 ulong pagenumber(Page*); 212 void pagersummary(void); 213 void panic(char*, ...); 214 Cmdbuf* parsecmd(char *a, int n); 215 void pathclose(Path*); 216 ulong perfticks(void); 217 void pexit(char*, int); 218 void pgrpcpy(Pgrp*, Pgrp*); 219 void pgrpnote(ulong, char*, long, int); 220 void pio(Segment *, ulong, ulong, Page **); 221 #define poperror() up->nerrlab-- 222 void portcountpagerefs(ulong*, int); 223 int postnote(Proc*, int, char*, int); 224 int pprint(char*, ...); 225 int preempted(void); 226 void prflush(void); 227 void printinit(void); 228 ulong procalarm(ulong); 229 void procctl(Proc*); 230 void procdump(void); 231 int procfdprint(Chan*, int, int, char*, int); 232 int procindex(ulong); 233 void procinit0(void); 234 void procflushseg(Segment*); 235 void procpriority(Proc*, int, int); 236 Proc* proctab(int); 237 extern void (*proctrace)(Proc*, int, vlong); 238 void procwired(Proc*, int); 239 Pte* ptealloc(void); 240 Pte* ptecpy(Pte*); 241 int pullblock(Block**, int); 242 Block* pullupblock(Block*, int); 243 Block* pullupqueue(Queue*, int); 244 void putimage(Image*); 245 void putmhead(Mhead*); 246 void putmmu(ulong, ulong, Page*); 247 void putpage(Page*); 248 void putseg(Segment*); 249 void putstrn(char*, int); 250 void putswap(Page*); 251 ulong pwait(Waitmsg*); 252 void qaddlist(Queue*, Block*); 253 Block* qbread(Queue*, int); 254 long qbwrite(Queue*, Block*); 255 Queue* qbypass(void (*)(void*, Block*), void*); 256 int qcanread(Queue*); 257 void qclose(Queue*); 258 int qconsume(Queue*, void*, int); 259 Block* qcopy(Queue*, int, ulong); 260 int qdiscard(Queue*, int); 261 void qflush(Queue*); 262 void qfree(Queue*); 263 int qfull(Queue*); 264 Block* qget(Queue*); 265 void qhangup(Queue*, char*); 266 int qisclosed(Queue*); 267 int qiwrite(Queue*, void*, int); 268 int qlen(Queue*); 269 void qlock(QLock*); 270 Queue* qopen(int, int, void (*)(void*), void*); 271 int qpass(Queue*, Block*); 272 int qpassnolim(Queue*, Block*); 273 int qproduce(Queue*, void*, int); 274 void qputback(Queue*, Block*); 275 long qread(Queue*, void*, int); 276 Block* qremove(Queue*); 277 void qreopen(Queue*); 278 void qsetlimit(Queue*, int); 279 void qunlock(QLock*); 280 int qwindow(Queue*); 281 int qwrite(Queue*, void*, int); 282 void qnoblock(Queue*, int); 283 int rand(void); 284 void randominit(void); 285 ulong randomread(void*, ulong); 286 void rdb(void); 287 int readnum(ulong, char*, ulong, ulong, int); 288 int readstr(ulong, char*, ulong, char*); 289 void ready(Proc*); 290 void rebootcmd(int, char**); 291 void reboot(void*, void*, ulong); 292 void relocateseg(Segment*, ulong); 293 void renameuser(char*, char*); 294 void resched(char*); 295 void resrcwait(char*); 296 int return0(void*); 297 void rlock(RWlock*); 298 long rtctime(void); 299 void runlock(RWlock*); 300 Proc* runproc(void); 301 void savefpregs(FPsave*); 302 void sched(void); 303 void scheddump(void); 304 void schedinit(void); 305 void (*screenputs)(char*, int); 306 long seconds(void); 307 ulong segattach(Proc*, ulong, char *, ulong, ulong); 308 void segclock(ulong); 309 void segpage(Segment*, Page*); 310 int setcolor(ulong, ulong, ulong, ulong); 311 void setkernur(Ureg*, Proc*); 312 int setlabel(Label*); 313 void setmalloctag(void*, ulong); 314 void setrealloctag(void*, ulong); 315 void setregisters(Ureg*, char*, char*, int); 316 void setswapchan(Chan*); 317 char* skipslash(char*); 318 void sleep(Rendez*, int(*)(void*), void*); 319 void* smalloc(ulong); 320 int splhi(void); 321 int spllo(void); 322 void splx(int); 323 void splxpc(int); 324 char* srvname(Chan*); 325 int swapcount(ulong); 326 int swapfull(void); 327 void swapinit(void); 328 void timeradd(Timer*); 329 void timerdel(Timer*); 330 void timersinit(void); 331 void timerintr(Ureg*, Tval); 332 void timerset(Tval); 333 ulong tk2ms(ulong); 334 #define TK2MS(x) ((x)*(1000/HZ)) 335 uvlong tod2fastticks(vlong); 336 vlong todget(vlong*); 337 void todsetfreq(vlong); 338 void todinit(void); 339 void todset(vlong, vlong, int); 340 Block* trimblock(Block*, int, int); 341 void tsleep(Rendez*, int (*)(void*), void*, ulong); 342 int uartctl(Uart*, char*); 343 int uartgetc(void); 344 void uartkick(void*); 345 void uartmouse(Uart*, int (*)(Queue*, int), int); 346 void uartsetmouseputc(Uart*, int (*)(Queue*, int)); 347 void uartputc(int); 348 void uartputs(char*, int); 349 void uartrecv(Uart*, char); 350 int uartstageoutput(Uart*); 351 void unbreak(Proc*); 352 void uncachepage(Page*); 353 long unionread(Chan*, void*, long); 354 void unlock(Lock*); 355 uvlong us2fastticks(uvlong); 356 void userinit(void); 357 ulong userpc(void); 358 long userwrite(char*, int); 359 void validaddr(ulong, ulong, int); 360 void validname(char*, int); 361 char* validnamedup(char*, int); 362 void validstat(uchar*, int); 363 void* vmemchr(void*, int, int); 364 Proc* wakeup(Rendez*); 365 int walk(Chan**, char**, int, int, int*); 366 void wlock(RWlock*); 367 void wunlock(RWlock*); 368 void* xalloc(ulong); 369 void* xallocz(ulong, int); 370 void xfree(void*); 371 void xhole(ulong, ulong); 372 void xinit(void); 373 int xmerge(void*, void*); 374 void* xspanalloc(ulong, int, ulong); 375 void xsummary(void); 376 void yield(void); 377 Segment* data2txt(Segment*); 378 Segment* dupseg(Segment**, int, int); 379 Segment* newseg(int, ulong, ulong); 380 Segment* seg(Proc*, ulong, int); 381 void hnputv(void*, uvlong); 382 void hnputl(void*, uint); 383 void hnputs(void*, ushort); 384 uvlong nhgetv(void*); 385 uint nhgetl(void*); 386 ushort nhgets(void*); 387 ulong µs(void); 388 void _xinc(long*); 389 long _xdec(long*); 390 long lcycles(void); 391 392 #pragma varargck argpos iprint 1 393 #pragma varargck argpos panic 1 394 #pragma varargck argpos pprint 1 395