Lines Matching refs:ld

59 static inline void ring_inc(struct libaio_data *ld, unsigned int *val,
62 if (ld->is_pow2)
63 *val = (*val + add) & (ld->entries - 1);
65 *val = (*val + add) % ld->entries;
84 struct libaio_data *ld = td->io_ops->data;
88 ev = ld->aio_events + event;
146 struct libaio_data *ld = td->io_ops->data;
160 && ((struct aio_ring *)(ld->aio_ctx))->magic
162 r = user_io_getevents(ld->aio_ctx, max,
163 ld->aio_events + events);
165 r = io_getevents(ld->aio_ctx, actual_min,
166 max, ld->aio_events + events, lt);
182 struct libaio_data *ld = td->io_ops->data;
186 if (ld->queued == td->o.iodepth)
196 if (ld->queued)
204 if (ld->queued)
211 ld->iocbs[ld->head] = &io_u->iocb;
212 ld->io_us[ld->head] = io_u;
213 ring_inc(ld, &ld->head, 1);
214 ld->queued++;
239 struct libaio_data *ld = td->io_ops->data;
245 if (!ld->queued)
249 long nr = ld->queued;
251 nr = min((unsigned int) nr, ld->entries - ld->tail);
252 io_us = ld->io_us + ld->tail;
253 iocbs = ld->iocbs + ld->tail;
255 ret = io_submit(ld->aio_ctx, nr, iocbs);
260 ld->queued -= ret;
261 ring_inc(ld, &ld->tail, ret);
278 if (ld->queued) {
297 if (ld->queued)
302 } while (ld->queued);
309 struct libaio_data *ld = td->io_ops->data;
311 return io_cancel(ld->aio_ctx, &io_u->iocb, ld->aio_events);
316 struct libaio_data *ld = td->io_ops->data;
318 if (ld) {
319 io_destroy(ld->aio_ctx);
320 free(ld->aio_events);
321 free(ld->iocbs);
322 free(ld->io_us);
323 free(ld);
330 struct libaio_data *ld;
333 ld = calloc(1, sizeof(*ld));
341 err = io_queue_init(INT_MAX, &ld->aio_ctx);
343 err = io_queue_init(td->o.iodepth, &ld->aio_ctx);
347 free(ld);
351 ld->entries = td->o.iodepth;
352 ld->is_pow2 = is_power_of_2(ld->entries);
353 ld->aio_events = calloc(ld->entries, sizeof(struct io_event));
354 ld->iocbs = calloc(ld->entries, sizeof(struct iocb *));
355 ld->io_us = calloc(ld->entries, sizeof(struct io_u *));
357 td->io_ops->data = ld;