projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fio: update FSF address
[fio.git]
/
io_u_queue.h
diff --git
a/io_u_queue.h
b/io_u_queue.h
index 4f6e8e6a703b573e8f5c0d3e24fa397e090008e2..118e59342b5da4bd814be51aa7f561d519603838 100644
(file)
--- a/
io_u_queue.h
+++ b/
io_u_queue.h
@@
-8,28
+8,39
@@
struct io_u;
struct io_u_queue {
struct io_u **io_us;
unsigned int nr;
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)
{
- if (q->nr)
- return q->io_us[--q->nr];
+ if (q->nr) {
+ const unsigned int next = --q->nr;
+ struct io_u *io_u = q->io_us[next];
+
+ q->io_us[next] = NULL;
+ return io_u;
+ }
return NULL;
}
static inline void io_u_qpush(struct io_u_queue *q, struct io_u *io_u)
{
return NULL;
}
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(struct io_u_queue *q)
+static inline int io_u_qempty(
const
struct io_u_queue *q)
{
return !q->nr;
}
#define io_u_qiter(q, io_u, i) \
{
return !q->nr;
}
#define io_u_qiter(q, io_u, i) \
- for (i = 0
, io_u = (q)->io_us[0]; i < (q)->nr; i++, io_u = (q)->io_us[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);
int io_u_qinit(struct io_u_queue *q, unsigned int nr);
void io_u_qexit(struct io_u_queue *q);