---
name: "io_uring_register_zcrx_ctrl"
section: "3"
platform: "linux"
package: "liburing"
version: "2.15-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/io_uring_register_zcrx_ctrl"
---

# io\_uring\_register\_zcrx\_ctrl(3)

perform control operations on a zero-copy receive context

## NAME

io\_uring\_register\_zcrx\_ctrl - perform control operations on a zero-copy receive context

## SYNOPSIS

```
#include <liburing.h>
```

**int io\_uring\_register\_zcrx\_ctrl(struct io\_uring \****ring***,**                                 **struct zcrx\_ctrl \****ctrl***);**

## DESCRIPTION

The [**io\_uring\_register\_zcrx\_ctrl**(3)](/io_uring_register_zcrx_ctrl/3.md) function performs control operations on a previously registered zero-copy receive context. See [**io\_uring\_register\_ifq**(3)](/io_uring_register_ifq/3.md) 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)](/io_uring_register_ifq/3.md). 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.

## SEE ALSO

[**io\_uring\_register**(2)](/io_uring_register/2.md), [**io\_uring\_register\_ifq**(3)](/io_uring_register_ifq/3.md)
