---
name: "io_set_callback"
section: "3"
platform: "linux"
package: "libaio"
version: "0.3.113-5"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/io_set_callback"
---

# io\_set\_callback(3)

Set up io completion callback function

## NAME

io\_set\_callback - Set up io completion callback function

## SYNOPSIS

```
#include <errno.h>

#include <libaio.h>

static inline void io_set_callback(struct iocb *iocb, io_callback_t cb);

struct iocb {
	void		*data;
	unsigned	key;
	short		aio_lio_opcode;
	short		aio_reqprio;
	int		aio_fildes;
};

typedef void (*io_callback_t)(io_context_t ctx, struct iocb *iocb, long res, long res2);

```

## DESCRIPTION

The callback is not done if the caller uses raw events from  [**io\_getevents**(3)](/io_getevents/3.md), only with the library helpers.

## RETURN VALUES

None.

## ERRORS

None.

## SEE ALSO

[**io**(3)](/io/3.md), [**io\_cancel**(3)](/io_cancel/3.md), [**io\_fsync**(3)](/io_fsync/3.md), [**io\_getevents**(3)](/io_getevents/3.md), [**io\_prep\_fsync**(3)](/io_prep_fsync/3.md), [**io\_prep\_pread**(3)](/io_prep_pread/3.md), [**io\_prep\_pwrite**(3)](/io_prep_pwrite/3.md), [**io\_queue\_init**(3)](/io_queue_init/3.md), [**io\_queue\_release**(3)](/io_queue_release/3.md), [**io\_queue\_run**(3)](/io_queue_run/3.md), [**io\_queue\_wait**(3)](/io_queue_wait/3.md), [**io\_submit**(3)](/io_submit/3.md), [**errno**(3)](/errno/3.md).
