---
name: "io_uring_memory_size_params"
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_memory_size_params"
---

# io\_uring\_memory\_size\_params(3)

get memory size needed for a ring with params

## NAME

io\_uring\_memory\_size\_params - get memory size needed for a ring with params

## SYNOPSIS

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

**ssize\_t io\_uring\_memory\_size\_params(unsigned** *entries***, struct io\_uring\_params \****p***);**

## DESCRIPTION

The [**io\_uring\_memory\_size\_params**(3)](/io_uring_memory_size_params/3.md) function returns the total memory size needed for an io\_uring ring with *entries* entries and the parameters specified in *p*.

This is useful for applications that want to pre-allocate memory for a ring or want to know the memory footprint before creating a ring.

This function provides more control than **io\_uring\_memory\_size**(3) by allowing the caller to specify full ring parameters including CQ size via *p-\>cq\_entries* when **IORING\_SETUP\_CQSIZE** is set in *p-\>flags*.

## RETURN VALUE

Returns the required memory size in bytes on success, or a negative errno value on error.

- **-EINVAL**

  Invalid entries value (0 or too large without IORING\_SETUP\_CLAMP).

## SEE ALSO

**io\_uring\_memory\_size**(3), [**io\_uring\_mlock\_size\_params**(3)](/io_uring_mlock_size_params/3.md), [**io\_uring\_queue\_init\_params**(3)](/io_uring_queue_init_params/3.md)
