summaryrefslogtreecommitdiff
path: root/lib/libc/internal/include/io_uring.h
blob: cd53941da9a280e963d2f670ebca6bab94ec5415 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#ifndef __LIBC_IO_URING_H
#define __LIBC_IO_URING_H

#include <linux/io_uring.h>
#include <signal.h>
#include <stddef.h>

#define IO_URING_ENTRIES 256

struct io_uring_sq {
	void *ring;
	size_t ring_size;
	struct io_uring_sqe *sqes;

	unsigned *head;
	unsigned *tail;
	unsigned *ring_mask;
	unsigned *ring_entries;
	unsigned *flags;
	unsigned *dropped;
	unsigned *array;
};

struct io_uring_cq {
	void *ring;
	size_t ring_size;

	unsigned *head;
	unsigned *tail;
	unsigned *ring_mask;
	unsigned *ring_entries;
	unsigned *overflow;
	struct io_uring_cqe *cqes;
	unsigned *flags;
};

struct io_uring {
	int fd;
	int eventfd;

	struct io_uring_sq sq;
	struct io_uring_cq cq;
};

extern struct io_uring __io_uring;

int io_uring_setup(unsigned int, struct io_uring_params *);

int io_uring_register(unsigned int, unsigned int, void *, unsigned int);

int io_uring_enter(unsigned int, unsigned int, unsigned int, unsigned int, sigset_t *, size_t);

#endif