7 #include <liburing/io_uring.h> 22 void PrepPollAdd(
int fd,
short mask) {
23 PrepFd(IORING_OP_POLL_ADD, fd);
24 sqe_->poll_events = mask;
27 void PrepRecvMsg(
int fd,
struct msghdr* msg,
unsigned flags) {
28 PrepFd(IORING_OP_RECVMSG, fd);
29 sqe_->addr = (
unsigned long)msg;
31 sqe_->msg_flags = flags;
34 void PrepRead(
int fd,
void* buf,
unsigned size,
size_t offset) {
35 PrepFd(IORING_OP_READ, fd);
36 sqe_->addr = (
unsigned long)buf;
41 void PrepSendMsg(
int fd,
const struct msghdr* msg,
unsigned flags) {
42 PrepFd(IORING_OP_SENDMSG, fd);
43 sqe_->addr = (
unsigned long)msg;
45 sqe_->msg_flags = flags;
48 void PrepConnect(
int fd,
const struct sockaddr* addr, socklen_t addrlen) {
49 PrepFd(IORING_OP_CONNECT, fd);
50 sqe_->addr = (
unsigned long)addr;
55 void PrepTimeout(
const timespec* ts,
bool is_abs =
true) {
56 PrepFd(IORING_OP_TIMEOUT, -1);
57 sqe_->addr = (
unsigned long)ts;
59 sqe_->timeout_flags = IORING_TIMEOUT_ABS;
68 PrepFd(IORING_OP_NOP, -1);
72 explicit SubmitEntry(io_uring_sqe* sqe) : sqe_(sqe) {
75 void PrepFd(
int op,
int fd) {
84 sqe_->__pad2[0] = sqe_->__pad2[1] = sqe_->__pad2[2] = 0;