xref: /plan9/sys/src/liboventi/packet.h (revision 368c31ab13393dea083228fdd1c3445076f83a4b)
1*368c31abSDavid du Colombier typedef struct Packet Packet;
2*368c31abSDavid du Colombier typedef struct Mem Mem;
3*368c31abSDavid du Colombier typedef struct Frag Frag;
4*368c31abSDavid du Colombier 
5*368c31abSDavid du Colombier enum {
6*368c31abSDavid du Colombier 	BigMemSize = MaxFragSize,
7*368c31abSDavid du Colombier 	SmallMemSize = BigMemSize/8,
8*368c31abSDavid du Colombier 	NLocalFrag = 2,
9*368c31abSDavid du Colombier };
10*368c31abSDavid du Colombier 
11*368c31abSDavid du Colombier /* position to carve out of a Mem */
12*368c31abSDavid du Colombier enum {
13*368c31abSDavid du Colombier 	PFront,
14*368c31abSDavid du Colombier 	PMiddle,
15*368c31abSDavid du Colombier 	PEnd,
16*368c31abSDavid du Colombier };
17*368c31abSDavid du Colombier 
18*368c31abSDavid du Colombier struct Mem
19*368c31abSDavid du Colombier {
20*368c31abSDavid du Colombier 	Lock lk;
21*368c31abSDavid du Colombier 	int ref;
22*368c31abSDavid du Colombier 	uchar *bp;
23*368c31abSDavid du Colombier 	uchar *ep;
24*368c31abSDavid du Colombier 	uchar *rp;
25*368c31abSDavid du Colombier 	uchar *wp;
26*368c31abSDavid du Colombier 	Mem *next;
27*368c31abSDavid du Colombier };
28*368c31abSDavid du Colombier 
29*368c31abSDavid du Colombier enum {
30*368c31abSDavid du Colombier 	FragLocalFree,
31*368c31abSDavid du Colombier 	FragLocalAlloc,
32*368c31abSDavid du Colombier 	FragGlobal,
33*368c31abSDavid du Colombier };
34*368c31abSDavid du Colombier 
35*368c31abSDavid du Colombier struct Frag
36*368c31abSDavid du Colombier {
37*368c31abSDavid du Colombier 	int state;
38*368c31abSDavid du Colombier 	Mem *mem;
39*368c31abSDavid du Colombier 	uchar *rp;
40*368c31abSDavid du Colombier 	uchar *wp;
41*368c31abSDavid du Colombier 	Frag *next;
42*368c31abSDavid du Colombier };
43*368c31abSDavid du Colombier 
44*368c31abSDavid du Colombier struct Packet
45*368c31abSDavid du Colombier {
46*368c31abSDavid du Colombier 	int size;
47*368c31abSDavid du Colombier 	int asize;  /* allocated memmory - always greater than size */
48*368c31abSDavid du Colombier 
49*368c31abSDavid du Colombier 	Packet *next;
50*368c31abSDavid du Colombier 
51*368c31abSDavid du Colombier 	Frag *first;
52*368c31abSDavid du Colombier 	Frag *last;
53*368c31abSDavid du Colombier 
54*368c31abSDavid du Colombier 	Frag local[NLocalFrag];
55*368c31abSDavid du Colombier };
56*368c31abSDavid du Colombier 
57