+
+ /*
+ * Basic ring buffer. 'head' is incremented in _queue(), and
+ * 'tail' is incremented in _commit(). We keep 'queued' so
+ * that we know if the ring is full or empty, when
+ * 'head' == 'tail'. 'entries' is the ring size, and
+ * 'is_pow2' is just an optimization to use AND instead of
+ * modulus to get the remainder on ring increment.
+ */
+ int is_pow2;
+ unsigned int entries;
+ unsigned int queued;
+ unsigned int head;
+ unsigned int tail;
+};
+
+struct libaio_options {
+ void *pad;
+ unsigned int userspace_reap;
+};
+
+static struct fio_option options[] = {
+ {
+ .name = "userspace_reap",
+ .lname = "Libaio userspace reaping",
+ .type = FIO_OPT_STR_SET,
+ .off1 = offsetof(struct libaio_options, userspace_reap),
+ .help = "Use alternative user-space reap implementation",
+ .category = FIO_OPT_C_ENGINE,
+ .group = FIO_OPT_G_LIBAIO,
+ },
+ {
+ .name = NULL,
+ },