diff options
Diffstat (limited to 'common/queue.c')
-rw-r--r-- | common/queue.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/common/queue.c b/common/queue.c index 70b4bd40d0..6e5e9e65ad 100644 --- a/common/queue.c +++ b/common/queue.c @@ -7,9 +7,21 @@ #include "queue.h" #include "util.h" +static void queue_action_null(struct queue_policy const *policy, size_t count) +{ +} + +struct queue_policy const queue_policy_null = { + .add = queue_action_null, + .remove = queue_action_null, +}; + void queue_init(struct queue const *q) { ASSERT(POWER_OF_TWO(q->buffer_units)); + ASSERT(q->policy); + ASSERT(q->policy->add); + ASSERT(q->policy->remove); q->state->head = 0; q->state->tail = 0; @@ -44,6 +56,8 @@ size_t queue_add_unit(struct queue const *q, void const *src) q->state->tail += 1; + q->policy->add(q->policy, 1); + return 1; } @@ -74,6 +88,8 @@ size_t queue_add_memcpy(struct queue const *q, q->state->tail += transfer; + q->policy->add(q->policy, transfer); + return transfer; } @@ -111,6 +127,8 @@ size_t queue_remove_unit(struct queue const *q, void *dest) q->state->head += 1; + q->policy->remove(q->policy, 1); + return 1; } @@ -133,6 +151,8 @@ size_t queue_remove_memcpy(struct queue const *q, q->state->head += transfer; + q->policy->remove(q->policy, transfer); + return transfer; } |