xref: /plan9-contrib/sys/src/9/port/portfns.h (revision 61d44851dbae9c6db4696bac4b180d884ecea735)
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 ulong		blocksize(ulong);
17 void		bootlinks(void);
18 void		cachedel(Image*, ulong);
19 void		cachepage(Page*, Image*);
20 void		callwithureg(void(*)(Ureg*));
21 char*		chanpath(Chan*);
22 int		canlock(Lock*);
23 int		canpage(Proc*);
24 int		canqlock(QLock*);
25 int		canrlock(RWlock*);
26 void		chandevinit(void);
27 void		chandevreset(void);
28 void		chandevshutdown(void);
29 void		chanfree(Chan*);
30 void		checkalarms(void);
31 void		checkb(Block*, char*);
32 void		cinit(void);
33 Chan*		cclone(Chan*);
34 void		cclose(Chan*);
35 void		ccloseq(Chan*);
36 void		closeegrp(Egrp*);
37 void		closefgrp(Fgrp*);
38 void		closepgrp(Pgrp*);
39 void		closergrp(Rgrp*);
40 long		clrfpintr(void);
41 int		clz(ulong);
42 void		cmderror(Cmdbuf*, char*);
43 int		cmount(Chan**, Chan*, int, char*);
44 void		confinit(void);
45 int		consactive(void);
46 void		(*consdebug)(void);
47 void		copen(Chan*);
48 Block*		concatblock(Block*);
49 Block*		copyblock(Block*, int);
50 void		copypage(Page*, Page*);
51 void		countpagerefs(ulong*, int);
52 void		cpuactive(uint);
53 void		cpuinactive(uint);
54 int		cread(Chan*, uchar*, int, vlong);
55 void		cunmount(Chan*, Chan*);
56 void		cupdate(Chan*, uchar*, int, vlong);
57 void		cwrite(Chan*, uchar*, int, vlong);
58 ulong		dbgpc(Proc*);
59 long		decref(Ref*);
60 int		decrypt(void*, void*, int);
61 void		delay(int);
62 Proc*		dequeueproc(Schedq*, Proc*);
63 Chan*		devattach(int, char*);
64 Block*		devbread(Chan*, long, ulong);
65 long		devbwrite(Chan*, Block*, ulong);
66 Chan*		devclone(Chan*);
67 int		devconfig(int, char *, DevConf *);
68 void		devcreate(Chan*, char*, int, ulong);
69 void		devdir(Chan*, Qid, char*, vlong, char*, long, Dir*);
70 long		devdirread(Chan*, char*, long, Dirtab*, int, Devgen*);
71 Devgen		devgen;
72 void		devinit(void);
73 int		devno(int, int);
74 Chan*		devopen(Chan*, int, Dirtab*, int, Devgen*);
75 void		devpermcheck(char*, ulong, int);
76 void		devpower(int);
77 void		devremove(Chan*);
78 void		devreset(void);
79 void		devshutdown(void);
80 int		devstat(Chan*, uchar*, int, Dirtab*, int, Devgen*);
81 Walkqid*	devwalk(Chan*, Chan*, char**, int, Dirtab*, int, Devgen*);
82 int		devwstat(Chan*, uchar*, int);
83 void		drawactive(int);
84 void		drawcmap(void);
85 void		dumpaproc(Proc*);
86 void		dumpregs(Ureg*);
87 void		dumpstack(void);
88 Fgrp*		dupfgrp(Fgrp*);
89 int		duppage(Page*);
90 void		dupswap(Page*);
91 void		edfinit(Proc*);
92 char*		edfadmit(Proc*);
93 int		edfready(Proc*);
94 void		edfrecord(Proc*);
95 void		edfrun(Proc*, int);
96 void		edfstop(Proc*);
97 void		edfyield(void);
98 int		emptystr(char*);
99 int		encrypt(void*, void*, int);
100 void		envcpy(Egrp*, Egrp*);
101 int		eqchan(Chan*, Chan*, int);
102 int		eqchantdqid(Chan*, int, int, Qid, int);
103 int		eqqid(Qid, Qid);
104 void		error(char*);
105 long		execregs(ulong, ulong, ulong);
106 void		exhausted(char*);
107 void		exit(int);
108 uvlong		fastticks(uvlong*);
109 uvlong		fastticks2ns(uvlong);
110 uvlong		fastticks2us(uvlong);
111 int		fault(ulong, int);
112 void		fdclose(int, int);
113 Chan*		fdtochan(int, int, int, int);
114 int		findmount(Chan**, Mhead**, int, int, Qid);
115 int		fixfault(Segment*, ulong, int, int);
116 void		flushmmu(void);
117 void		forceclosefgrp(void);
118 void		forkchild(Proc*, Ureg*);
119 void		forkret(void);
120 void		free(void*);
121 void		freeb(Block*);
122 void		freeblist(Block*);
123 int		freebroken(void);
124 void		freepte(Segment*, Pte*);
125 void		getcolor(ulong, ulong*, ulong*, ulong*);
126 ulong		getmalloctag(void*);
127 ulong		getrealloctag(void*);
128 void		gotolabel(Label*);
129 char*		getconfenv(void);
130 int		haswaitq(void*);
131 long		hostdomainwrite(char*, int);
132 long		hostownerwrite(char*, int);
133 void		hzsched(void);
134 Block*		iallocb(int);
135 void		iallocsummary(void);
136 long		ibrk(ulong, int);
137 void		ilock(Lock*);
138 void		iunlock(Lock*);
139 long		incref(Ref*);
140 void		initmark(Watermark *, int, char *);
141 void		initseg(void);
142 int		iprint(char*, ...);
143 int		iscpuactive(uint);
144 void		isdir(Chan*);
145 int		iseve(void);
146 int		islo(void);
147 Segment*	isoverlap(Proc*, ulong, int);
148 int		ispages(void*);
149 int		isphysseg(char*);
150 #define		ISPOW2(i) (((i) & ((i) - 1)) == 0) /* see Hacker's Delight */
151 int		ispow2(uvlong);
152 void		ixsummary(void);
153 int		kbdcr2nl(Queue*, int);
154 int		kbdgetmap(uint, int*, int*, Rune*);
155 int		kbdputc(Queue*, int);
156 void		kbdputmap(ushort, ushort, Rune);
157 void		kickpager(void);
158 void		killbig(char*);
159 void		kproc(char*, void(*)(void*), void*);
160 void		kprocchild(Proc*, void (*)(void*), void*);
161 void		(*kproftimer)(ulong);
162 void		ksetenv(char*, char*, int);
163 void		kstrcpy(char*, char*, int);
164 void		kstrdup(char**, char*);
165 ulong		l2be(long);
166 long		latin1(Rune*, int);
167 int		lock(Lock*);
168 void		logopen(Log*);
169 int		log2(ulong);
170 void		logclose(Log*);
171 char*		logctl(Log*, int, char**, Logflag*);
172 void		logn(Log*, int, void*, int);
173 long		logread(Log*, void*, ulong, long);
174 void		log(Log*, int, char*, ...);
175 Cmdtab*		lookupcmd(Cmdbuf*, Cmdtab*, int);
176 Page*		lookpage(Image*, ulong);
177 #define		MS2NS(n) (((vlong)(n))*1000000LL)
178 void		machinit(void);
179 void*		mallocz(ulong, int);
180 void*		malloc(ulong);
181 void*		mallocalign(ulong, ulong, long, ulong);
182 void		mallocsummary(void);
183 Block*		mem2bl(uchar*, int);
184 Block*		mem2block(void *, ulong, int);
185 void		mfreeseg(Segment*, ulong, int);
186 void		microdelay(int);
187 uvlong		mk64fract(uvlong, uvlong);
188 void		mkqid(Qid*, vlong, ulong, int);
189 void		mmurelease(Proc*);
190 void		mmuswitch(Proc*);
191 Chan*		mntauth(Chan*, char*);
192 long		mntversion(Chan*, char*, int, int);
193 void		mouseresize(void);
194 void		mountfree(Mount*);
195 ulong		ms2tk(ulong);
196 ulong		msize(void*);
197 ulong		ms2tk(ulong);
198 uvlong		ms2fastticks(ulong);
199 void		mul64fract(uvlong*, uvlong, uvlong);
200 void		muxclose(Mnt*);
201 Chan*		namec(char*, int, int, ulong);
202 void		nameerror(char*, char*);
203 Chan*		newchan(void);
204 int		newfd(Chan*);
205 Mhead*		newmhead(Chan*);
206 Mount*		newmount(Mhead*, Chan*, int, char*);
207 Page*		newpage(int, Segment **, ulong);
208 Path*		newpath(char*);
209 Pgrp*		newpgrp(void);
210 Rgrp*		newrgrp(void);
211 Proc*		newproc(void);
212 void		nexterror(void);
213 void		notemark(Watermark *, int);
214 int		notify(Ureg*);
215 int		nrand(int);
216 uvlong		ns2fastticks(uvlong);
217 int		okaddr(ulong, ulong, int);
218 int		openmode(ulong);
219 Block*		packblock(Block*);
220 Block*		padblock(Block*, int);
221 void		pagechainhead(Page*);
222 void		pageinit(void);
223 ulong	pagenumber(Page*);
224 void		pagersummary(void);
225 void 		pageunchain(Page *p);
226 void		panic(char*, ...);
227 Cmdbuf*		parsecmd(char *a, int n);
228 void		pathclose(Path*);
229 ulong		perfticks(void);
230 void		pexit(char*, int);
231 void		pgrpcpy(Pgrp*, Pgrp*);
232 void		pgrpnote(ulong, char*, long, int);
233 void		pio(Segment *, ulong, ulong, Page **);
234 #define		poperror()		up->nerrlab--
235 void		portcountpagerefs(ulong*, int);
236 int		postnote(Proc*, int, char*, int);
237 int		pprint(char*, ...);
238 int		preempted(void);
239 void		prflush(void);
240 void		printinit(void);
241 ulong		procalarm(ulong);
242 void		procctl(Proc*);
243 void		procdump(void);
244 int		procfdprint(Chan*, int, int, char*, int);
245 int		procindex(ulong);
246 void		procinit0(void);
247 void		procflushseg(Segment*);
248 void		procpriority(Proc*, int, int);
249 Proc*		proctab(int);
250 extern void	(*proctrace)(Proc*, int, vlong);
251 void		procwired(Proc*, int);
252 Pte*		ptealloc(void);
253 Pte*		ptecpy(Pte*);
254 int		pullblock(Block**, int);
255 Block*		pullupblock(Block*, int);
256 Block*		pullupqueue(Queue*, int);
257 void		putimage(Image*);
258 void		putmhead(Mhead*);
259 void		putmmu(ulong, ulong, Page*);
260 void		putpage(Page*);
261 void		putseg(Segment*);
262 void		putstrn(char*, int);
263 void		putswap(Page*);
264 ulong		pwait(Waitmsg*);
265 void		qaddlist(Queue*, Block*);
266 Block*		qbread(Queue*, int);
267 long		qbwrite(Queue*, Block*);
268 Queue*		qbypass(void (*)(void*, Block*), void*);
269 int		qcanread(Queue*);
270 void		qclose(Queue*);
271 int		qconsume(Queue*, void*, int);
272 Block*		qcopy(Queue*, int, ulong);
273 int		qdiscard(Queue*, int);
274 void		qflush(Queue*);
275 void		qfree(Queue*);
276 int		qfull(Queue*);
277 Block*		qget(Queue*);
278 void		qhangup(Queue*, char*);
279 int		qisclosed(Queue*);
280 int		qiwrite(Queue*, void*, int);
281 int		qlen(Queue*);
282 void		qlock(QLock*);
283 Queue*		qopen(int, int, void (*)(void*), void*);
284 int		qpass(Queue*, Block*);
285 int		qpassnolim(Queue*, Block*);
286 int		qproduce(Queue*, void*, int);
287 void		qputback(Queue*, Block*);
288 long		qread(Queue*, void*, int);
289 Block*		qremove(Queue*);
290 void		qreopen(Queue*);
291 void		qsetlimit(Queue*, int);
292 void		qunlock(QLock*);
293 int		qwindow(Queue*);
294 int		qwrite(Queue*, void*, int);
295 void		qnoblock(Queue*, int);
296 int		rand(void);
297 void		randominit(void);
298 ulong		randomread(void*, ulong);
299 void		rdb(void);
300 void		readn(Chan *, void *, long);
301 int		readnum(ulong, char*, ulong, ulong, int);
302 int		readstr(ulong, char*, ulong, char*);
303 void		ready(Proc*);
304 void*		realloc(void *v, ulong size);
305 void		rebootcmd(int, char**);
306 void		reboot(void*, void*, ulong);
307 void		relocateseg(Segment*, ulong);
308 void		renameuser(char*, char*);
309 void		resched(char*);
310 void		resrcwait(char*);
311 int		return0(void*);
312 void		rlock(RWlock*);
313 long		rtctime(void);
314 void		runlock(RWlock*);
315 Proc*		runproc(void);
316 void		savefpregs(FPsave*);
317 void		sched(void);
318 void		scheddump(void);
319 void		schedinit(void);
320 void		(*screenputs)(char*, int);
321 long		seconds(void);
322 ulong		segattach(Proc*, ulong, char *, ulong, ulong);
323 void		segclock(ulong);
324 void		segpage(Segment*, Page*);
325 char*		seprintmark(char *, char *, Watermark *);
326 int		setcolor(ulong, ulong, ulong, ulong);
327 void		setkernur(Ureg*, Proc*);
328 int		setlabel(Label*);
329 void		setmalloctag(void*, ulong);
330 void		setrealloctag(void*, ulong);
331 void		setregisters(Ureg*, char*, char*, int);
332 void		setswapchan(Chan*);
333 char*		skipslash(char*);
334 void		sleep(Rendez*, int(*)(void*), void*);
335 void*		smalloc(ulong);
336 int		splhi(void);
337 int		spllo(void);
338 void		splx(int);
339 void		splxpc(int);
340 char*		srvname(Chan*);
341 int		swapcount(ulong);
342 int		swapfull(void);
343 void		swapinit(void);
344 void		timeradd(Timer*);
345 void		timerdel(Timer*);
346 void		timersinit(void);
347 void		timerintr(Ureg*, Tval);
348 void		timerset(Tval);
349 ulong		tk2ms(ulong);
350 #define		TK2MS(x) ((x)*(1000/HZ))
351 uvlong		tod2fastticks(vlong);
352 vlong		todget(vlong*);
353 void		todsetfreq(vlong);
354 void		todinit(void);
355 void		todset(vlong, vlong, int);
356 Block*		trimblock(Block*, int, int);
357 void		tsleep(Rendez*, int (*)(void*), void*, ulong);
358 int		uartctl(Uart*, char*);
359 int		uartgetc(void);
360 void		uartkick(void*);
361 void		uartmouse(Uart*, int (*)(Queue*, int), int);
362 void		uartsetmouseputc(Uart*, int (*)(Queue*, int));
363 void		uartputc(int);
364 void		uartputs(char*, int);
365 void		uartrecv(Uart*, char);
366 int		uartstageoutput(Uart*);
367 void		unbreak(Proc*);
368 void		uncachepage(Page*);
369 long		unionread(Chan*, void*, long);
370 void		unlock(Lock*);
371 uvlong		us2fastticks(uvlong);
372 void		userinit(void);
373 ulong		userpc(void);
374 long		userwrite(char*, int);
375 void		validaddr(ulong, ulong, int);
376 void		validname(char*, int);
377 char*		validnamedup(char*, int);
378 void		validstat(uchar*, int);
379 void*		vmemchr(void*, int, int);
380 Proc*		wakeup(Rendez*);
381 int		walk(Chan**, char**, int, int, int*);
382 void		wlock(RWlock*);
383 void		wunlock(RWlock*);
384 void*		xalloc(ulong);
385 void*		xallocz(ulong, int);
386 void		xfree(void*);
387 void		xhole(ulong, ulong);
388 void		xinit(void);
389 int		xmerge(void*, void*);
390 void*		xspanalloc(ulong, int, ulong);
391 void		xsummary(void);
392 void		yield(void);
393 Segment*	data2txt(Segment*);
394 Segment*	dupseg(Segment**, int, int);
395 Segment*	newseg(int, ulong, ulong);
396 Segment*	seg(Proc*, ulong, int);
397 void		hnputv(void*, uvlong);
398 void		hnputl(void*, uint);
399 void		hnputs(void*, ushort);
400 uvlong		nhgetv(void*);
401 uint		nhgetl(void*);
402 ushort		nhgets(void*);
403 ulong		µs(void);
404 long		ainc(long*);
405 long		adec(long*);
406 long		lcycles(void);
407 
408 #pragma varargck argpos iprint	1
409 #pragma	varargck argpos	panic	1
410 #pragma varargck argpos pprint	1
411