io\_uring\_register\_iowq\_aff(3) liburing Manual io\_uring\_register\_iowq\_aff(3)

# [NAME](#NAME)

io\_uring\_register\_iowq\_aff - register async worker CPU affinities

# [SYNOPSIS](#SYNOPSIS)

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

```
int io_uring_register_iowq_aff(struct io_uring *ring,
                               size_t cpusz,
                               const cpu_set_t *mask);
```

```
void io_uring_unregister_iowq_aff(struct io_uring *ring);
```

# [DESCRIPTION](#DESCRIPTION)

The [**io\_uring\_prep\_register\_iowq\_aff**(3)](/man/os/liburing/io_uring_prep_register_iowq_aff.3) function registers a set of CPU affinities to be used by the io\_uring async workers. By default, io\_uring async workers are allowed to run on any CPU in the system. If this function is called with *ring* set to the ring in question and *mask* set to a pointer to a **cpu\_set\_t** value and *cpusz* set to the size of the CPU set, then async workers will only be allowed to run on the CPUs specified in the mask. Existing workers may need to hit a schedule point before they are migrated.

For unregistration, [**io\_uring\_unregister\_iowq\_aff**(3)](/man/os/liburing/io_uring_unregister_iowq_aff.3) may be called to restore CPU affinities to the default.

Applications must define **\_GNU\_SOURCE** to obtain the definition of this helper, as *cpu\_set\_t* will not be defined without it.

# [RETURN VALUE](#RETURN_VALUE)

Returns **0** on success, or any of the following values in case of error.

[**-EFAULT**](#EFAULT)

The kernel was unable to copy the memory pointer to by *mask* as it was invalid.

[**-ENOMEM**](#ENOMEM)

The kernel was unable to allocate memory for the new CPU mask.

[**-EINVAL**](#EINVAL)

*cpusz* or *mask* was NULL/0, or any other value specified was invalid.

# [SEE ALSO](#SEE_ALSO)

[**io\_uring\_queue\_init**(3)](/man/os/liburing/io_uring_queue_init.3), [**io\_uring\_register**(2)](/man/os/liburing/io_uring_register.2)

March 13, 2022 liburing-2.2

---

Document: io_uring_register_iowq_aff(3) from liburing 2.15-r4 (Chainguard OS)
Source: https://github.com/axboe/liburing.git
