fns.ed - vx32 - Local 9vx git repository for patches.
(HTM) git clone git://r-36.net/vx32
(DIR) Log
(DIR) Files
(DIR) Refs
---
fns.ed (2007B)
---
1 g/bios32/d
2 g/Pcidev/d
3 g/mfence/d
4 g/syscallprint/d
5 $a
6
7 // Plan 9 VX additions
8 void gotolabel(Label*);
9 int isuaddr(void*);
10 void labelinit(Label *l, ulong pc, ulong sp);
11 void latin1putc(int, void(*)(int));
12 void makekprocdev(Dev*);
13 void newmach(void);
14 void oserror(void);
15 void oserrstr(void);
16 void restoretty(void);
17 int setlabel(Label*);
18 void setsigsegv(int invx32);
19 int tailkmesg(char*, int);
20 void trap(Ureg*);
21 void uartecho(char*, int);
22 void uartinit(int);
23 void *uvalidaddr(ulong addr, ulong len, int write);
24
25 #define GSHORT(p) (((p)[1]<<8)|(p)[0])
26 #define GLONG(p) ((GSHORT(p+2)<<16)|GSHORT(p))
27
28 void __plock(Psleep*);
29 void __punlock(Psleep*);
30 void __pwakeup(Psleep*);
31 void __psleep(Psleep*);
32
33 extern int tracelock;
34
35 #define lockfngen(type) __ ## type
36
37 #define lockgen(type, arg) \
38 do { \
39 if (tracelock) { \
40 iprint("%s %p %s %d\n", (#type), (arg), __FILE__, __LINE__); \
41 lockfngen(type)((arg)); \
42 } else { \
43 lockfngen(type)((arg)); \
44 } \
45 } while (0)
46
47 #define qlock(x) lockgen(qlock, (x))
48 #define qunlock(x) lockgen(qunlock, (x))
49 #define rlock(x) lockgen(rlock, (x))
50 #define runlock(x) lockgen(runlock, (x))
51 #define wlock(x) lockgen(wlock, (x))
52 #define wunlock(x) lockgen(wunlock, (x))
53 #define plock(x) lockgen(plock, (x))
54 #define punlock(x) lockgen(punlock, (x))
55 #define pwakeup(x) lockgen(pwakeup, (x))
56 #define psleep(x) lockgen(psleep, (x))
57 // #define lock(x) lockgen(lock, (x))
58 // #define unlock(x) lockgen(unlock, (x))
59 #define lock(x) __lock(x)
60 #define unlock(x) __unlock(x)
61 #define canqlock __canqlock
62 #define canrlock __canrlock
63
64 #define LOCK(x) lock(&((x)->lk))
65 #define UNLOCK(x) unlock(&((x)->lk))
66 #define CANQLOCK(x) canqlock(&((x)->qlock))
67 #define QLOCK(x) qlock(&((x)->qlock))
68 #define QUNLOCK(x) qunlock(&((x)->qlock))
69 #define CANRLOCK(x) canrlock(&((x)->rwlock))
70 #define RLOCK(x) rlock(&((x)->rwlock))
71 #define RUNLOCK(x) runlock(&((x)->rwlock))
72 #define WLOCK(x) wlock(&((x)->rwlock))
73 #define WUNLOCK(x) wunlock(&((x)->rwlock))
74 .