portfns.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392
  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. #pragma varargck argpos iprint 1