---
name: "io_uring_register_probe"
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_probe"
---

# io\_uring\_register\_probe(3)

register probe with io\_uring

## NAME

io\_uring\_register\_probe - register probe with io\_uring

## SYNOPSIS

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

**int io\_uring\_register\_probe(struct io\_uring \****ring***,**                             **struct io\_uring\_probe \****p***,**                             **unsigned** *nr***);**

## DESCRIPTION

The [**io\_uring\_register\_probe**(3)](/io_uring_register_probe/3.md) function queries the kernel for supported io\_uring opcodes and fills in the probe structure *p*. The *ring* argument specifies the io\_uring instance to query, and *nr* specifies the maximum number of opcodes to query.

The probe structure contains information about which opcodes are supported by the kernel. Applications can use [**io\_uring\_opcode\_supported**(3)](/io_uring_opcode_supported/3.md) to check if a specific opcode is supported after calling this function.

Most applications should use [**io\_uring\_get\_probe**(3)](/io_uring_get_probe/3.md) or [**io\_uring\_get\_probe\_ring**(3)](/io_uring_get_probe_ring/3.md) instead, which allocate and fill in the probe structure automatically.

## RETURN VALUE

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

## SEE ALSO

[**io\_uring\_get\_probe**(3)](/io_uring_get_probe/3.md), [**io\_uring\_get\_probe\_ring**(3)](/io_uring_get_probe_ring/3.md), [**io\_uring\_opcode\_supported**(3)](/io_uring_opcode_supported/3.md), [**io\_uring\_free\_probe**(3)](/io_uring_free_probe/3.md), [**io\_uring\_register**(2)](/io_uring_register/2.md)
