1 ulong FPcontrol(ulong,ulong); 2 ulong FPstatus(ulong,ulong); 3 void FPsave(void*); 4 void FPrestore(void*); 5 void Sleep(Rendez*, int (*)(void*), void*); 6 int Wakeup(Rendez*); 7 void FPinit(void); 8 void addprog(Proc*); 9 Block* adjustblock(Block*, int); 10 Block* allocb(int); 11 Block* bl2mem(uchar*, Block*, int); 12 int blocklen(Block*); 13 char* c2name(Chan*); 14 int canlock(Lock*); 15 int canqlock(QLock*); 16 void cclose(Chan*); 17 void chandevinit(void); 18 void chanfree(Chan*); 19 Dir* chandirstat(Chan*); 20 void cinit(void); 21 char* clipread(void); 22 int clipwrite(char*); 23 void (*coherence)(void); 24 void copen(Chan*); 25 void cmderror(Cmdbuf*, char*); 26 Block* concatblock(Block*); 27 int cread(Chan*, uchar*, int, vlong); 28 void cwrite(Chan*, uchar*, int, vlong); 29 Chan* cunique(Chan*); 30 void cupdate(Chan*, uchar*, int, vlong); 31 char* cleanname(char*); 32 Chan* cclone(Chan*); 33 void closeegrp(Egrp*); 34 void closefgrp(Fgrp*); 35 void closepgrp(Pgrp*); 36 void closesigs(Skeyset*); 37 int cmount(Chan*, Chan*, int, char*); 38 Chan* createdir(Chan*, Mhead*); 39 void cunmount(Chan*, Chan*); 40 int decref(Ref*); 41 long devbwrite(Chan*, Block*, ulong); 42 void devcreate(Chan*, char*, int, ulong); 43 void devdir(Chan*, Qid, char*, long, char*, long, Dir*); 44 long devdirread(Chan*, char*, long, Dirtab*, int, Devgen*); 45 void devinit(void); 46 int devno(int, int); 47 Dev* devbyname(char*); 48 void devpermcheck(char*, ulong, int); 49 void devremove(Chan*); 50 int devstat(Chan*, uchar*, int, Dirtab*, int, Devgen*); 51 long devtabread(Chan*, void*, long, vlong); 52 int devwstat(Chan*, uchar*, int); 53 Chan* devattach(int, char*); 54 Block* devbread(Chan*, long, ulong); 55 Chan* devclone(Chan*); 56 Devgen devgen; 57 Chan* devopen(Chan*, int, Dirtab*, int, Devgen*); 58 Walkqid* devwalk(Chan*, Chan*, char**, int, Dirtab*, int, Devgen*); 59 void disfault(void*, char*); 60 void disinit(void*); 61 int domount(Chan**, Mhead**); 62 void drawqlock(void); 63 void drawqunlock(void); 64 Fgrp* dupfgrp(Fgrp*); 65 void egrpcpy(Egrp*, Egrp*); 66 int emptystr(char*); 67 void emuinit(void*); 68 int eqchan(Chan*, Chan*, int); 69 int eqqid(Qid, Qid); 70 void error(char*); 71 void errorf(char*, ...); 72 #pragma varargck argpos errorf 1 73 void excinit(void); 74 void exhausted(char*); 75 int export(int, char*, int); 76 Chan* fdtochan(Fgrp*, int, int, int, int); 77 int findmount(Chan**, Mhead**, int, int, Qid); 78 void freeb(Block*); 79 void freeblist(Block*); 80 void freeskey(Signerkey*); 81 ulong getcallerpc(void*); 82 ulong getFPcontrol(void); 83 ulong getFPstatus(void); 84 void gkbdputc(Queue*, int); 85 int incref(Ref*); 86 int iprint(char*, ...); 87 void isdir(Chan*); 88 int isdotdot(char*); 89 int iseve(void); 90 int kannounce(char*, char*); 91 int kdial(char*, char*, char*, int*); 92 void kproc(char*, void (*)(void*), void*, int); 93 void kprocinit(Proc*); 94 int kfgrpclose(Fgrp*, int); 95 void ksetenv(char*, char*, int); 96 void kstrcpy(char*, char*, int); 97 void kstrdup(char**, char*); 98 long latin1(uchar*, int); 99 void libinit(char*); 100 void links(void); 101 void lock(Lock*); 102 Cmdtab* lookupcmd(Cmdbuf*, Cmdtab*, int); 103 Block* mem2bl(uchar*, int); 104 int memusehigh(void); 105 int memlow(void); 106 void mkqid(Qid*, vlong, ulong, int); 107 Qid mkuqid(Chan*, Uqid*); 108 Chan* mntauth(Chan*, char*); 109 long mntversion(Chan*, char*, int, int); 110 void mountfree(Mount*); 111 void mousetrack(int, int, int, int); 112 void muxclose(Mnt*); 113 Chan* namec(char*, int, int, ulong); 114 Chan* newchan(void); 115 Cname* newcname(char*); 116 Egrp* newegrp(void); 117 Fgrp* newfgrp(Fgrp*); 118 Mount* newmount(Mhead*, Chan*, int, char*); 119 Pgrp* newpgrp(void); 120 Proc* newproc(void); 121 void nexterror(void); 122 void nofence(void); 123 void notkilled(void); 124 int openmode(ulong); 125 void osblock(void); 126 void* oscmd(char**, int, char*, int*); 127 int oscmdwait(void*, char*, int); 128 int oscmdkill(void*); 129 void oscmdfree(void*); 130 void oserror(void); 131 void oserrstr(char*, uint); 132 void oslongjmp(void*, osjmpbuf, int); 133 long osmillisec(void); 134 int osmillisleep(ulong); 135 void osready(Proc*); 136 int limbosleep(ulong); 137 vlong osusectime(void); 138 Block* packblock(Block*); 139 Block* padblock(Block*, int); 140 void panic(char*, ...); 141 Cmdbuf* parsecmd(char*, int); 142 void pexit(char*, int); 143 void pgrpcpy(Pgrp*, Pgrp*); 144 int progfdprint(Chan*, int, int, char*, int); 145 void putenvq(char*, char*, int); 146 void putenvqv(char*, char**, int, int); 147 void putmhead(Mhead*); 148 Block* pullupblock(Block*, int); 149 Block* pullupqueue(Queue*, int); 150 void qaddlist(Queue*, Block*); 151 Block* qbread(Queue*, int); 152 long qbwrite(Queue*, Block*); 153 Queue* qbypass(void (*)(void*, Block*), void*); 154 int qcanread(Queue*); 155 void qclose(Queue*); 156 int qisclosed(Queue*); 157 int qconsume(Queue*, void*, int); 158 Block* qcopy(Queue*, int, ulong); 159 int qdiscard(Queue*, int); 160 void qflush(Queue*); 161 void qfree(Queue*); 162 int qfull(Queue*); 163 Block* qget(Queue*); 164 void qhangup(Queue*, char*); 165 int qiwrite(Queue*, void*, int); 166 int qlen(Queue*); 167 void qlock(QLock*); 168 void qnoblock(Queue*, int); 169 Queue* qopen(int, int, void (*)(void*), void*); 170 int qpass(Queue*, Block*); 171 int qproduce(Queue*, void*, int); 172 void qputback(Queue*, Block*); 173 long qread(Queue*, void*, int); 174 Block* qremove(Queue*); 175 void qreopen(Queue*); 176 void qsetlimit(Queue*, int); 177 int qstate(Queue*); 178 void qunlock(QLock*); 179 int qwindow(Queue*); 180 int qwrite(Queue*, void*, int); 181 ulong randomread(void *xp, ulong n); 182 void randominit(void); 183 int readkbd(void); 184 int readnum(ulong, char*, ulong, ulong, int); 185 int readnum_vlong(ulong, char*, ulong, vlong, int); 186 int readstr(ulong, char*, ulong, char*); 187 #define seconds() (osusectime()/1000000) 188 void seterror(char*, ...); 189 void setid(char*, int); 190 void setpointer(int, int); 191 char* skipslash(char*); 192 void srvrtinit(void); 193 void swiproc(Proc*, int); 194 Block* trimblock(Block*, int, int); 195 long unionread(Chan*, void*, long); 196 void unlock(Lock*); 197 Uqid* uqidalloc(Uqidtab*, Chan*); 198 void uqidinit(Uqidtab*); 199 void freeuqid(Uqidtab*, Uqid*); 200 void validname(char*, int); 201 void validstat(uchar*, int); 202 void validwstatname(char*); 203 void vmachine(void*); 204 int walk(Chan**, char**, int, int, int*); 205 void cleanexit(int); 206 void oshostintr(Proc*); 207 void osenter(void); 208 void osleave(void); 209 void oslopri(void); 210 void ospause(void); 211 void osyield(void); 212 void osreboot(char*, char**); 213 ulong poolmaxsize(void); 214 Pool* poolmk(char*, int, int, int); 215 void hnputv(void*, vlong); 216 void hnputl(void*, ulong); 217 void hnputs(void*, ushort); 218 vlong nhgetv(void*); 219 ulong nhgetl(void*); 220 ushort nhgets(void*); 221 void* smalloc(size_t); 222 void* kmalloc(size_t); 223 224 /* Namespace Emulation */ 225 int kbind(char*, char*, int); 226 int kclose(int); 227 int kcreate(char*, int, ulong); 228 int kdup(int, int); 229 int kfstat(int, uchar*, int); 230 int kfwstat(int, uchar*, int); 231 int kmount(int, int, char*, int, char*); 232 int kunmount(char*, char*); 233 int kopen(char*, int); 234 long kread(int, void*, long); 235 int kremove(char*); 236 vlong kseek(int, vlong, int); 237 int kstat(char*, uchar*, int); 238 long kwrite(int, void*, long); 239 int kwstat(char*, uchar*, int); 240 Dir* kdirstat(char*); 241 Dir* kdirfstat(int); 242 int kdirwstat(char*, Dir*); 243 int kdirfwstat(int, Dir*); 244 long kdirread(int, Dir**); 245 int klisten(char*, char*); 246 247 Cname* addelem(Cname*, char*); 248 void cleancname(Cname*); 249 void cnameclose(Cname*); 250 251 #pragma varargck argpos iprint 1 252