io_uring_register_zcrx_ctrl(3)

io_uring_register_zcrx_ctrl3

Perform control operations on a zero-copy receive context

Usage

#include <liburing.h>

int io_uring_register_zcrx_ctrl(struct io_uring *ring, struct zcrx_ctrl *ctrl);

Overview

The io_uring_register_zcrx_ctrl(3) function performs control operations on a previously registered zero-copy receive context. See io_uring_register_ifq(3) for details on registering a zero-copy receive context.

The ctrl argument must point to a struct zcrx_ctrl structure that describes the control operation to perform:

struct zcrx_ctrl {
    __u32 zcrx_id;
    __u32 op;
    __u64 __resv[2];
    union {
        struct zcrx_ctrl_export     zc_export;
        struct zcrx_ctrl_flush_rq   zc_flush;
    };
};

The zcrx_id field must be set to the ID of the zero-copy receive context returned from io_uring_register_ifq(3). The op field specifies the control operation to perform and can be one of:

ZCRX_CTRL_FLUSH_RQ

Flushes pending buffers from the refill queue. Uses the zc_flush member of the union.

ZCRX_CTRL_EXPORT

Exports the zero-copy receive context for use by other rings. Uses the zc_export member of the union. Upon successful export, the zcrx_fd field in zc_export will contain the file descriptor that can be used to share this context with other io_uring instances.

The reserved __resv fields must be cleared to zero.

Return value

Returns 0 on success. On error, a negative errno value is returned.

Notes

This function is available since Linux kernel 6.15.

From liburing 2.15-1 in Arch Linux 2026-11-01. Parsed by carta from the page's man source.