buf = allocate_mem(s, bs);
if (!buf)
- return 1;
+ return -1;
s->iovecs[i].iov_base = buf;
s->iovecs[i].iov_len = bs;
}
}
if (err) {
printf("queue setup failed: %s, %d\n", strerror(errno), err);
- return 1;
+ return -1;
}
if (!init_printed) {
struct iocb *iocbs;
struct io_event *events;
#ifdef ARCH_HAVE_CPU_CLOCK
- int nr_batch = submitter_init(s);
-#else
- submitter_init(s);
+ int nr_batch;
+#endif
+
+ ret = submitter_init(s);
+ if (ret < 0)
+ goto done;
+
+#ifdef ARCH_HAVE_CPU_CLOCK
+ nr_batch = ret;
#endif
iocbsptr = calloc(depth, sizeof(struct iocb *));
free(iocbsptr);
free(iocbs);
free(events);
+done:
finish = 1;
return NULL;
}
struct io_sq_ring *ring = &s->sq_ring;
int ret, prepped;
#ifdef ARCH_HAVE_CPU_CLOCK
- int nr_batch = submitter_init(s);
-#else
- submitter_init(s);
+ int nr_batch;
+#endif
+
+ ret = submitter_init(s);
+ if (ret < 0)
+ goto done;
+
+#ifdef ARCH_HAVE_CPU_CLOCK
+ nr_batch = ret;
#endif
if (register_ring)
if (register_ring)
io_uring_unregister_ring(s);
+done:
finish = 1;
return NULL;
}
struct submitter *s = data;
int ret;
- submitter_init(s);
+ if (submitter_init(s) < 0)
+ goto done;
do {
uint64_t offset;
add_stat(s, s->clock_index, 1);
} while (!s->finish);
+done:
finish = 1;
return NULL;
}