]> git.lizzy.rs Git - plan9front.git/blob - sys/src/9/port/portfns.h
kernel: make allocb() wait instead of panic() when possible
[plan9front.git] / sys / src / 9 / port / portfns.h
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 Chan*           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 void            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 void            eqlock(QLock*);
102 long            execregs(ulong, ulong, ulong);
103 void            exhausted(char*);
104 void            exit(int);
105 uvlong          fastticks(uvlong*);
106 uvlong          fastticks2ns(uvlong);
107 uvlong          fastticks2us(uvlong);
108 int             fault(ulong, int);
109 void            fdclose(int, int);
110 Chan*           fdtochan(int, int, int, int);
111 int             findmount(Chan**, Mhead**, int, int, Qid);
112 int             fixfault(Segment*, ulong, int, int);
113 void            flushmmu(void);
114 void            forceclosefgrp(void);
115 void            forkchild(Proc*, Ureg*);
116 void            forkret(void);
117 void            free(void*);
118 void            freeb(Block*);
119 void            freeblist(Block*);
120 int             freebroken(void);
121 void            freepte(Segment*, Pte*);
122 void            getcolor(ulong, ulong*, ulong*, ulong*);
123 ulong           getmalloctag(void*);
124 ulong           getrealloctag(void*);
125 void            gotolabel(Label*);
126 char*           getconfenv(void);
127 int             haswaitq(void*);
128 long            hostdomainwrite(char*, int);
129 long            hostownerwrite(char*, int);
130 void            hzsched(void);
131 Block*          iallocb(int);
132 void            iallocsummary(void);
133 long            ibrk(ulong, int);
134 void            ilock(Lock*);
135 void            iunlock(Lock*);
136 long            incref(Ref*);
137 void            initseg(void);
138 int             iprint(char*, ...);
139 void            isdir(Chan*);
140 int             iseve(void);
141 int             islo(void);
142 Segment*        isoverlap(Proc*, ulong, int);
143 int             ispages(void*);
144 int             isphysseg(char*);
145 void            ixsummary(void);
146 void            kickpager(void);
147 void            killbig(char*);
148 void            kproc(char*, void(*)(void*), void*);
149 void            kprocchild(Proc*, void (*)(void*), void*);
150 void            (*kproftimer)(ulong);
151 void            ksetenv(char*, char*, int);
152 void            kstrcpy(char*, char*, int);
153 void            kstrdup(char**, char*);
154 int             lock(Lock*);
155 void            logopen(Log*);
156 void            logclose(Log*);
157 char*           logctl(Log*, int, char**, Logflag*);
158 void            logn(Log*, int, void*, int);
159 long            logread(Log*, void*, ulong, long);
160 void            log(Log*, int, char*, ...);
161 Cmdtab*         lookupcmd(Cmdbuf*, Cmdtab*, int);
162 Page*           lookpage(Image*, ulong);
163 #define         MS2NS(n) (((vlong)(n))*1000000LL)
164 void            machinit(void);
165 void*           mallocz(ulong, int);
166 void*           malloc(ulong);
167 void*           mallocalign(ulong, ulong, long, ulong);
168 void            mallocsummary(void);
169 Block*          mem2bl(uchar*, int);
170 int             mcountseg(Segment*);
171 void            mfreeseg(Segment*, ulong, int);
172 void            microdelay(int);
173 uvlong          mk64fract(uvlong, uvlong);
174 void            mkqid(Qid*, vlong, ulong, int);
175 void            mmurelease(Proc*);
176 void            mmuswitch(Proc*);
177 Chan*           mntauth(Chan*, char*);
178 long            mntversion(Chan*, char*, int, int);
179 void            mouseresize(void);
180 void            mountfree(Mount*);
181 ulong           ms2tk(ulong);
182 ulong           msize(void*);
183 ulong           ms2tk(ulong);
184 uvlong          ms2fastticks(ulong);
185 void            mul64fract(uvlong*, uvlong, uvlong);
186 void            muxclose(Mnt*);
187 Chan*           namec(char*, int, int, ulong);
188 void            nameerror(char*, char*);
189 Chan*           newchan(void);
190 int             newfd(Chan*);
191 Mhead*          newmhead(Chan*);
192 Mount*          newmount(Mhead*, Chan*, int, char*);
193 Page*           newpage(int, Segment **, ulong);
194 Path*           newpath(char*);
195 Pgrp*           newpgrp(void);
196 Rgrp*           newrgrp(void);
197 Proc*           newproc(void);
198 void            nexterror(void);
199 int             notify(Ureg*);
200 int             nrand(int);
201 uvlong          ns2fastticks(uvlong);
202 int             okaddr(ulong, ulong, int);
203 int             openmode(ulong);
204 Block*          packblock(Block*);
205 Block*          padblock(Block*, int);
206 void            pagechainhead(Page*);
207 void            pageinit(void);
208 ulong   pagenumber(Page*);
209 void            pagersummary(void);
210 void            panic(char*, ...);
211 Cmdbuf*         parsecmd(char *a, int n);
212 void            pathclose(Path*);
213 ulong           perfticks(void);
214 void            pexit(char*, int);
215 void            pgrpcpy(Pgrp*, Pgrp*);
216 void            pgrpnote(ulong, char*, long, int);
217 int             pidalloc(Proc*);
218 void            pio(Segment *, ulong, ulong, Page **);
219 #define         poperror()              up->nerrlab--
220 void            portcountpagerefs(ulong*, int);
221 int             postnote(Proc*, int, char*, int);
222 int             pprint(char*, ...);
223 int             preempted(void);
224 void            prflush(void);
225 void            printinit(void);
226 ulong           procalarm(ulong);
227 void            procctl(Proc*);
228 void            procdump(void);
229 int             procfdprint(Chan*, int, int, char*, int);
230 int             procindex(ulong);
231 void            procinit0(void);
232 void            procflushseg(Segment*);
233 void            procpriority(Proc*, int, int);
234 Proc*           proctab(int);
235 extern void     (*proctrace)(Proc*, int, vlong); 
236 void            procwired(Proc*, int);
237 Pte*            ptealloc(void);
238 Pte*            ptecpy(Pte*);
239 int             pullblock(Block**, int);
240 Block*          pullupblock(Block*, int);
241 Block*          pullupqueue(Queue*, int);
242 void            putimage(Image*);
243 void            putmhead(Mhead*);
244 void            putmmu(ulong, ulong, Page*);
245 void            putpage(Page*);
246 void            putseg(Segment*);
247 void            putstrn(char*, int);
248 void            putswap(Page*);
249 ulong           pwait(Waitmsg*);
250 void            qaddlist(Queue*, Block*);
251 Block*          qbread(Queue*, int);
252 long            qbwrite(Queue*, Block*);
253 Queue*          qbypass(void (*)(void*, Block*), void*);
254 int             qcanread(Queue*);
255 void            qclose(Queue*);
256 int             qconsume(Queue*, void*, int);
257 Block*          qcopy(Queue*, int, ulong);
258 int             qdiscard(Queue*, int);
259 void            qflush(Queue*);
260 void            qfree(Queue*);
261 int             qfull(Queue*);
262 Block*          qget(Queue*);
263 void            qhangup(Queue*, char*);
264 int             qisclosed(Queue*);
265 int             qiwrite(Queue*, void*, int);
266 int             qlen(Queue*);
267 void            qlock(QLock*);
268 Queue*          qopen(int, int, void (*)(void*), void*);
269 int             qpass(Queue*, Block*);
270 int             qpassnolim(Queue*, Block*);
271 int             qproduce(Queue*, void*, int);
272 void            qputback(Queue*, Block*);
273 long            qread(Queue*, void*, int);
274 Block*          qremove(Queue*);
275 void            qreopen(Queue*);
276 void            qsetlimit(Queue*, int);
277 void            qunlock(QLock*);
278 int             qwindow(Queue*);
279 int             qwrite(Queue*, void*, int);
280 void            qnoblock(Queue*, int);
281 int             rand(void);
282 void            randominit(void);
283 ulong           randomread(void*, ulong);
284 void            rdb(void);
285 int             readnum(ulong, char*, ulong, ulong, int);
286 int             readstr(ulong, char*, ulong, char*);
287 void            ready(Proc*);
288 void*           realloc(void *v, ulong size);
289 void            rebootcmd(int, char**);
290 void            reboot(void*, void*, ulong);
291 void            relocateseg(Segment*, ulong);
292 void            renameuser(char*, char*);
293 void            resched(char*);
294 void            resrcwait(char*);
295 int             return0(void*);
296 void            rlock(RWlock*);
297 long            rtctime(void);
298 void            runlock(RWlock*);
299 Proc*           runproc(void);
300 void            savefpregs(FPsave*);
301 void            sched(void);
302 void            scheddump(void);
303 void            schedinit(void);
304 void            (*screenputs)(char*, int);
305 long            seconds(void);
306 ulong           segattach(Proc*, ulong, char *, ulong, ulong);
307 void            segclock(ulong);
308 void            segpage(Segment*, Page*);
309 int             setcolor(ulong, ulong, ulong, ulong);
310 void            setkernur(Ureg*, Proc*);
311 int             setlabel(Label*);
312 void            setmalloctag(void*, ulong);
313 void            setrealloctag(void*, ulong);
314 void            setregisters(Ureg*, char*, char*, int);
315 void            setswapchan(Chan*);
316 char*           skipslash(char*);
317 void            sleep(Rendez*, int(*)(void*), void*);
318 void*           smalloc(ulong);
319 int             splhi(void);
320 int             spllo(void);
321 void            splx(int);
322 void            splxpc(int);
323 char*           srvname(Chan*);
324 void            srvrenameuser(char*, char*);
325 void            shrrenameuser(char*, char*);
326 int             swapcount(ulong);
327 int             swapfull(void);
328 void            swapinit(void);
329 void            syscallfmt(ulong syscallno, ulong pc, va_list list);
330 void            sysretfmt(ulong syscallno, va_list list, long ret, uvlong start, uvlong stop);
331 void            timeradd(Timer*);
332 void            timerdel(Timer*);
333 void            timersinit(void);
334 void            timerintr(Ureg*, Tval);
335 void            timerset(Tval);
336 ulong           tk2ms(ulong);
337 #define         TK2MS(x) ((x)*(1000/HZ))
338 uvlong          tod2fastticks(vlong);
339 vlong           todget(vlong*);
340 void            todsetfreq(vlong);
341 void            todinit(void);
342 void            todset(vlong, vlong, int);
343 Block*          trimblock(Block*, int, int);
344 void            tsleep(Rendez*, int (*)(void*), void*, ulong);
345 int             uartctl(Uart*, char*);
346 int             uartgetc(void);
347 void            uartkick(void*);
348 void            uartmouse(char*, int (*)(Queue*, int), int);
349 void            uartsetmouseputc(char*, int (*)(Queue*, int));
350 void            uartputc(int);
351 void            uartputs(char*, int);
352 void            uartrecv(Uart*, char);
353 int             uartstageoutput(Uart*);
354 void            unbreak(Proc*);
355 void            uncachepage(Page*);
356 long            unionread(Chan*, void*, long);
357 void            unlock(Lock*);
358 uvlong          us2fastticks(uvlong);
359 void            userinit(void);
360 ulong           userpc(void);
361 long            userwrite(char*, int);
362 void            validaddr(ulong, ulong, int);
363 void            validname(char*, int);
364 char*           validnamedup(char*, int);
365 void            validstat(uchar*, int);
366 void*           vmemchr(void*, int, int);
367 Proc*           wakeup(Rendez*);
368 int             walk(Chan**, char**, int, int, int*);
369 void            wlock(RWlock*);
370 void            wunlock(RWlock*);
371 void*           xalloc(ulong);
372 void*           xallocz(ulong, int);
373 void            xfree(void*);
374 void            xhole(ulong, ulong);
375 void            xinit(void);
376 int             xmerge(void*, void*);
377 void*           xspanalloc(ulong, int, ulong);
378 void            xsummary(void);
379 void            yield(void);
380 Segment*        data2txt(Segment*);
381 Segment*        dupseg(Segment**, int, int);
382 Segment*        newseg(int, ulong, ulong);
383 Segment*        seg(Proc*, ulong, int);
384 void            hnputv(void*, uvlong);
385 void            hnputl(void*, uint);
386 void            hnputs(void*, ushort);
387 uvlong          nhgetv(void*);
388 uint            nhgetl(void*);
389 ushort          nhgets(void*);
390 ulong           µs(void);
391 void            _xinc(long*);
392 long            _xdec(long*);
393 long            lcycles(void);
394
395 #pragma varargck argpos iprint  1
396 #pragma varargck argpos panic   1
397 #pragma varargck argpos pprint  1