#include <stdlib.h> #include "io_u_queue.h" int io_u_qinit(struct io_u_queue *q, unsigned int nr) { q->io_us = calloc(nr, sizeof(struct io_u *)); if (!q->io_us) return 1; q->nr = 0; q->max = nr; return 0; } void io_u_qexit(struct io_u_queue *q) { free(q->io_us); } int io_u_rinit(struct io_u_ring *ring, unsigned int nr) { ring->max = nr + 1; if (ring->max & (ring->max - 1)) { ring->max--; ring->max |= ring->max >> 1; ring->max |= ring->max >> 2; ring->max |= ring->max >> 4; ring->max |= ring->max >> 8; ring->max |= ring->max >> 16; ring->max++; } ring->ring = calloc(ring->max, sizeof(struct io_u *)); if (!ring->ring) return 1; ring->head = ring->tail = 0; return 0; } void io_u_rexit(struct io_u_ring *ring) { free(ring->ring); }