X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;ds=sidebyside;f=io_u_queue.h;h=b5b8d2faf3d9ae76cc5ae6a102b6785af47dd5c5;hb=3b973af558aa0802e2c8193e9afac4cd49af3ca0;hp=bda40d5ea263920055f6d75c62bdca8e4559034c;hpb=effd6ff0d9f701a64d6bc46509eedfdcfd12f553;p=fio.git diff --git a/io_u_queue.h b/io_u_queue.h index bda40d5e..b5b8d2fa 100644 --- a/io_u_queue.h +++ b/io_u_queue.h @@ -2,12 +2,14 @@ #define FIO_IO_U_QUEUE #include +#include "lib/types.h" struct io_u; struct io_u_queue { struct io_u **io_us; unsigned int nr; + unsigned int max; }; static inline struct io_u *io_u_qpop(struct io_u_queue *q) @@ -25,7 +27,12 @@ static inline struct io_u *io_u_qpop(struct io_u_queue *q) static inline void io_u_qpush(struct io_u_queue *q, struct io_u *io_u) { - q->io_us[q->nr++] = io_u; + if (q->nr < q->max) { + q->io_us[q->nr++] = io_u; + return; + } + + assert(0); } static inline int io_u_qempty(const struct io_u_queue *q) @@ -36,7 +43,7 @@ static inline int io_u_qempty(const struct io_u_queue *q) #define io_u_qiter(q, io_u, i) \ for (i = 0; i < (q)->nr && (io_u = (q)->io_us[i]); i++) -int io_u_qinit(struct io_u_queue *q, unsigned int nr); +bool io_u_qinit(struct io_u_queue *q, unsigned int nr); void io_u_qexit(struct io_u_queue *q); struct io_u_ring { @@ -46,7 +53,7 @@ struct io_u_ring { struct io_u **ring; }; -int io_u_rinit(struct io_u_ring *ring, unsigned int nr); +bool io_u_rinit(struct io_u_ring *ring, unsigned int nr); void io_u_rexit(struct io_u_ring *ring); static inline void io_u_rpush(struct io_u_ring *r, struct io_u *io_u)