summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen LaHaise <bcrl@kvack.org>2002-04-09 22:31:04 +0000
committerBen LaHaise <bcrl@kvack.org>2002-04-09 22:31:04 +0000
commit0fa7e7deeb5825092b9390ee478f64b4f131f128 (patch)
treec08000c9305e360117fc309ac3597433c07f62aa
parent26ce2ddc56038e7640f815bd7951d08fa9f56ff3 (diff)
downloadlibaio-0fa7e7deeb5825092b9390ee478f64b4f131f128.tar.gz
fix iocb to initialize all fields (was causing -EINVAL)
-rw-r--r--src/libaio.h14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/libaio.h b/src/libaio.h
index d979c33..161c7b0 100644
--- a/src/libaio.h
+++ b/src/libaio.h
@@ -119,6 +119,7 @@ static inline void io_set_callback(struct iocb *iocb, io_callback_t cb)
static inline void io_prep_pread(struct iocb *iocb, int fd, void *buf, size_t count, long long offset)
{
+ memset(iocb, 0, sizeof(*iocb));
iocb->aio_fildes = fd;
iocb->aio_lio_opcode = IO_CMD_PREAD;
iocb->aio_reqprio = 0;
@@ -129,6 +130,7 @@ static inline void io_prep_pread(struct iocb *iocb, int fd, void *buf, size_t co
static inline void io_prep_pwrite(struct iocb *iocb, int fd, void *buf, size_t count, long long offset)
{
+ memset(iocb, 0, sizeof(*iocb));
iocb->aio_fildes = fd;
iocb->aio_lio_opcode = IO_CMD_PWRITE;
iocb->aio_reqprio = 0;
@@ -139,47 +141,47 @@ static inline void io_prep_pwrite(struct iocb *iocb, int fd, void *buf, size_t c
static inline void io_prep_poll(struct iocb *iocb, int fd, int events)
{
+ memset(iocb, 0, sizeof(*iocb));
iocb->aio_fildes = fd;
iocb->aio_lio_opcode = IO_CMD_POLL;
iocb->aio_reqprio = 0;
- memset(&iocb->u, 0, sizeof(iocb->u));
iocb->u.poll.events = events;
}
static inline int io_poll(io_context_t ctx, struct iocb *iocb, io_callback_t cb, int fd, int events)
{
- io_set_callback(iocb, cb);
io_prep_poll(iocb, fd, events);
+ io_set_callback(iocb, cb);
return io_submit(ctx, 1, &iocb);
}
static inline void io_prep_fsync(struct iocb *iocb, int fd)
{
+ memset(iocb, 0, sizeof(*iocb));
iocb->aio_fildes = fd;
iocb->aio_lio_opcode = IO_CMD_FSYNC;
iocb->aio_reqprio = 0;
- memset(&iocb->u, 0, sizeof(iocb->u));
}
static inline int io_fsync(io_context_t ctx, struct iocb *iocb, io_callback_t cb, int fd)
{
- io_set_callback(iocb, cb);
io_prep_fsync(iocb, fd);
+ io_set_callback(iocb, cb);
return io_submit(ctx, 1, &iocb);
}
static inline void io_prep_fdsync(struct iocb *iocb, int fd)
{
+ memset(iocb, 0, sizeof(*iocb));
iocb->aio_fildes = fd;
iocb->aio_lio_opcode = IO_CMD_FDSYNC;
iocb->aio_reqprio = 0;
- memset(&iocb->u, 0, sizeof(iocb->u));
}
static inline int io_fdsync(io_context_t ctx, struct iocb *iocb, io_callback_t cb, int fd)
{
- io_set_callback(iocb, cb);
io_prep_fdsync(iocb, fd);
+ io_set_callback(iocb, cb);
return io_submit(ctx, 1, &iocb);
}