xref: /plan9-contrib/sys/include/aml.h (revision ebd848c130c5a90707793ad058d6d29ac82262e7)
1*ebd848c1SDavid du Colombier #pragma	lib	"libaml.a"
2*ebd848c1SDavid du Colombier #pragma	src	"/sys/src/libaml"
3*ebd848c1SDavid du Colombier 
4*ebd848c1SDavid du Colombier /*
5*ebd848c1SDavid du Colombier  *	b	uchar*	buffer		amllen() returns number of bytes
6*ebd848c1SDavid du Colombier  *	s	char*	string		amllen() is strlen()
7*ebd848c1SDavid du Colombier  *	n	char*	undefined name	amllen() is strlen()
8*ebd848c1SDavid du Colombier  *	i	uvlong*	integer
9*ebd848c1SDavid du Colombier  *	p	void**	package		amllen() is # of elements
10*ebd848c1SDavid du Colombier  *	r	void*	region
11*ebd848c1SDavid du Colombier  *	f	void*	field
12*ebd848c1SDavid du Colombier  *	u	void*	bufferfield
13*ebd848c1SDavid du Colombier  *	N	void*	name
14*ebd848c1SDavid du Colombier  *	R	void*	reference
15*ebd848c1SDavid du Colombier  */
16*ebd848c1SDavid du Colombier int		amltag(void *);
17*ebd848c1SDavid du Colombier void*		amlval(void *);
18*ebd848c1SDavid du Colombier uvlong		amlint(void *);
19*ebd848c1SDavid du Colombier int		amllen(void *);
20*ebd848c1SDavid du Colombier 
21*ebd848c1SDavid du Colombier void*		amlnew(char tag, int len);
22*ebd848c1SDavid du Colombier 
23*ebd848c1SDavid du Colombier void		amlinit(void);
24*ebd848c1SDavid du Colombier void		amlexit(void);
25*ebd848c1SDavid du Colombier 
26*ebd848c1SDavid du Colombier int		amlload(uchar *data, int len);
27*ebd848c1SDavid du Colombier void*		amlwalk(void *dot, char *name);
28*ebd848c1SDavid du Colombier int		amleval(void *dot, char *fmt, ...);
29*ebd848c1SDavid du Colombier void		amlenum(void *dot, char *seg, int (*proc)(void *, void *), void *arg);
30*ebd848c1SDavid du Colombier 
31*ebd848c1SDavid du Colombier /*
32*ebd848c1SDavid du Colombier  * exclude from garbage collection
33*ebd848c1SDavid du Colombier  */
34*ebd848c1SDavid du Colombier void		amltake(void *);
35*ebd848c1SDavid du Colombier void		amldrop(void *);
36*ebd848c1SDavid du Colombier 
37*ebd848c1SDavid du Colombier void*		amlroot;
38*ebd848c1SDavid du Colombier int		amldebug;
39*ebd848c1SDavid du Colombier 
40*ebd848c1SDavid du Colombier #pragma	varargck	type	"V"	void*
41*ebd848c1SDavid du Colombier #pragma	varargck	type	"N"	void*
42*ebd848c1SDavid du Colombier 
43*ebd848c1SDavid du Colombier /* to be provided by operating system */
44*ebd848c1SDavid du Colombier extern void*	amlalloc(int);
45*ebd848c1SDavid du Colombier extern void	amlfree(void*);
46*ebd848c1SDavid du Colombier 
47*ebd848c1SDavid du Colombier extern void	amldelay(int);	/* microseconds */
48*ebd848c1SDavid du Colombier 
49*ebd848c1SDavid du Colombier enum {
50*ebd848c1SDavid du Colombier 	MemSpace	= 0x00,
51*ebd848c1SDavid du Colombier 	IoSpace		= 0x01,
52*ebd848c1SDavid du Colombier 	PcicfgSpace	= 0x02,
53*ebd848c1SDavid du Colombier 	EbctlSpace	= 0x03,
54*ebd848c1SDavid du Colombier 	SmbusSpace	= 0x04,
55*ebd848c1SDavid du Colombier 	CmosSpace	= 0x05,
56*ebd848c1SDavid du Colombier 	PcibarSpace	= 0x06,
57*ebd848c1SDavid du Colombier 	FixedhwSpace	= 0x08,
58*ebd848c1SDavid du Colombier 	IpmiSpace	= 0x07,
59*ebd848c1SDavid du Colombier };
60*ebd848c1SDavid du Colombier 
61*ebd848c1SDavid du Colombier typedef struct Amlio Amlio;
62*ebd848c1SDavid du Colombier struct Amlio
63*ebd848c1SDavid du Colombier {
64*ebd848c1SDavid du Colombier 	int	space;
65*ebd848c1SDavid du Colombier 	uvlong	off;
66*ebd848c1SDavid du Colombier 	uvlong	len;
67*ebd848c1SDavid du Colombier 	void	*name;
68*ebd848c1SDavid du Colombier 	uchar	*va;
69*ebd848c1SDavid du Colombier 
70*ebd848c1SDavid du Colombier 	void	*aux;
71*ebd848c1SDavid du Colombier 	int	(*read)(Amlio *io, void *data, int len, int off);
72*ebd848c1SDavid du Colombier 	int	(*write)(Amlio *io, void *data, int len, int off);
73*ebd848c1SDavid du Colombier };
74*ebd848c1SDavid du Colombier 
75*ebd848c1SDavid du Colombier extern int	amlmapio(Amlio *io);
76*ebd848c1SDavid du Colombier extern void	amlunmapio(Amlio *io);
77