---
name: "io_prep_pwrite"
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_prep_pwrite"
---

# io\_prep\_pwrite(3)

Set up iocb for asynchronous writes

## NAME

io\_prep\_pwrite - Set up iocb for asynchronous writes

## SYNOPSIS

```
#include <errno.h>

#include <libaio.h>

inline void io_prep_pwrite(struct iocb *iocb, int fd, void *buf, size_t count, long long offset);

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

## DESCRIPTION

**io\_prep\_write**() is a convenience function for setting up parallel writes.

The first *iocb-\>u.c.nbytes = count* bytes of the file for which *iocb-\>aio\_fildes = fd* is a descriptor are written from the buffer starting at *iocb-\>u.c.buf = buf*. Writing starts at the absolute position *ioc-\>u.c.offset = offset* in the file.

This function returns immediately. To schedule the operation, the function [**io\_submit**(3)](/io_submit/3.md) must be called.

Simultaneous asynchronous operations using the same iocb produce undefined results.

## 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\_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\_set\_callback**(3)](/io_set_callback/3.md), [**io\_submit**(3)](/io_submit/3.md), [**errno**(3)](/errno/3.md).
