tools/include/io_uring/mini_liburing.h
Source file repositories/reference/linux-study-clean/tools/include/io_uring/mini_liburing.h
File Facts
- System
- Linux kernel
- Corpus path
tools/include/io_uring/mini_liburing.h- Extension
.h- Size
- 7432 bytes
- Lines
- 312
- Domain
- Support Tooling And Documentation
- Bucket
- tools
- Inferred role
- Support Tooling And Documentation: implementation source
- Status
- source implementation candidate
Why This File Exists
Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/io_uring.hsys/mman.hsys/syscall.hstdio.hstring.hunistd.hsys/uio.h
Detected Declarations
struct io_sq_ringstruct io_cq_ringstruct io_uring_sqstruct io_uring_cqstruct io_uringfunction io_uring_mmapfunction io_uring_setupfunction io_uring_enterfunction io_uring_queue_init_paramsfunction io_uring_queue_initfunction io_uring_wait_cqefunction io_uring_submitfunction io_uring_queue_exitfunction io_uring_prep_cmdfunction io_uring_register_buffersfunction io_uring_prep_sendfunction io_uring_prep_sendzcfunction io_uring_cqe_seen
Annotated Snippet
struct io_sq_ring {
unsigned int *head;
unsigned int *tail;
unsigned int *ring_mask;
unsigned int *ring_entries;
unsigned int *flags;
unsigned int *array;
};
struct io_cq_ring {
unsigned int *head;
unsigned int *tail;
unsigned int *ring_mask;
unsigned int *ring_entries;
struct io_uring_cqe *cqes;
};
struct io_uring_sq {
unsigned int *khead;
unsigned int *ktail;
unsigned int *kring_mask;
unsigned int *kring_entries;
unsigned int *kflags;
unsigned int *kdropped;
unsigned int *array;
struct io_uring_sqe *sqes;
unsigned int sqe_head;
unsigned int sqe_tail;
size_t ring_sz;
};
struct io_uring_cq {
unsigned int *khead;
unsigned int *ktail;
unsigned int *kring_mask;
unsigned int *kring_entries;
unsigned int *koverflow;
struct io_uring_cqe *cqes;
size_t ring_sz;
};
struct io_uring {
struct io_uring_sq sq;
struct io_uring_cq cq;
int ring_fd;
unsigned flags;
};
#if defined(__x86_64) || defined(__i386__)
#define read_barrier() __asm__ __volatile__("":::"memory")
#define write_barrier() __asm__ __volatile__("":::"memory")
#else
#define read_barrier() __sync_synchronize()
#define write_barrier() __sync_synchronize()
#endif
static inline int io_uring_mmap(int fd, struct io_uring_params *p,
struct io_uring_sq *sq, struct io_uring_cq *cq)
{
size_t size;
void *ptr;
int ret;
if (p->flags & IORING_SETUP_NO_SQARRAY) {
sq->ring_sz = p->cq_off.cqes;
sq->ring_sz += p->cq_entries * sizeof(struct io_uring_cqe);
} else {
sq->ring_sz = p->sq_off.array;
sq->ring_sz += p->sq_entries * sizeof(unsigned int);
}
ptr = mmap(0, sq->ring_sz, PROT_READ | PROT_WRITE,
MAP_SHARED | MAP_POPULATE, fd, IORING_OFF_SQ_RING);
if (ptr == MAP_FAILED)
return -errno;
sq->khead = ptr + p->sq_off.head;
sq->ktail = ptr + p->sq_off.tail;
sq->kring_mask = ptr + p->sq_off.ring_mask;
sq->kring_entries = ptr + p->sq_off.ring_entries;
sq->kflags = ptr + p->sq_off.flags;
sq->kdropped = ptr + p->sq_off.dropped;
if (!(p->flags & IORING_SETUP_NO_SQARRAY))
sq->array = ptr + p->sq_off.array;
size = p->sq_entries * sizeof(struct io_uring_sqe);
sq->sqes = mmap(0, size, PROT_READ | PROT_WRITE,
MAP_SHARED | MAP_POPULATE, fd, IORING_OFF_SQES);
Annotation
- Immediate include surface: `linux/io_uring.h`, `sys/mman.h`, `sys/syscall.h`, `stdio.h`, `string.h`, `unistd.h`, `sys/uio.h`.
- Detected declarations: `struct io_sq_ring`, `struct io_cq_ring`, `struct io_uring_sq`, `struct io_uring_cq`, `struct io_uring`, `function io_uring_mmap`, `function io_uring_setup`, `function io_uring_enter`, `function io_uring_queue_init_params`, `function io_uring_queue_init`.
- Atlas domain: Support Tooling And Documentation / tools.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.