wired
libc-free QUIC/HTTP3 SDK in C for x86_64-linux
Loading...
Searching...
No Matches
xskumem.h
1#ifndef XSKUMEM_XSKUMEM_H
2#define XSKUMEM_XSKUMEM_H
3
5
6/* Fixed-capacity UMEM frame allocator. Frames are identified by their
7 * UMEM-relative offset (base_addr + i*XSKUMEM_FRAME_SIZE) rather than a
8 * pointer, since that offset is exactly what the kernel's fill/completion
9 * rings carry. A LIFO free list is enough: ownership only ever moves between
10 * "free" and "in flight", never needs ordering. */
11
13#define XSKUMEM_FRAME_SIZE 2048u
14
18#define XSKUMEM_FRAMES 1024u
19
21typedef struct {
22 u64 free[XSKUMEM_FRAMES];
26
34void xskumem_alloc_init(xskumem_alloc* a, u64 base_addr, u32 nframes);
35
39i64 xskumem_alloc_get(xskumem_alloc* a);
40
45void xskumem_alloc_put(xskumem_alloc* a, u64 addr);
46
47#endif
Fixed-capacity LIFO free list of UMEM frame addresses.
Definition xskumem.h:21
u32 nfree
number of valid entries in free[]
Definition xskumem.h:24
u64 free[XSKUMEM_FRAMES]
free frame addresses (offsets into UMEM)
Definition xskumem.h:22
Linux direct syscalls.
unsigned int u32
unsigned 32-bit integer
Definition types.h:15
long i64
signed 64-bit integer
Definition types.h:14
unsigned long u64
unsigned 64-bit integer
Definition types.h:13