1 void _assert(char*); 2 void accounttime(void); 3 void addbootfile(char*, uchar*, ulong); 4 Timer* addclock0link(void (*)(void), int); 5 int addconsdev(Queue*, void (*fn)(char*,int), int, int); 6 int addkbdq(Queue*, int); 7 int addphysseg(Physseg*); 8 void addwatchdog(Watchdog*); 9 int adec(int*); 10 Block* adjustblock(Block*, int); 11 int ainc(int*); 12 void alarmkproc(void*); 13 Block* allocb(int); 14 int anyhigher(void); 15 int anyready(void); 16 Image* attachimage(int, Chan*, int, uintptr, uintptr); 17 Page* auxpage(uint); 18 Block* bl2mem(uchar*, Block*, int); 19 int blocklen(Block*); 20 void bootlinks(void); 21 void cachedel(Image*, ulong); 22 void cachepage(Page*, Image*); 23 void callwithureg(void (*)(Ureg*)); 24 char* chanpath(Chan*); 25 int canlock(Lock*); 26 int canpage(Proc*); 27 int canqlock(QLock*); 28 int canrlock(RWlock*); 29 Chan* cclone(Chan*); 30 void cclose(Chan*); 31 void ccloseq(Chan*); 32 void chanfree(Chan*); 33 void checkalarms(void); 34 void checkb(Block*, char*); 35 void cinit(void); 36 void closeegrp(Egrp*); 37 void closefgrp(Fgrp*); 38 void closepgrp(Pgrp*); 39 void closergrp(Rgrp*); 40 void cmderror(Cmdbuf*, char*); 41 int cmount(Chan**, Chan*, int, char*); 42 int consactive(void); 43 void (*consdebug)(void); 44 Block* concatblock(Block*); 45 void (*consputs)(char*, int); 46 void copen(Chan*); 47 Block* copyblock(Block*, int); 48 void copypage(Page*, Page*); 49 int cread(Chan*, uchar*, int, vlong); 50 void cunmount(Chan*, Chan*); 51 void cupdate(Chan*, uchar*, int, vlong); 52 void cwrite(Chan*, uchar*, int, vlong); 53 uintptr dbgpc(Proc*); 54 int decrypt(void*, void*, int); 55 void delay(int); 56 void delconsdevs(void); 57 Proc* dequeueproc(Schedq*, Proc*); 58 Chan* devattach(int, char*); 59 Block* devbread(Chan*, long, vlong); 60 long devbwrite(Chan*, Block*, vlong); 61 Chan* devclone(Chan*); 62 int devconfig(int, char *, DevConf *); 63 void devcreate(Chan*, char*, int, int); 64 void devdir(Chan*, Qid, char*, vlong, char*, long, Dir*); 65 long devdirread(Chan*, char*, long, Dirtab*, int, Devgen*); 66 Devgen devgen; 67 void devinit(void); 68 Chan* devopen(Chan*, int, Dirtab*, int, Devgen*); 69 void devpermcheck(char*, int, int); 70 void devpower(int); 71 void devremove(Chan*); 72 void devreset(void); 73 void devshutdown(void); 74 long devstat(Chan*, uchar*, long, Dirtab*, int, Devgen*); 75 Dev* devtabget(int, int); 76 void devtabinit(void); 77 void devtabreset(void); 78 long devtabread(Chan*, void*, long, vlong); 79 void devtabshutdown(void); 80 Walkqid* devwalk(Chan*, Chan*, char**, int, Dirtab*, int, Devgen*); 81 long devwstat(Chan*, uchar*, long); 82 void drawactive(int); 83 void drawcmap(void); 84 void dumpaproc(Proc*); 85 void dumpregs(Ureg*); 86 void dumpstack(void); 87 Fgrp* dupfgrp(Fgrp*); 88 int duppage(Page*); 89 void edfinit(Proc*); 90 char* edfadmit(Proc*); 91 int edfready(Proc*); 92 void edfrecord(Proc*); 93 void edfrun(Proc*, int); 94 void edfstop(Proc*); 95 void edfyield(void); 96 int emptystr(char*); 97 int encrypt(void*, void*, int); 98 void envcpy(Egrp*, Egrp*); 99 int eqchanddq(Chan*, int, uint, Qid, int); 100 int eqqid(Qid, Qid); 101 void error(char*); 102 void exhausted(char*); 103 void exit(int); 104 uvlong fastticks(uvlong*); 105 uvlong fastticks2us(uvlong); 106 uvlong fastticks2ns(uvlong); 107 int fault(uintptr, int); 108 void fdclose(int, int); 109 Chan* fdtochan(int, int, int, int); 110 int findmount(Chan**, Mhead**, int, uint, Qid); 111 int fixfault(Segment*, uintptr, int, int, int); 112 void fmtinit(void); 113 void forceclosefgrp(void); 114 void free(void*); 115 void freeb(Block*); 116 void freeblist(Block*); 117 int freebroken(void); 118 void freepte(Segment*, Pte*); 119 void getcolor(ulong, ulong*, ulong*, ulong*); 120 void gotolabel(Label*); 121 char* getconfenv(void); 122 int haswaitq(void*); 123 long hostdomainwrite(char*, long); 124 long hostownerwrite(char*, long); 125 void hzsched(void); 126 Block* iallocb(int); 127 void ialloclimit(ulong); 128 void iallocsummary(void); 129 void ilock(Lock*); 130 void iunlock(Lock*); 131 void initimage(void); 132 void initmark(Watermark *, int, char *); 133 int iprint(char*, ...); 134 void isdir(Chan*); 135 int iseve(void); 136 int islo(void); 137 Segment* isoverlap(Proc*, uintptr, usize); 138 int ispages(void*); 139 int isphysseg(char*); 140 void ixsummary(void); 141 int kbdcr2nl(Queue*, int); 142 int kbdgetmap(uint, int*, int*, Rune*); 143 int kbdputc(Queue*, int); 144 void kbdputmap(ushort, ushort, Rune); 145 void kickpager(uint, int); 146 void killbig(char*); 147 void kproc(char*, void(*)(void*), void*); 148 void kprocchild(Proc*, void (*)(void*), void*); 149 void (*kproftimer)(uintptr); 150 void ksetenv(char*, char*, int); 151 void kstrcpy(char*, char*, int); 152 void kstrdup(char**, char*); 153 ulong l2be(long); 154 long latin1(Rune*, int); 155 int lock(Lock*); 156 void logopen(Log*); 157 void logclose(Log*); 158 char* logctl(Log*, int, char**, Logflag*); 159 void logn(Log*, int, void*, int); 160 long logread(Log*, void*, ulong, long); 161 void log(Log*, int, char*, ...); 162 Cmdtab* lookupcmd(Cmdbuf*, Cmdtab*, int); 163 Page* lookpage(Image*, ulong); 164 #define MS2NS(n) (((vlong)(n))*1000000LL) 165 void mallocinit(void); 166 long mallocreadsummary(Chan*, void*, long, long); 167 void mallocsummary(void); 168 Block* mem2bl(uchar*, int); 169 void mfreeseg(Segment*, uintptr, uintptr); 170 void microdelay(int); 171 uvlong mk64fract(uvlong, uvlong); 172 void mkqid(Qid*, vlong, ulong, int); 173 void mmuflush(void); 174 void mmuput(uintptr, uintptr, Page*); 175 void mmurelease(Proc*); 176 void mmuswitch(Proc*); 177 Chan* mntauth(Chan*, char*); 178 usize mntversion(Chan*, u32int, char*, usize); 179 void mountfree(Mount*); 180 int mregfmt(Fmt*); 181 ulong ms2tk(ulong); 182 uvlong ms2fastticks(ulong); 183 void mul64fract(uvlong*, uvlong, uvlong); 184 void muxclose(Mnt*); 185 Chan* namec(char*, int, int, int); 186 void nameerror(char*, char*); 187 Chan* newchan(void); 188 int newfd(Chan*); 189 Mhead* newmhead(Chan*); 190 Mount* newmount(Mhead*, Chan*, int, char*); 191 Page* newpage(int, Segment*, uintptr, uint, int, int); 192 Path* newpath(char*); 193 Pgrp* newpgrp(void); 194 Rgrp* newrgrp(void); 195 Proc* newproc(void); 196 void nexterror(void); 197 void notemark(Watermark *, int); 198 int nrand(int); 199 uvlong ns2fastticks(uvlong); 200 int okaddr(uintptr, long, int); 201 int openmode(int); 202 Block* packblock(Block*); 203 Block* padblock(Block*, int); 204 void pagechainhead(Page*); 205 void pageinit(void); 206 ulong pagenumber(Page*); 207 uvlong pagereclaim(int); 208 void pageunchain(Page*); 209 void panic(char*, ...); 210 Cmdbuf* parsecmd(char *a, int n); 211 void pathclose(Path*); 212 ulong perfticks(void); 213 void pexit(char*, int); 214 Page* pgalloc(uint, int); 215 void pgfree(Page*); 216 void pgrpcpy(Pgrp*, Pgrp*); 217 void pgrpnote(ulong, char*, long, int); 218 uintmem physalloc(u64int, int*, void*); 219 void physdump(void); 220 void physfree(uintmem, u64int); 221 void physinit(uintmem, u64int); 222 void* phystag(uintmem); 223 int psindex(int); 224 void pio(Segment*, uintptr, uintptr, Page**, int); 225 #define poperror() up->nerrlab-- 226 int postnote(Proc*, int, char*, int); 227 int pprint(char*, ...); 228 int preempted(void); 229 void prflush(void); 230 void printinit(void); 231 void psinit(void); 232 ulong procalarm(ulong); 233 void procctl(Proc*); 234 void procdump(void); 235 int procfdprint(Chan*, int, int, char*, int); 236 void procflushseg(Segment*); 237 void procpriority(Proc*, int, int); 238 void procrestore(Proc*); 239 void procsave(Proc*); 240 Proc* psincref(int); 241 void psdecref(Proc*); 242 void (*proctrace)(Proc*, int, vlong, vlong); 243 void procwired(Proc*, int); 244 Pte* ptealloc(void); 245 Pte* ptecpy(Pte*); 246 int pullblock(Block**, int); 247 Block* pullupblock(Block*, int); 248 Block* pullupqueue(Queue*, int); 249 void putimage(Image*); 250 void putmhead(Mhead*); 251 void putpage(Page*); 252 void putseg(Segment*); 253 void putstrn(char*, int); 254 int pwait(Waitmsg*); 255 void qaddlist(Queue*, Block*); 256 Block* qbread(Queue*, int); 257 long qbwrite(Queue*, Block*); 258 Queue* qbypass(void (*)(void*, Block*), void*); 259 int qcanread(Queue*); 260 void qclose(Queue*); 261 int qconsume(Queue*, void*, int); 262 Block* qcopy(Queue*, int, ulong); 263 int qdiscard(Queue*, int); 264 void qflush(Queue*); 265 void qfree(Queue*); 266 int qfull(Queue*); 267 Block* qget(Queue*); 268 void qhangup(Queue*, char*); 269 int qisclosed(Queue*); 270 int qiwrite(Queue*, void*, int); 271 int qlen(Queue*); 272 void qlock(QLock*); 273 Queue* qopen(int, int, void (*)(void*), void*); 274 int qpass(Queue*, Block*); 275 int qpassnolim(Queue*, Block*); 276 int qproduce(Queue*, void*, int); 277 void qputback(Queue*, Block*); 278 long qread(Queue*, void*, int); 279 Block* qremove(Queue*); 280 void qreopen(Queue*); 281 void qsetlimit(Queue*, int); 282 void qunlock(QLock*); 283 int qwindow(Queue*); 284 int qwrite(Queue*, void*, int); 285 void qnoblock(Queue*, int); 286 int rand(void); 287 void randominit(void); 288 ulong randomread(void*, ulong); 289 void rdb(void); 290 int readnum(ulong, char*, ulong, ulong, int); 291 long readstr(long, char*, long, char*); 292 void ready(Proc*); 293 void rebootcmd(int, char**); 294 void reboot(void*, void*, long); 295 void relocateseg(Segment*, uintptr); 296 void renameuser(char*, char*); 297 void resched(char*); 298 void resrcwait(char*); 299 int return0(void*); 300 void rlock(RWlock*); 301 long rtctime(void); 302 void runlock(RWlock*); 303 Proc* runproc(void); 304 void sched(void); 305 void scheddump(void); 306 void schedinit(void); 307 long seconds(void); 308 void segclock(uintptr); 309 void segpage(Segment*, Page*); 310 char* seprintmark(char *, char *, Watermark *); 311 char* seprintpagestats(char*, char*); 312 char* seprintphysstats(char*, char*); 313 int setcolor(ulong, ulong, ulong, ulong); 314 void setkernur(Ureg*, Proc*); 315 int setlabel(Label*); 316 void setregisters(Ureg*, char*, char*, int); 317 char* skipslash(char*); 318 void sleep(Rendez*, int (*)(void*), void*); 319 void* smalloc(ulong); 320 char* srvname(Chan*); 321 void syscallfmt(int, va_list list); 322 void sysretfmt(int, va_list, Ar0*, uvlong, uvlong); 323 void sysrforkchild(Proc*, Proc*); 324 void timeradd(Timer*); 325 void timerdel(Timer*); 326 void timersinit(void); 327 void timerintr(Ureg*, vlong); 328 void timerset(uvlong); 329 ulong tk2ms(ulong); 330 #define TK2MS(x) ((x)*(1000/HZ)) 331 uvlong tod2fastticks(vlong); 332 vlong todget(vlong*); 333 void todsetfreq(vlong); 334 void todinit(void); 335 void todset(vlong, vlong, int); 336 void tsleep(Rendez*, int (*)(void*), void*, long); 337 Block* trimblock(Block*, int, int); 338 Uart* uartconsole(int, char*); 339 int uartctl(Uart*, char*); 340 int uartgetc(void); 341 void uartkick(void*); 342 void uartmouse(Uart*, int (*)(Queue*, int), int); 343 void uartsetmouseputc(Uart*, int (*)(Queue*, int)); 344 void uartputc(int); 345 void uartputs(char*, int); 346 void uartrecv(Uart*, char); 347 int uartstageoutput(Uart*); 348 void unbreak(Proc*); 349 void uncachepage(Page*); 350 void unlock(Lock*); 351 void userinit(void); 352 uintptr userpc(Ureg*); 353 long userwrite(char*, long); 354 void* validaddr(void*, long, int); 355 void validname(char*, int); 356 char* validnamedup(char*, int); 357 void validstat(uchar*, usize); 358 void* vmemchr(void*, int, int); 359 Proc* wakeup(Rendez*); 360 int walk(Chan**, char**, int, int, int*); 361 void wlock(RWlock*); 362 void wunlock(RWlock*); 363 void yield(void); 364 Segment* data2txt(Segment*); 365 Segment* dupseg(Segment**, int, int); 366 Segment* newseg(int, uintptr, uintptr); 367 Segment* seg(Proc*, uintptr, int); 368 void hnputv(void*, uvlong); 369 void hnputl(void*, uint); 370 void hnputs(void*, ushort); 371 uvlong nhgetv(void*); 372 uint nhgetl(void*); 373 ushort nhgets(void*); 374 ulong µs(void); 375 376 #pragma varargck argpos iprint 1 377 #pragma varargck argpos panic 1 378 #pragma varargck argpos pprint 1 379