xref: /spdk/module/fsdev/aio/aio_mgr.h (revision a29d7fdf9ba2d019916288e092b6be04c4ec2aa3)
1e21c39aaSAnton Nayshtut /*   SPDX-License-Identifier: BSD-3-Clause
2e21c39aaSAnton Nayshtut  *   Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3e21c39aaSAnton Nayshtut  */
4e21c39aaSAnton Nayshtut 
5e21c39aaSAnton Nayshtut /** \file
6e21c39aaSAnton Nayshtut  * Vector async io ops
7e21c39aaSAnton Nayshtut  */
8e21c39aaSAnton Nayshtut 
9e21c39aaSAnton Nayshtut #ifndef SPDK_AIO_MGR_H
10e21c39aaSAnton Nayshtut #define SPDK_AIO_MGR_H
11e21c39aaSAnton Nayshtut 
12e21c39aaSAnton Nayshtut #include "spdk/stdinc.h"
13e21c39aaSAnton Nayshtut #include "spdk/queue.h"
14e21c39aaSAnton Nayshtut 
15e21c39aaSAnton Nayshtut struct spdk_aio_mgr_io;
16e21c39aaSAnton Nayshtut struct spdk_aio_mgr;
17e21c39aaSAnton Nayshtut 
18e21c39aaSAnton Nayshtut typedef void (*fsdev_aio_done_cb)(void *ctx, uint32_t data_size, int error);
19e21c39aaSAnton Nayshtut 
20e21c39aaSAnton Nayshtut struct spdk_aio_mgr *spdk_aio_mgr_create(uint32_t max_aios);
21e21c39aaSAnton Nayshtut struct spdk_aio_mgr_io *spdk_aio_mgr_read(struct spdk_aio_mgr *mgr, fsdev_aio_done_cb clb,
22e21c39aaSAnton Nayshtut 		void *ctx, int fd, uint64_t offs, uint32_t size, struct iovec *iovs, uint32_t iovcnt);
23e21c39aaSAnton Nayshtut struct spdk_aio_mgr_io *spdk_aio_mgr_write(struct spdk_aio_mgr *mgr, fsdev_aio_done_cb clb,
24e21c39aaSAnton Nayshtut 		void *ctx, int fd, uint64_t offs, uint32_t size, const struct iovec *iovs, uint32_t iovcnt);
25e21c39aaSAnton Nayshtut void spdk_aio_mgr_cancel(struct spdk_aio_mgr *mgr, struct spdk_aio_mgr_io *aio);
26*a29d7fdfSAnton Nayshtut bool spdk_aio_mgr_poll(struct spdk_aio_mgr *mgr); /* Returns true if it did some real work */
27e21c39aaSAnton Nayshtut void spdk_aio_mgr_delete(struct spdk_aio_mgr *mgr);
28e21c39aaSAnton Nayshtut 
29e21c39aaSAnton Nayshtut #endif /* SPDK_AIO_MGR_H */
30