---
name: "io_uring_get_sqe"
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_get_sqe"
---

# io\_uring\_get\_sqe(3)

get the next available submission queue entry from the submission queue

## NAME

io\_uring\_get\_sqe - get the next available submission queue entry from the submission queue

## SYNOPSIS

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

**struct io\_uring\_sqe \*io\_uring\_get\_sqe(struct io\_uring \****ring***);**

## DESCRIPTION

The [**io\_uring\_get\_sqe**(3)](/io_uring_get_sqe/3.md) function gets the next available submission queue entry from the submission queue belonging to the *ring* param.

On success [**io\_uring\_get\_sqe**(3)](/io_uring_get_sqe/3.md) returns a pointer to the submission queue entry. On failure NULL is returned.

If a submission queue entry is returned, it should be filled out via one of the prep functions such as [**io\_uring\_prep\_read**(3)](/io_uring_prep_read/3.md) and submitted via [**io\_uring\_submit**(3)](/io_uring_submit/3.md).

Note that neither **io\_uring\_get\_sqe** nor the prep functions set (or clear) the **user\_data** field of the SQE. If the caller expects [**io\_uring\_cqe\_get\_data**(3)](/io_uring_cqe_get_data/3.md) or [**io\_uring\_cqe\_get\_data64**(3)](/io_uring_cqe_get_data64/3.md) to return valid data when reaping IO completions, either [**io\_uring\_sqe\_set\_data**(3)](/io_uring_sqe_set_data/3.md) or [**io\_uring\_sqe\_set\_data64**(3)](/io_uring_sqe_set_data64/3.md) **MUST** have been called before submitting the request.

## RETURN VALUE

[**io\_uring\_get\_sqe**(3)](/io_uring_get_sqe/3.md) returns a pointer to the next submission queue event on success and NULL on failure. If NULL is returned, the SQ ring is currently full and entries must be submitted for processing before new ones can get allocated.

## SEE ALSO

[**io\_uring\_submit**(3)](/io_uring_submit/3.md), [**io\_uring\_sqe\_set\_data**(3)](/io_uring_sqe_set_data/3.md)
