1*8ccd4a63SDavid du Colombier #define ROUND(s, sz) (((s)+((sz)-1))&~((sz)-1)) 2*8ccd4a63SDavid du Colombier 3*8ccd4a63SDavid du Colombier void accounttime(void); 4*8ccd4a63SDavid du Colombier void addclock0link(void (*)(void), int); 5*8ccd4a63SDavid du Colombier int addphysseg(Physseg*); 6*8ccd4a63SDavid du Colombier void addbootfile(char*, uchar*, ulong); 7*8ccd4a63SDavid du Colombier Block* adjustblock(Block*, int); 8*8ccd4a63SDavid du Colombier void alarmkproc(void*); 9*8ccd4a63SDavid du Colombier Block* allocb(int); 10*8ccd4a63SDavid du Colombier int anyhigher(void); 11*8ccd4a63SDavid du Colombier int anyready(void); 12*8ccd4a63SDavid du Colombier Page* auxpage(void); 13*8ccd4a63SDavid du Colombier Block* bl2mem(uchar*, Block*, int); 14*8ccd4a63SDavid du Colombier int blocklen(Block*); 15*8ccd4a63SDavid du Colombier void callwithureg(void(*)(Ureg*)); 16*8ccd4a63SDavid du Colombier char* c2name(Chan*); 17*8ccd4a63SDavid du Colombier int cangetc(void*); 18*8ccd4a63SDavid du Colombier int canlock(Lock*); 19*8ccd4a63SDavid du Colombier int canpage(Proc*); 20*8ccd4a63SDavid du Colombier int canputc(void*); 21*8ccd4a63SDavid du Colombier int canqlock(QLock*); 22*8ccd4a63SDavid du Colombier int canrlock(RWlock*); 23*8ccd4a63SDavid du Colombier void chandevinit(void); 24*8ccd4a63SDavid du Colombier void chandevreset(void); 25*8ccd4a63SDavid du Colombier void chandevshutdown(void); 26*8ccd4a63SDavid du Colombier void chanfree(Chan*); 27*8ccd4a63SDavid du Colombier void chanrec(Mnt*); 28*8ccd4a63SDavid du Colombier void checkalarms(void); 29*8ccd4a63SDavid du Colombier void checkb(Block*, char*); 30*8ccd4a63SDavid du Colombier void cinit(void); 31*8ccd4a63SDavid du Colombier Chan* cclone(Chan*); 32*8ccd4a63SDavid du Colombier void cclose(Chan*); 33*8ccd4a63SDavid du Colombier char* clipread(void); 34*8ccd4a63SDavid du Colombier int clipwrite(char*); 35*8ccd4a63SDavid du Colombier void closeegrp(Egrp*); 36*8ccd4a63SDavid du Colombier void closefgrp(Fgrp*); 37*8ccd4a63SDavid du Colombier void closemount(Mount*); 38*8ccd4a63SDavid du Colombier void closepgrp(Pgrp*); 39*8ccd4a63SDavid du Colombier void closergrp(Rgrp*); 40*8ccd4a63SDavid du Colombier long clrfpintr(void); 41*8ccd4a63SDavid du Colombier void cmderror(Cmdbuf*, char*); 42*8ccd4a63SDavid du Colombier int cmount(Chan**, Chan*, int, char*); 43*8ccd4a63SDavid du Colombier void cnameclose(Cname*); 44*8ccd4a63SDavid du Colombier void confinit(void); 45*8ccd4a63SDavid du Colombier void confinit1(int); 46*8ccd4a63SDavid du Colombier int consactive(void); 47*8ccd4a63SDavid du Colombier extern void (*consdebug)(void); 48*8ccd4a63SDavid du Colombier void copen(Chan*); 49*8ccd4a63SDavid du Colombier Block* concatblock(Block*); 50*8ccd4a63SDavid du Colombier Block* copyblock(Block*, int); 51*8ccd4a63SDavid du Colombier void copypage(Page*, Page*); 52*8ccd4a63SDavid du Colombier int cread(Chan*, uchar*, int, vlong); 53*8ccd4a63SDavid du Colombier void cunmount(Chan*, Chan*); 54*8ccd4a63SDavid du Colombier void cupdate(Chan*, uchar*, int, vlong); 55*8ccd4a63SDavid du Colombier void cwrite(Chan*, uchar*, int, vlong); 56*8ccd4a63SDavid du Colombier ulong dbgpc(Proc*); 57*8ccd4a63SDavid du Colombier int decref(Ref*); 58*8ccd4a63SDavid du Colombier int decrypt(void*, void*, int); 59*8ccd4a63SDavid du Colombier void delay(int); 60*8ccd4a63SDavid du Colombier Chan* devattach(int, char*); 61*8ccd4a63SDavid du Colombier Block* devbread(Chan*, long, ulong); 62*8ccd4a63SDavid du Colombier long devbwrite(Chan*, Block*, ulong); 63*8ccd4a63SDavid du Colombier Chan* devclone(Chan*); 64*8ccd4a63SDavid du Colombier int devconfig(int, char *, DevConf *); 65*8ccd4a63SDavid du Colombier void devcreate(Chan*, char*, int, ulong); 66*8ccd4a63SDavid du Colombier void devdir(Chan*, Qid, char*, vlong, char*, long, Dir*); 67*8ccd4a63SDavid du Colombier long devdirread(Chan*, char*, long, Dirtab*, int, Devgen*); 68*8ccd4a63SDavid du Colombier Devgen devgen; 69*8ccd4a63SDavid du Colombier void devinit(void); 70*8ccd4a63SDavid du Colombier int devno(int, int); 71*8ccd4a63SDavid du Colombier Chan* devopen(Chan*, int, Dirtab*, int, Devgen*); 72*8ccd4a63SDavid du Colombier void devpermcheck(char*, ulong, int); 73*8ccd4a63SDavid du Colombier void devpower(int); 74*8ccd4a63SDavid du Colombier void devremove(Chan*); 75*8ccd4a63SDavid du Colombier void devreset(void); 76*8ccd4a63SDavid du Colombier void devshutdown(void); 77*8ccd4a63SDavid du Colombier int devstat(Chan*, uchar*, int, Dirtab*, int, Devgen*); 78*8ccd4a63SDavid du Colombier Walkqid* devwalk(Chan*, Chan*, char**, int, Dirtab*, int, Devgen*); 79*8ccd4a63SDavid du Colombier int devwstat(Chan*, uchar*, int); 80*8ccd4a63SDavid du Colombier void drawactive(int); 81*8ccd4a63SDavid du Colombier void drawcmap(void); 82*8ccd4a63SDavid du Colombier int drawcanqlock(void); 83*8ccd4a63SDavid du Colombier void drawqlock(void); 84*8ccd4a63SDavid du Colombier void drawqunlock(void); 85*8ccd4a63SDavid du Colombier void dumpaproc(Proc*); 86*8ccd4a63SDavid du Colombier void dumpqueues(void); 87*8ccd4a63SDavid du Colombier void dumpregs(Ureg*); 88*8ccd4a63SDavid du Colombier void dumpstack(void); 89*8ccd4a63SDavid du Colombier Fgrp* dupfgrp(Fgrp*); 90*8ccd4a63SDavid du Colombier void duppage(Page*); 91*8ccd4a63SDavid du Colombier void dupswap(Page*); 92*8ccd4a63SDavid du Colombier int emptystr(char*); 93*8ccd4a63SDavid du Colombier int encrypt(void*, void*, int); 94*8ccd4a63SDavid du Colombier void envcpy(Egrp*, Egrp*); 95*8ccd4a63SDavid du Colombier int eqchan(Chan*, Chan*, int); 96*8ccd4a63SDavid du Colombier int eqqid(Qid, Qid); 97*8ccd4a63SDavid du Colombier void error(char*); 98*8ccd4a63SDavid du Colombier long execregs(ulong, ulong, ulong); 99*8ccd4a63SDavid du Colombier void exhausted(char*); 100*8ccd4a63SDavid du Colombier void exit(int); 101*8ccd4a63SDavid du Colombier uvlong fastticks(uvlong*); 102*8ccd4a63SDavid du Colombier int fault(ulong, int); 103*8ccd4a63SDavid du Colombier void fdclose(int, int); 104*8ccd4a63SDavid du Colombier Chan* fdtochan(int, int, int, int); 105*8ccd4a63SDavid du Colombier int fixfault(Segment*, ulong, int, int); 106*8ccd4a63SDavid du Colombier void flushmmu(void); 107*8ccd4a63SDavid du Colombier void forkchild(Proc*, Ureg*); 108*8ccd4a63SDavid du Colombier void forkret(void); 109*8ccd4a63SDavid du Colombier void free(void*); 110*8ccd4a63SDavid du Colombier void freeb(Block*); 111*8ccd4a63SDavid du Colombier void freeblist(Block*); 112*8ccd4a63SDavid du Colombier int freebroken(void); 113*8ccd4a63SDavid du Colombier void freepte(Segment*, Pte*); 114*8ccd4a63SDavid du Colombier void freesegs(int); 115*8ccd4a63SDavid du Colombier void freesession(Session*); 116*8ccd4a63SDavid du Colombier ulong getmalloctag(void*); 117*8ccd4a63SDavid du Colombier ulong getrealloctag(void*); 118*8ccd4a63SDavid du Colombier void gotolabel(Label*); 119*8ccd4a63SDavid du Colombier char* getconfenv(void); 120*8ccd4a63SDavid du Colombier int haswaitq(void*); 121*8ccd4a63SDavid du Colombier long hostdomainwrite(char*, int); 122*8ccd4a63SDavid du Colombier long hostownerwrite(char*, int); 123*8ccd4a63SDavid du Colombier void hzsched(void); 124*8ccd4a63SDavid du Colombier void iallocinit(void); 125*8ccd4a63SDavid du Colombier Block* iallocb(int); 126*8ccd4a63SDavid du Colombier void iallocsummary(void); 127*8ccd4a63SDavid du Colombier long ibrk(ulong, int); 128*8ccd4a63SDavid du Colombier void ilock(Lock*); 129*8ccd4a63SDavid du Colombier void iunlock(Lock*); 130*8ccd4a63SDavid du Colombier int incref(Ref*); 131*8ccd4a63SDavid du Colombier void initseg(void); 132*8ccd4a63SDavid du Colombier int iprint(char*, ...); 133*8ccd4a63SDavid du Colombier void isdir(Chan*); 134*8ccd4a63SDavid du Colombier int iseve(void); 135*8ccd4a63SDavid du Colombier #define islo() (0) 136*8ccd4a63SDavid du Colombier Segment* isoverlap(Proc*, ulong, int); 137*8ccd4a63SDavid du Colombier int ispages(void*); 138*8ccd4a63SDavid du Colombier int isphysseg(char*); 139*8ccd4a63SDavid du Colombier void ixsummary(void); 140*8ccd4a63SDavid du Colombier void kbdclock(void); 141*8ccd4a63SDavid du Colombier int kbdcr2nl(Queue*, int); 142*8ccd4a63SDavid du Colombier int kbdputc(Queue*, int); 143*8ccd4a63SDavid du Colombier void kbdrepeat(int); 144*8ccd4a63SDavid du Colombier long keyread(char*, int, long); 145*8ccd4a63SDavid du Colombier void kickpager(void); 146*8ccd4a63SDavid du Colombier void killbig(void); 147*8ccd4a63SDavid du Colombier int kproc(char*, void(*)(void*), void*); 148*8ccd4a63SDavid du Colombier void kprocchild(Proc*, void (*)(void*), void*); 149*8ccd4a63SDavid du Colombier extern void (*kproftimer)(ulong); 150*8ccd4a63SDavid du Colombier void ksetenv(char*, char*, int); 151*8ccd4a63SDavid du Colombier void kstrcpy(char*, char*, int); 152*8ccd4a63SDavid du Colombier void kstrdup(char**, char*); 153*8ccd4a63SDavid du Colombier long latin1(Rune*, int); 154*8ccd4a63SDavid du Colombier void lock(Lock*); 155*8ccd4a63SDavid du Colombier void lockinit(void); 156*8ccd4a63SDavid du Colombier void logopen(Log*); 157*8ccd4a63SDavid du Colombier void logclose(Log*); 158*8ccd4a63SDavid du Colombier char* logctl(Log*, int, char**, Logflag*); 159*8ccd4a63SDavid du Colombier void logn(Log*, int, void*, int); 160*8ccd4a63SDavid du Colombier long logread(Log*, void*, ulong, long); 161*8ccd4a63SDavid du Colombier void log(Log*, int, char*, ...); 162*8ccd4a63SDavid du Colombier Cmdtab* lookupcmd(Cmdbuf*, Cmdtab*, int); 163*8ccd4a63SDavid du Colombier void machinit(void); 164*8ccd4a63SDavid du Colombier void* mallocz(ulong, int); 165*8ccd4a63SDavid du Colombier #define malloc kmalloc 166*8ccd4a63SDavid du Colombier void* malloc(ulong); 167*8ccd4a63SDavid du Colombier void mallocsummary(void); 168*8ccd4a63SDavid du Colombier Block* mem2bl(uchar*, int); 169*8ccd4a63SDavid du Colombier void mfreeseg(Segment*, ulong, int); 170*8ccd4a63SDavid du Colombier void microdelay(int); 171*8ccd4a63SDavid du Colombier void mkqid(Qid*, vlong, ulong, int); 172*8ccd4a63SDavid du Colombier void mmurelease(Proc*); 173*8ccd4a63SDavid du Colombier void mmuswitch(Proc*); 174*8ccd4a63SDavid du Colombier Chan* mntauth(Chan*, char*); 175*8ccd4a63SDavid du Colombier void mntdump(void); 176*8ccd4a63SDavid du Colombier long mntversion(Chan*, char*, int, int); 177*8ccd4a63SDavid du Colombier void mountfree(Mount*); 178*8ccd4a63SDavid du Colombier ulong ms2tk(ulong); 179*8ccd4a63SDavid du Colombier ulong msize(void*); 180*8ccd4a63SDavid du Colombier ulong ms2tk(ulong); 181*8ccd4a63SDavid du Colombier uvlong ms2fastticks(ulong); 182*8ccd4a63SDavid du Colombier void muxclose(Mnt*); 183*8ccd4a63SDavid du Colombier Chan* namec(char*, int, int, ulong); 184*8ccd4a63SDavid du Colombier Chan* newchan(void); 185*8ccd4a63SDavid du Colombier int newfd(Chan*); 186*8ccd4a63SDavid du Colombier Mhead* newmhead(Chan*); 187*8ccd4a63SDavid du Colombier Mount* newmount(Mhead*, Chan*, int, char*); 188*8ccd4a63SDavid du Colombier Page* newpage(int, Segment **, ulong); 189*8ccd4a63SDavid du Colombier Pgrp* newpgrp(void); 190*8ccd4a63SDavid du Colombier Rgrp* newrgrp(void); 191*8ccd4a63SDavid du Colombier Proc* newproc(void); 192*8ccd4a63SDavid du Colombier char* nextelem(char*, char*); 193*8ccd4a63SDavid du Colombier void nexterror(void); 194*8ccd4a63SDavid du Colombier Cname* newcname(char*); 195*8ccd4a63SDavid du Colombier int notify(Ureg*); 196*8ccd4a63SDavid du Colombier int nrand(int); 197*8ccd4a63SDavid du Colombier int okaddr(ulong, ulong, int); 198*8ccd4a63SDavid du Colombier int openmode(ulong); 199*8ccd4a63SDavid du Colombier void oserrstr(void); 200*8ccd4a63SDavid du Colombier void oserror(void); 201*8ccd4a63SDavid du Colombier Block* packblock(Block*); 202*8ccd4a63SDavid du Colombier Block* padblock(Block*, int); 203*8ccd4a63SDavid du Colombier void pagechainhead(Page*); 204*8ccd4a63SDavid du Colombier void pageinit(void); 205*8ccd4a63SDavid du Colombier void pagersummary(void); 206*8ccd4a63SDavid du Colombier void panic(char*, ...); 207*8ccd4a63SDavid du Colombier Cmdbuf* parsecmd(char *a, int n); 208*8ccd4a63SDavid du Colombier ulong perfticks(void); 209*8ccd4a63SDavid du Colombier void pexit(char*, int); 210*8ccd4a63SDavid du Colombier int preempted(void); 211*8ccd4a63SDavid du Colombier void printinit(void); 212*8ccd4a63SDavid du Colombier int procindex(ulong); 213*8ccd4a63SDavid du Colombier void pgrpcpy(Pgrp*, Pgrp*); 214*8ccd4a63SDavid du Colombier void pgrpnote(ulong, char*, long, int); 215*8ccd4a63SDavid du Colombier Pgrp* pgrptab(int); 216*8ccd4a63SDavid du Colombier void pio(Segment *, ulong, ulong, Page **); 217*8ccd4a63SDavid du Colombier #define poperror() up->nerrlab-- 218*8ccd4a63SDavid du Colombier void portclock(Ureg*); 219*8ccd4a63SDavid du Colombier int postnote(Proc*, int, char*, int); 220*8ccd4a63SDavid du Colombier int pprint(char*, ...); 221*8ccd4a63SDavid du Colombier void prflush(void); 222*8ccd4a63SDavid du Colombier ulong procalarm(ulong); 223*8ccd4a63SDavid du Colombier int proccounter(char *name); 224*8ccd4a63SDavid du Colombier void procctl(Proc*); 225*8ccd4a63SDavid du Colombier void procdump(void); 226*8ccd4a63SDavid du Colombier int procfdprint(Chan*, int, int, char*, int); 227*8ccd4a63SDavid du Colombier void procinit0(void); 228*8ccd4a63SDavid du Colombier void procflushseg(Segment*); 229*8ccd4a63SDavid du Colombier void procpriority(Proc*, int, int); 230*8ccd4a63SDavid du Colombier Proc* proctab(int); 231*8ccd4a63SDavid du Colombier void procwired(Proc*, int); 232*8ccd4a63SDavid du Colombier Pte* ptealloc(void); 233*8ccd4a63SDavid du Colombier Pte* ptecpy(Pte*); 234*8ccd4a63SDavid du Colombier int pullblock(Block**, int); 235*8ccd4a63SDavid du Colombier Block* pullupblock(Block*, int); 236*8ccd4a63SDavid du Colombier Block* pullupqueue(Queue*, int); 237*8ccd4a63SDavid du Colombier void putmhead(Mhead*); 238*8ccd4a63SDavid du Colombier void putmmu(ulong, ulong, Page*); 239*8ccd4a63SDavid du Colombier void putpage(Page*); 240*8ccd4a63SDavid du Colombier void putseg(Segment*); 241*8ccd4a63SDavid du Colombier void putstr(char*); 242*8ccd4a63SDavid du Colombier void putstrn(char*, int); 243*8ccd4a63SDavid du Colombier void putswap(Page*); 244*8ccd4a63SDavid du Colombier ulong pwait(Waitmsg*); 245*8ccd4a63SDavid du Colombier Label* pwaserror(void); 246*8ccd4a63SDavid du Colombier void qaddlist(Queue*, Block*); 247*8ccd4a63SDavid du Colombier Block* qbread(Queue*, int); 248*8ccd4a63SDavid du Colombier long qbwrite(Queue*, Block*); 249*8ccd4a63SDavid du Colombier Queue* qbypass(void (*)(void*, Block*), void*); 250*8ccd4a63SDavid du Colombier int qcanread(Queue*); 251*8ccd4a63SDavid du Colombier void qclose(Queue*); 252*8ccd4a63SDavid du Colombier int qconsume(Queue*, void*, int); 253*8ccd4a63SDavid du Colombier Block* qcopy(Queue*, int, ulong); 254*8ccd4a63SDavid du Colombier int qdiscard(Queue*, int); 255*8ccd4a63SDavid du Colombier void qflush(Queue*); 256*8ccd4a63SDavid du Colombier void qfree(Queue*); 257*8ccd4a63SDavid du Colombier int qfull(Queue*); 258*8ccd4a63SDavid du Colombier Block* qget(Queue*); 259*8ccd4a63SDavid du Colombier void qhangup(Queue*, char*); 260*8ccd4a63SDavid du Colombier int qisclosed(Queue*); 261*8ccd4a63SDavid du Colombier void qinit(void); 262*8ccd4a63SDavid du Colombier int qiwrite(Queue*, void*, int); 263*8ccd4a63SDavid du Colombier int qlen(Queue*); 264*8ccd4a63SDavid du Colombier void qlock(QLock*); 265*8ccd4a63SDavid du Colombier Queue* qopen(int, int, void (*)(void*), void*); 266*8ccd4a63SDavid du Colombier int qpass(Queue*, Block*); 267*8ccd4a63SDavid du Colombier int qpassnolim(Queue*, Block*); 268*8ccd4a63SDavid du Colombier int qproduce(Queue*, void*, int); 269*8ccd4a63SDavid du Colombier void qputback(Queue*, Block*); 270*8ccd4a63SDavid du Colombier long qread(Queue*, void*, int); 271*8ccd4a63SDavid du Colombier Block* qremove(Queue*); 272*8ccd4a63SDavid du Colombier void qreopen(Queue*); 273*8ccd4a63SDavid du Colombier void qsetlimit(Queue*, int); 274*8ccd4a63SDavid du Colombier void qunlock(QLock*); 275*8ccd4a63SDavid du Colombier int qwindow(Queue*); 276*8ccd4a63SDavid du Colombier int qwrite(Queue*, void*, int); 277*8ccd4a63SDavid du Colombier void qnoblock(Queue*, int); 278*8ccd4a63SDavid du Colombier int rand(void); 279*8ccd4a63SDavid du Colombier void randominit(void); 280*8ccd4a63SDavid du Colombier ulong randomread(void*, ulong); 281*8ccd4a63SDavid du Colombier void rdb(void); 282*8ccd4a63SDavid du Colombier int readnum(ulong, char*, ulong, ulong, int); 283*8ccd4a63SDavid du Colombier int readstr(ulong, char*, ulong, char*); 284*8ccd4a63SDavid du Colombier void ready(Proc*); 285*8ccd4a63SDavid du Colombier void rebootcmd(int, char**); 286*8ccd4a63SDavid du Colombier void reboot(void*, void*, ulong); 287*8ccd4a63SDavid du Colombier void relocateseg(Segment*, ulong); 288*8ccd4a63SDavid du Colombier void renameuser(char*, char*); 289*8ccd4a63SDavid du Colombier void resched(char*); 290*8ccd4a63SDavid du Colombier void resrcwait(char*); 291*8ccd4a63SDavid du Colombier int return0(void*); 292*8ccd4a63SDavid du Colombier void rlock(RWlock*); 293*8ccd4a63SDavid du Colombier long rtctime(void); 294*8ccd4a63SDavid du Colombier void runlock(RWlock*); 295*8ccd4a63SDavid du Colombier Proc* runproc(void); 296*8ccd4a63SDavid du Colombier void savefpregs(FPsave*); 297*8ccd4a63SDavid du Colombier extern void (*saveintrts)(void); 298*8ccd4a63SDavid du Colombier void sched(void); 299*8ccd4a63SDavid du Colombier void scheddump(void); 300*8ccd4a63SDavid du Colombier void schedinit(void); 301*8ccd4a63SDavid du Colombier extern void (*screenputs)(char*, int); 302*8ccd4a63SDavid du Colombier long seconds(void); 303*8ccd4a63SDavid du Colombier ulong segattach(Proc*, ulong, char *, ulong, ulong); 304*8ccd4a63SDavid du Colombier void segclock(ulong); 305*8ccd4a63SDavid du Colombier void segpage(Segment*, Page*); 306*8ccd4a63SDavid du Colombier void setkernur(Ureg*, Proc*); 307*8ccd4a63SDavid du Colombier int setlabel(Label*); 308*8ccd4a63SDavid du Colombier void setmalloctag(void*, ulong); 309*8ccd4a63SDavid du Colombier void setrealloctag(void*, ulong); 310*8ccd4a63SDavid du Colombier void setregisters(Ureg*, char*, char*, int); 311*8ccd4a63SDavid du Colombier void setswapchan(Chan*); 312*8ccd4a63SDavid du Colombier char* skipslash(char*); 313*8ccd4a63SDavid du Colombier void sleep(Rendez*, int(*)(void*), void*); 314*8ccd4a63SDavid du Colombier void* smalloc(ulong); 315*8ccd4a63SDavid du Colombier int splhi(void); 316*8ccd4a63SDavid du Colombier int spllo(void); 317*8ccd4a63SDavid du Colombier void splx(int); 318*8ccd4a63SDavid du Colombier void splxpc(int); 319*8ccd4a63SDavid du Colombier char* srvname(Chan*); 320*8ccd4a63SDavid du Colombier int swapcount(ulong); 321*8ccd4a63SDavid du Colombier int swapfull(void); 322*8ccd4a63SDavid du Colombier void swapinit(void); 323*8ccd4a63SDavid du Colombier void timeradd(Timer*); 324*8ccd4a63SDavid du Colombier void timerdel(Timer*); 325*8ccd4a63SDavid du Colombier void timersinit(void); 326*8ccd4a63SDavid du Colombier void timerintr(Ureg*, uvlong); 327*8ccd4a63SDavid du Colombier void timerset(uvlong); 328*8ccd4a63SDavid du Colombier ulong tk2ms(ulong); 329*8ccd4a63SDavid du Colombier #define TK2MS(x) ((x)*(1000/HZ)) 330*8ccd4a63SDavid du Colombier vlong todget(vlong*); 331*8ccd4a63SDavid du Colombier void todfix(void); 332*8ccd4a63SDavid du Colombier void todsetfreq(vlong); 333*8ccd4a63SDavid du Colombier void todinit(void); 334*8ccd4a63SDavid du Colombier void todset(vlong, vlong, int); 335*8ccd4a63SDavid du Colombier Block* trimblock(Block*, int, int); 336*8ccd4a63SDavid du Colombier void tsleep(Rendez*, int (*)(void*), void*, int); 337*8ccd4a63SDavid du Colombier int uartctl(Uart*, char*); 338*8ccd4a63SDavid du Colombier int uartgetc(void); 339*8ccd4a63SDavid du Colombier void uartkick(void*); 340*8ccd4a63SDavid du Colombier void uartmouse(Uart*, int (*)(Queue*, int), int); 341*8ccd4a63SDavid du Colombier void uartputc(int); 342*8ccd4a63SDavid du Colombier void uartputs(char*, int); 343*8ccd4a63SDavid du Colombier void uartrecv(Uart*, char); 344*8ccd4a63SDavid du Colombier Uart* uartsetup(Uart*); 345*8ccd4a63SDavid du Colombier int uartstageoutput(Uart*); 346*8ccd4a63SDavid du Colombier void unbreak(Proc*); 347*8ccd4a63SDavid du Colombier void uncachepage(Page*); 348*8ccd4a63SDavid du Colombier long unionread(Chan*, void*, long); 349*8ccd4a63SDavid du Colombier void unlock(Lock*); 350*8ccd4a63SDavid du Colombier Proc** uploc(void); 351*8ccd4a63SDavid du Colombier void userinit(void); 352*8ccd4a63SDavid du Colombier ulong userpc(void); 353*8ccd4a63SDavid du Colombier long userwrite(char*, int); 354*8ccd4a63SDavid du Colombier #define validaddr(a, b, c) 355*8ccd4a63SDavid du Colombier void validname(char*, int); 356*8ccd4a63SDavid du Colombier void validstat(uchar*, int); 357*8ccd4a63SDavid du Colombier void vcacheinval(Page*, ulong); 358*8ccd4a63SDavid du Colombier void* vmemchr(void*, int, int); 359*8ccd4a63SDavid du Colombier Proc* wakeup(Rendez*); 360*8ccd4a63SDavid du Colombier int walk(Chan**, char**, int, int, int*); 361*8ccd4a63SDavid du Colombier #define waserror() (setjmp(pwaserror()->buf)) 362*8ccd4a63SDavid du Colombier void wlock(RWlock*); 363*8ccd4a63SDavid du Colombier void wunlock(RWlock*); 364*8ccd4a63SDavid du Colombier void* xalloc(ulong); 365*8ccd4a63SDavid du Colombier void* xallocz(ulong, int); 366*8ccd4a63SDavid du Colombier void xfree(void*); 367*8ccd4a63SDavid du Colombier void xhole(ulong, ulong); 368*8ccd4a63SDavid du Colombier void xinit(void); 369*8ccd4a63SDavid du Colombier int xmerge(void*, void*); 370*8ccd4a63SDavid du Colombier void* xspanalloc(ulong, int, ulong); 371*8ccd4a63SDavid du Colombier void xsummary(void); 372*8ccd4a63SDavid du Colombier void yield(void); 373*8ccd4a63SDavid du Colombier Segment* data2txt(Segment*); 374*8ccd4a63SDavid du Colombier Segment* dupseg(Segment**, int, int); 375*8ccd4a63SDavid du Colombier Segment* newseg(int, ulong, ulong); 376*8ccd4a63SDavid du Colombier Segment* seg(Proc*, ulong, int); 377*8ccd4a63SDavid du Colombier void hnputv(void*, vlong); 378*8ccd4a63SDavid du Colombier void hnputl(void*, ulong); 379*8ccd4a63SDavid du Colombier void hnputs(void*, ushort); 380*8ccd4a63SDavid du Colombier vlong nhgetv(void*); 381*8ccd4a63SDavid du Colombier ulong nhgetl(void*); 382*8ccd4a63SDavid du Colombier ushort nhgets(void*); 383*8ccd4a63SDavid du Colombier ulong ticks(void); 384*8ccd4a63SDavid du Colombier void osproc(Proc*); 385*8ccd4a63SDavid du Colombier void osnewproc(Proc*); 386*8ccd4a63SDavid du Colombier void procsleep(void); 387*8ccd4a63SDavid du Colombier void procwakeup(Proc*); 388*8ccd4a63SDavid du Colombier void osinit(void); 389*8ccd4a63SDavid du Colombier void screeninit(void); 390*8ccd4a63SDavid du Colombier extern void terminit(void); 391*8ccd4a63SDavid du Colombier 392