18ccd4a63SDavid du Colombier #define ROUND(s, sz) (((s)+((sz)-1))&~((sz)-1)) 28ccd4a63SDavid du Colombier 38ccd4a63SDavid du Colombier void accounttime(void); 48ccd4a63SDavid du Colombier void addclock0link(void (*)(void), int); 58ccd4a63SDavid du Colombier int addphysseg(Physseg*); 68ccd4a63SDavid du Colombier void addbootfile(char*, uchar*, ulong); 78ccd4a63SDavid du Colombier Block* adjustblock(Block*, int); 88ccd4a63SDavid du Colombier void alarmkproc(void*); 98ccd4a63SDavid du Colombier Block* allocb(int); 108ccd4a63SDavid du Colombier int anyhigher(void); 118ccd4a63SDavid du Colombier int anyready(void); 128ccd4a63SDavid du Colombier Page* auxpage(void); 138ccd4a63SDavid du Colombier Block* bl2mem(uchar*, Block*, int); 148ccd4a63SDavid du Colombier int blocklen(Block*); 158ccd4a63SDavid du Colombier void callwithureg(void(*)(Ureg*)); 168ccd4a63SDavid du Colombier char* c2name(Chan*); 178ccd4a63SDavid du Colombier int cangetc(void*); 188ccd4a63SDavid du Colombier int canlock(Lock*); 198ccd4a63SDavid du Colombier int canpage(Proc*); 208ccd4a63SDavid du Colombier int canputc(void*); 218ccd4a63SDavid du Colombier int canqlock(QLock*); 228ccd4a63SDavid du Colombier int canrlock(RWlock*); 238ccd4a63SDavid du Colombier void chandevinit(void); 248ccd4a63SDavid du Colombier void chandevreset(void); 258ccd4a63SDavid du Colombier void chandevshutdown(void); 268ccd4a63SDavid du Colombier void chanfree(Chan*); 278ccd4a63SDavid du Colombier void chanrec(Mnt*); 288ccd4a63SDavid du Colombier void checkalarms(void); 298ccd4a63SDavid du Colombier void checkb(Block*, char*); 308ccd4a63SDavid du Colombier void cinit(void); 318ccd4a63SDavid du Colombier Chan* cclone(Chan*); 328ccd4a63SDavid du Colombier void cclose(Chan*); 338ccd4a63SDavid du Colombier char* clipread(void); 348ccd4a63SDavid du Colombier int clipwrite(char*); 358ccd4a63SDavid du Colombier void closeegrp(Egrp*); 368ccd4a63SDavid du Colombier void closefgrp(Fgrp*); 378ccd4a63SDavid du Colombier void closemount(Mount*); 388ccd4a63SDavid du Colombier void closepgrp(Pgrp*); 398ccd4a63SDavid du Colombier void closergrp(Rgrp*); 408ccd4a63SDavid du Colombier long clrfpintr(void); 418ccd4a63SDavid du Colombier void cmderror(Cmdbuf*, char*); 428ccd4a63SDavid du Colombier int cmount(Chan**, Chan*, int, char*); 438ccd4a63SDavid du Colombier void cnameclose(Cname*); 448ccd4a63SDavid du Colombier void confinit(void); 458ccd4a63SDavid du Colombier void confinit1(int); 468ccd4a63SDavid du Colombier int consactive(void); 478ccd4a63SDavid du Colombier extern void (*consdebug)(void); 488ccd4a63SDavid du Colombier void copen(Chan*); 498ccd4a63SDavid du Colombier Block* concatblock(Block*); 508ccd4a63SDavid du Colombier Block* copyblock(Block*, int); 518ccd4a63SDavid du Colombier void copypage(Page*, Page*); 528ccd4a63SDavid du Colombier int cread(Chan*, uchar*, int, vlong); 538ccd4a63SDavid du Colombier void cunmount(Chan*, Chan*); 548ccd4a63SDavid du Colombier void cupdate(Chan*, uchar*, int, vlong); 558ccd4a63SDavid du Colombier void cwrite(Chan*, uchar*, int, vlong); 568ccd4a63SDavid du Colombier ulong dbgpc(Proc*); 578ccd4a63SDavid du Colombier int decref(Ref*); 588ccd4a63SDavid du Colombier int decrypt(void*, void*, int); 598ccd4a63SDavid du Colombier void delay(int); 608ccd4a63SDavid du Colombier Chan* devattach(int, char*); 618ccd4a63SDavid du Colombier Block* devbread(Chan*, long, ulong); 628ccd4a63SDavid du Colombier long devbwrite(Chan*, Block*, ulong); 638ccd4a63SDavid du Colombier Chan* devclone(Chan*); 648ccd4a63SDavid du Colombier int devconfig(int, char *, DevConf *); 658ccd4a63SDavid du Colombier void devcreate(Chan*, char*, int, ulong); 668ccd4a63SDavid du Colombier void devdir(Chan*, Qid, char*, vlong, char*, long, Dir*); 678ccd4a63SDavid du Colombier long devdirread(Chan*, char*, long, Dirtab*, int, Devgen*); 688ccd4a63SDavid du Colombier Devgen devgen; 698ccd4a63SDavid du Colombier void devinit(void); 708ccd4a63SDavid du Colombier int devno(int, int); 718ccd4a63SDavid du Colombier Chan* devopen(Chan*, int, Dirtab*, int, Devgen*); 728ccd4a63SDavid du Colombier void devpermcheck(char*, ulong, int); 738ccd4a63SDavid du Colombier void devpower(int); 748ccd4a63SDavid du Colombier void devremove(Chan*); 758ccd4a63SDavid du Colombier void devreset(void); 768ccd4a63SDavid du Colombier void devshutdown(void); 778ccd4a63SDavid du Colombier int devstat(Chan*, uchar*, int, Dirtab*, int, Devgen*); 788ccd4a63SDavid du Colombier Walkqid* devwalk(Chan*, Chan*, char**, int, Dirtab*, int, Devgen*); 798ccd4a63SDavid du Colombier int devwstat(Chan*, uchar*, int); 808ccd4a63SDavid du Colombier void drawactive(int); 818ccd4a63SDavid du Colombier void drawcmap(void); 828ccd4a63SDavid du Colombier int drawcanqlock(void); 838ccd4a63SDavid du Colombier void drawqlock(void); 848ccd4a63SDavid du Colombier void drawqunlock(void); 858ccd4a63SDavid du Colombier void dumpaproc(Proc*); 868ccd4a63SDavid du Colombier void dumpqueues(void); 878ccd4a63SDavid du Colombier void dumpregs(Ureg*); 888ccd4a63SDavid du Colombier void dumpstack(void); 898ccd4a63SDavid du Colombier Fgrp* dupfgrp(Fgrp*); 908ccd4a63SDavid du Colombier void duppage(Page*); 918ccd4a63SDavid du Colombier void dupswap(Page*); 928ccd4a63SDavid du Colombier int emptystr(char*); 938ccd4a63SDavid du Colombier int encrypt(void*, void*, int); 948ccd4a63SDavid du Colombier void envcpy(Egrp*, Egrp*); 958ccd4a63SDavid du Colombier int eqchan(Chan*, Chan*, int); 968ccd4a63SDavid du Colombier int eqqid(Qid, Qid); 978ccd4a63SDavid du Colombier void error(char*); 988ccd4a63SDavid du Colombier long execregs(ulong, ulong, ulong); 998ccd4a63SDavid du Colombier void exhausted(char*); 1008ccd4a63SDavid du Colombier void exit(int); 1018ccd4a63SDavid du Colombier uvlong fastticks(uvlong*); 1028ccd4a63SDavid du Colombier int fault(ulong, int); 1038ccd4a63SDavid du Colombier void fdclose(int, int); 1048ccd4a63SDavid du Colombier Chan* fdtochan(int, int, int, int); 1058ccd4a63SDavid du Colombier int fixfault(Segment*, ulong, int, int); 1068ccd4a63SDavid du Colombier void flushmmu(void); 1078ccd4a63SDavid du Colombier void forkchild(Proc*, Ureg*); 1088ccd4a63SDavid du Colombier void forkret(void); 1098ccd4a63SDavid du Colombier void free(void*); 1108ccd4a63SDavid du Colombier void freeb(Block*); 1118ccd4a63SDavid du Colombier void freeblist(Block*); 1128ccd4a63SDavid du Colombier int freebroken(void); 1138ccd4a63SDavid du Colombier void freepte(Segment*, Pte*); 1148ccd4a63SDavid du Colombier void freesegs(int); 1158ccd4a63SDavid du Colombier void freesession(Session*); 1168ccd4a63SDavid du Colombier ulong getmalloctag(void*); 1178ccd4a63SDavid du Colombier ulong getrealloctag(void*); 1188ccd4a63SDavid du Colombier void gotolabel(Label*); 1198ccd4a63SDavid du Colombier char* getconfenv(void); 1208ccd4a63SDavid du Colombier int haswaitq(void*); 1218ccd4a63SDavid du Colombier long hostdomainwrite(char*, int); 1228ccd4a63SDavid du Colombier long hostownerwrite(char*, int); 1238ccd4a63SDavid du Colombier void hzsched(void); 1248ccd4a63SDavid du Colombier void iallocinit(void); 1258ccd4a63SDavid du Colombier Block* iallocb(int); 1268ccd4a63SDavid du Colombier void iallocsummary(void); 1278ccd4a63SDavid du Colombier long ibrk(ulong, int); 1288ccd4a63SDavid du Colombier void ilock(Lock*); 1298ccd4a63SDavid du Colombier void iunlock(Lock*); 1308ccd4a63SDavid du Colombier int incref(Ref*); 1318ccd4a63SDavid du Colombier void initseg(void); 1328ccd4a63SDavid du Colombier int iprint(char*, ...); 1338ccd4a63SDavid du Colombier void isdir(Chan*); 1348ccd4a63SDavid du Colombier int iseve(void); 1358ccd4a63SDavid du Colombier #define islo() (0) 1368ccd4a63SDavid du Colombier Segment* isoverlap(Proc*, ulong, int); 1378ccd4a63SDavid du Colombier int ispages(void*); 1388ccd4a63SDavid du Colombier int isphysseg(char*); 1398ccd4a63SDavid du Colombier void ixsummary(void); 1408ccd4a63SDavid du Colombier void kbdclock(void); 1418ccd4a63SDavid du Colombier int kbdcr2nl(Queue*, int); 1428ccd4a63SDavid du Colombier int kbdputc(Queue*, int); 1438ccd4a63SDavid du Colombier void kbdrepeat(int); 1448ccd4a63SDavid du Colombier long keyread(char*, int, long); 1458ccd4a63SDavid du Colombier void kickpager(void); 1468ccd4a63SDavid du Colombier void killbig(void); 1478ccd4a63SDavid du Colombier int kproc(char*, void(*)(void*), void*); 1488ccd4a63SDavid du Colombier void kprocchild(Proc*, void (*)(void*), void*); 1498ccd4a63SDavid du Colombier extern void (*kproftimer)(ulong); 1508ccd4a63SDavid du Colombier void ksetenv(char*, char*, int); 1518ccd4a63SDavid du Colombier void kstrcpy(char*, char*, int); 1528ccd4a63SDavid du Colombier void kstrdup(char**, char*); 1538ccd4a63SDavid du Colombier long latin1(Rune*, int); 1548ccd4a63SDavid du Colombier void lock(Lock*); 1558ccd4a63SDavid du Colombier void lockinit(void); 1568ccd4a63SDavid du Colombier void logopen(Log*); 1578ccd4a63SDavid du Colombier void logclose(Log*); 1588ccd4a63SDavid du Colombier char* logctl(Log*, int, char**, Logflag*); 1598ccd4a63SDavid du Colombier void logn(Log*, int, void*, int); 1608ccd4a63SDavid du Colombier long logread(Log*, void*, ulong, long); 1618ccd4a63SDavid du Colombier void log(Log*, int, char*, ...); 1628ccd4a63SDavid du Colombier Cmdtab* lookupcmd(Cmdbuf*, Cmdtab*, int); 1638ccd4a63SDavid du Colombier void machinit(void); 1648ccd4a63SDavid du Colombier void* mallocz(ulong, int); 1658ccd4a63SDavid du Colombier #define malloc kmalloc 1668ccd4a63SDavid du Colombier void* malloc(ulong); 1678ccd4a63SDavid du Colombier void mallocsummary(void); 1688ccd4a63SDavid du Colombier Block* mem2bl(uchar*, int); 1698ccd4a63SDavid du Colombier void mfreeseg(Segment*, ulong, int); 1708ccd4a63SDavid du Colombier void microdelay(int); 1718ccd4a63SDavid du Colombier void mkqid(Qid*, vlong, ulong, int); 1728ccd4a63SDavid du Colombier void mmurelease(Proc*); 1738ccd4a63SDavid du Colombier void mmuswitch(Proc*); 1748ccd4a63SDavid du Colombier Chan* mntauth(Chan*, char*); 1758ccd4a63SDavid du Colombier void mntdump(void); 1768ccd4a63SDavid du Colombier long mntversion(Chan*, char*, int, int); 1778ccd4a63SDavid du Colombier void mountfree(Mount*); 1788ccd4a63SDavid du Colombier ulong ms2tk(ulong); 1798ccd4a63SDavid du Colombier ulong msize(void*); 1808ccd4a63SDavid du Colombier ulong ms2tk(ulong); 1818ccd4a63SDavid du Colombier uvlong ms2fastticks(ulong); 1828ccd4a63SDavid du Colombier void muxclose(Mnt*); 1838ccd4a63SDavid du Colombier Chan* namec(char*, int, int, ulong); 1848ccd4a63SDavid du Colombier Chan* newchan(void); 1858ccd4a63SDavid du Colombier int newfd(Chan*); 1868ccd4a63SDavid du Colombier Mhead* newmhead(Chan*); 1878ccd4a63SDavid du Colombier Mount* newmount(Mhead*, Chan*, int, char*); 1888ccd4a63SDavid du Colombier Page* newpage(int, Segment **, ulong); 1898ccd4a63SDavid du Colombier Pgrp* newpgrp(void); 1908ccd4a63SDavid du Colombier Rgrp* newrgrp(void); 1918ccd4a63SDavid du Colombier Proc* newproc(void); 1928ccd4a63SDavid du Colombier char* nextelem(char*, char*); 1938ccd4a63SDavid du Colombier void nexterror(void); 1948ccd4a63SDavid du Colombier Cname* newcname(char*); 1958ccd4a63SDavid du Colombier int notify(Ureg*); 1968ccd4a63SDavid du Colombier int nrand(int); 1978ccd4a63SDavid du Colombier int okaddr(ulong, ulong, int); 1988ccd4a63SDavid du Colombier int openmode(ulong); 1998ccd4a63SDavid du Colombier void oserrstr(void); 2008ccd4a63SDavid du Colombier void oserror(void); 2018ccd4a63SDavid du Colombier Block* packblock(Block*); 2028ccd4a63SDavid du Colombier Block* padblock(Block*, int); 2038ccd4a63SDavid du Colombier void pagechainhead(Page*); 2048ccd4a63SDavid du Colombier void pageinit(void); 2058ccd4a63SDavid du Colombier void pagersummary(void); 2068ccd4a63SDavid du Colombier void panic(char*, ...); 2078ccd4a63SDavid du Colombier Cmdbuf* parsecmd(char *a, int n); 2088ccd4a63SDavid du Colombier ulong perfticks(void); 2098ccd4a63SDavid du Colombier void pexit(char*, int); 2108ccd4a63SDavid du Colombier int preempted(void); 2118ccd4a63SDavid du Colombier void printinit(void); 2128ccd4a63SDavid du Colombier int procindex(ulong); 2138ccd4a63SDavid du Colombier void pgrpcpy(Pgrp*, Pgrp*); 2148ccd4a63SDavid du Colombier void pgrpnote(ulong, char*, long, int); 2158ccd4a63SDavid du Colombier Pgrp* pgrptab(int); 2168ccd4a63SDavid du Colombier void pio(Segment *, ulong, ulong, Page **); 2178ccd4a63SDavid du Colombier #define poperror() up->nerrlab-- 2188ccd4a63SDavid du Colombier void portclock(Ureg*); 2198ccd4a63SDavid du Colombier int postnote(Proc*, int, char*, int); 2208ccd4a63SDavid du Colombier int pprint(char*, ...); 2218ccd4a63SDavid du Colombier void prflush(void); 2228ccd4a63SDavid du Colombier ulong procalarm(ulong); 2238ccd4a63SDavid du Colombier int proccounter(char *name); 2248ccd4a63SDavid du Colombier void procctl(Proc*); 2258ccd4a63SDavid du Colombier void procdump(void); 2268ccd4a63SDavid du Colombier int procfdprint(Chan*, int, int, char*, int); 2278ccd4a63SDavid du Colombier void procinit0(void); 2288ccd4a63SDavid du Colombier void procflushseg(Segment*); 2298ccd4a63SDavid du Colombier void procpriority(Proc*, int, int); 2308ccd4a63SDavid du Colombier Proc* proctab(int); 2318ccd4a63SDavid du Colombier void procwired(Proc*, int); 2328ccd4a63SDavid du Colombier Pte* ptealloc(void); 2338ccd4a63SDavid du Colombier Pte* ptecpy(Pte*); 2348ccd4a63SDavid du Colombier int pullblock(Block**, int); 2358ccd4a63SDavid du Colombier Block* pullupblock(Block*, int); 2368ccd4a63SDavid du Colombier Block* pullupqueue(Queue*, int); 2378ccd4a63SDavid du Colombier void putmhead(Mhead*); 2388ccd4a63SDavid du Colombier void putmmu(ulong, ulong, Page*); 2398ccd4a63SDavid du Colombier void putpage(Page*); 2408ccd4a63SDavid du Colombier void putseg(Segment*); 2418ccd4a63SDavid du Colombier void putstr(char*); 2428ccd4a63SDavid du Colombier void putstrn(char*, int); 2438ccd4a63SDavid du Colombier void putswap(Page*); 2448ccd4a63SDavid du Colombier ulong pwait(Waitmsg*); 2458ccd4a63SDavid du Colombier Label* pwaserror(void); 2468ccd4a63SDavid du Colombier void qaddlist(Queue*, Block*); 2478ccd4a63SDavid du Colombier Block* qbread(Queue*, int); 2488ccd4a63SDavid du Colombier long qbwrite(Queue*, Block*); 2498ccd4a63SDavid du Colombier Queue* qbypass(void (*)(void*, Block*), void*); 2508ccd4a63SDavid du Colombier int qcanread(Queue*); 2518ccd4a63SDavid du Colombier void qclose(Queue*); 2528ccd4a63SDavid du Colombier int qconsume(Queue*, void*, int); 2538ccd4a63SDavid du Colombier Block* qcopy(Queue*, int, ulong); 2548ccd4a63SDavid du Colombier int qdiscard(Queue*, int); 2558ccd4a63SDavid du Colombier void qflush(Queue*); 2568ccd4a63SDavid du Colombier void qfree(Queue*); 2578ccd4a63SDavid du Colombier int qfull(Queue*); 2588ccd4a63SDavid du Colombier Block* qget(Queue*); 2598ccd4a63SDavid du Colombier void qhangup(Queue*, char*); 2608ccd4a63SDavid du Colombier int qisclosed(Queue*); 2618ccd4a63SDavid du Colombier void qinit(void); 2628ccd4a63SDavid du Colombier int qiwrite(Queue*, void*, int); 2638ccd4a63SDavid du Colombier int qlen(Queue*); 2648ccd4a63SDavid du Colombier void qlock(QLock*); 2658ccd4a63SDavid du Colombier Queue* qopen(int, int, void (*)(void*), void*); 2668ccd4a63SDavid du Colombier int qpass(Queue*, Block*); 2678ccd4a63SDavid du Colombier int qpassnolim(Queue*, Block*); 2688ccd4a63SDavid du Colombier int qproduce(Queue*, void*, int); 2698ccd4a63SDavid du Colombier void qputback(Queue*, Block*); 2708ccd4a63SDavid du Colombier long qread(Queue*, void*, int); 2718ccd4a63SDavid du Colombier Block* qremove(Queue*); 2728ccd4a63SDavid du Colombier void qreopen(Queue*); 2738ccd4a63SDavid du Colombier void qsetlimit(Queue*, int); 2748ccd4a63SDavid du Colombier void qunlock(QLock*); 2758ccd4a63SDavid du Colombier int qwindow(Queue*); 2768ccd4a63SDavid du Colombier int qwrite(Queue*, void*, int); 2778ccd4a63SDavid du Colombier void qnoblock(Queue*, int); 2788ccd4a63SDavid du Colombier int rand(void); 2798ccd4a63SDavid du Colombier void randominit(void); 2808ccd4a63SDavid du Colombier ulong randomread(void*, ulong); 2818ccd4a63SDavid du Colombier void rdb(void); 2828ccd4a63SDavid du Colombier int readnum(ulong, char*, ulong, ulong, int); 2838ccd4a63SDavid du Colombier int readstr(ulong, char*, ulong, char*); 2848ccd4a63SDavid du Colombier void ready(Proc*); 2858ccd4a63SDavid du Colombier void rebootcmd(int, char**); 2868ccd4a63SDavid du Colombier void reboot(void*, void*, ulong); 2878ccd4a63SDavid du Colombier void relocateseg(Segment*, ulong); 2888ccd4a63SDavid du Colombier void renameuser(char*, char*); 2898ccd4a63SDavid du Colombier void resched(char*); 2908ccd4a63SDavid du Colombier void resrcwait(char*); 2918ccd4a63SDavid du Colombier int return0(void*); 2928ccd4a63SDavid du Colombier void rlock(RWlock*); 2938ccd4a63SDavid du Colombier long rtctime(void); 2948ccd4a63SDavid du Colombier void runlock(RWlock*); 2958ccd4a63SDavid du Colombier Proc* runproc(void); 2968ccd4a63SDavid du Colombier void savefpregs(FPsave*); 2978ccd4a63SDavid du Colombier extern void (*saveintrts)(void); 2988ccd4a63SDavid du Colombier void sched(void); 2998ccd4a63SDavid du Colombier void scheddump(void); 3008ccd4a63SDavid du Colombier void schedinit(void); 3018ccd4a63SDavid du Colombier extern void (*screenputs)(char*, int); 3028ccd4a63SDavid du Colombier long seconds(void); 3038ccd4a63SDavid du Colombier ulong segattach(Proc*, ulong, char *, ulong, ulong); 3048ccd4a63SDavid du Colombier void segclock(ulong); 3058ccd4a63SDavid du Colombier void segpage(Segment*, Page*); 3068ccd4a63SDavid du Colombier void setkernur(Ureg*, Proc*); 3078ccd4a63SDavid du Colombier int setlabel(Label*); 308*ec59a3ddSDavid du Colombier void setmalloctag(void*, uintptr); 3098ccd4a63SDavid du Colombier void setrealloctag(void*, ulong); 3108ccd4a63SDavid du Colombier void setregisters(Ureg*, char*, char*, int); 3118ccd4a63SDavid du Colombier void setswapchan(Chan*); 312*ec59a3ddSDavid du Colombier long showfilewrite(char*, int); 3138ccd4a63SDavid du Colombier char* skipslash(char*); 3148ccd4a63SDavid du Colombier void sleep(Rendez*, int(*)(void*), void*); 3158ccd4a63SDavid du Colombier void* smalloc(ulong); 3168ccd4a63SDavid du Colombier int splhi(void); 3178ccd4a63SDavid du Colombier int spllo(void); 3188ccd4a63SDavid du Colombier void splx(int); 3198ccd4a63SDavid du Colombier void splxpc(int); 3208ccd4a63SDavid du Colombier char* srvname(Chan*); 3218ccd4a63SDavid du Colombier int swapcount(ulong); 3228ccd4a63SDavid du Colombier int swapfull(void); 3238ccd4a63SDavid du Colombier void swapinit(void); 3248ccd4a63SDavid du Colombier void timeradd(Timer*); 3258ccd4a63SDavid du Colombier void timerdel(Timer*); 3268ccd4a63SDavid du Colombier void timersinit(void); 3278ccd4a63SDavid du Colombier void timerintr(Ureg*, uvlong); 3288ccd4a63SDavid du Colombier void timerset(uvlong); 3298ccd4a63SDavid du Colombier ulong tk2ms(ulong); 3308ccd4a63SDavid du Colombier #define TK2MS(x) ((x)*(1000/HZ)) 3318ccd4a63SDavid du Colombier vlong todget(vlong*); 3328ccd4a63SDavid du Colombier void todfix(void); 3338ccd4a63SDavid du Colombier void todsetfreq(vlong); 3348ccd4a63SDavid du Colombier void todinit(void); 3358ccd4a63SDavid du Colombier void todset(vlong, vlong, int); 3368ccd4a63SDavid du Colombier Block* trimblock(Block*, int, int); 3378ccd4a63SDavid du Colombier void tsleep(Rendez*, int (*)(void*), void*, int); 3388ccd4a63SDavid du Colombier int uartctl(Uart*, char*); 3398ccd4a63SDavid du Colombier int uartgetc(void); 3408ccd4a63SDavid du Colombier void uartkick(void*); 3418ccd4a63SDavid du Colombier void uartmouse(Uart*, int (*)(Queue*, int), int); 3428ccd4a63SDavid du Colombier void uartputc(int); 3438ccd4a63SDavid du Colombier void uartputs(char*, int); 3448ccd4a63SDavid du Colombier void uartrecv(Uart*, char); 3458ccd4a63SDavid du Colombier Uart* uartsetup(Uart*); 3468ccd4a63SDavid du Colombier int uartstageoutput(Uart*); 3478ccd4a63SDavid du Colombier void unbreak(Proc*); 3488ccd4a63SDavid du Colombier void uncachepage(Page*); 3498ccd4a63SDavid du Colombier long unionread(Chan*, void*, long); 3508ccd4a63SDavid du Colombier void unlock(Lock*); 3518ccd4a63SDavid du Colombier Proc** uploc(void); 3528ccd4a63SDavid du Colombier void userinit(void); 3538ccd4a63SDavid du Colombier ulong userpc(void); 3548ccd4a63SDavid du Colombier long userwrite(char*, int); 3558ccd4a63SDavid du Colombier #define validaddr(a, b, c) 3568ccd4a63SDavid du Colombier void validname(char*, int); 3578ccd4a63SDavid du Colombier void validstat(uchar*, int); 3588ccd4a63SDavid du Colombier void vcacheinval(Page*, ulong); 3598ccd4a63SDavid du Colombier void* vmemchr(void*, int, int); 3608ccd4a63SDavid du Colombier Proc* wakeup(Rendez*); 3618ccd4a63SDavid du Colombier int walk(Chan**, char**, int, int, int*); 3628ccd4a63SDavid du Colombier #define waserror() (setjmp(pwaserror()->buf)) 3638ccd4a63SDavid du Colombier void wlock(RWlock*); 3648ccd4a63SDavid du Colombier void wunlock(RWlock*); 3658ccd4a63SDavid du Colombier void* xalloc(ulong); 3668ccd4a63SDavid du Colombier void* xallocz(ulong, int); 3678ccd4a63SDavid du Colombier void xfree(void*); 3688ccd4a63SDavid du Colombier void xhole(ulong, ulong); 3698ccd4a63SDavid du Colombier void xinit(void); 3708ccd4a63SDavid du Colombier int xmerge(void*, void*); 3718ccd4a63SDavid du Colombier void* xspanalloc(ulong, int, ulong); 3728ccd4a63SDavid du Colombier void xsummary(void); 3738ccd4a63SDavid du Colombier void yield(void); 3748ccd4a63SDavid du Colombier Segment* data2txt(Segment*); 3758ccd4a63SDavid du Colombier Segment* dupseg(Segment**, int, int); 3768ccd4a63SDavid du Colombier Segment* newseg(int, ulong, ulong); 3778ccd4a63SDavid du Colombier Segment* seg(Proc*, ulong, int); 3788ccd4a63SDavid du Colombier ulong ticks(void); 3798ccd4a63SDavid du Colombier void osproc(Proc*); 3808ccd4a63SDavid du Colombier void osnewproc(Proc*); 3818ccd4a63SDavid du Colombier void procsleep(void); 3828ccd4a63SDavid du Colombier void procwakeup(Proc*); 3838ccd4a63SDavid du Colombier void osinit(void); 3848ccd4a63SDavid du Colombier void screeninit(void); 3858ccd4a63SDavid du Colombier extern void terminit(void); 3868ccd4a63SDavid du Colombier 387