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