projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
configure: apply ${cross_prefix} to pkg-config calls
[fio.git]
/
io_u_queue.h
diff --git
a/io_u_queue.h
b/io_u_queue.h
index bda40d5ea263920055f6d75c62bdca8e4559034c..87de894a525a8e19cfd270fa94c8b1ff4141a7b5 100644
(file)
--- a/
io_u_queue.h
+++ b/
io_u_queue.h
@@
-2,12
+2,16
@@
#define FIO_IO_U_QUEUE
#include <assert.h>
#define FIO_IO_U_QUEUE
#include <assert.h>
+#include <stddef.h>
+
+#include "lib/types.h"
struct io_u;
struct io_u_queue {
struct io_u **io_us;
unsigned int nr;
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)
};
static inline struct io_u *io_u_qpop(struct io_u_queue *q)
@@
-25,7
+29,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)
{
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)
}
static inline int io_u_qempty(const struct io_u_queue *q)
@@
-36,8
+45,8
@@
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++)
#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
);
-void io_u_qexit(struct io_u_queue *q);
+
bool io_u_qinit(struct io_u_queue *q, unsigned int nr, bool shared
);
+void io_u_qexit(struct io_u_queue *q
, bool shared
);
struct io_u_ring {
unsigned int head;
struct io_u_ring {
unsigned int head;
@@
-46,7
+55,7
@@
struct io_u_ring {
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)
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)