Lines Matching full:queue
33 /* queue size in wqes */
41 static inline int create_shadow_queue(struct shadow_queue *queue, uint32_t length, uint32_t stride) in create_shadow_queue() argument
43 queue->buffer = kvmalloc_array(length, stride, GFP_KERNEL); in create_shadow_queue()
44 if (!queue->buffer) in create_shadow_queue()
47 queue->length = length; in create_shadow_queue()
48 queue->stride = stride; in create_shadow_queue()
53 static inline void destroy_shadow_queue(struct shadow_queue *queue) in destroy_shadow_queue() argument
55 kvfree(queue->buffer); in destroy_shadow_queue()
58 static inline bool shadow_queue_full(struct shadow_queue *queue) in shadow_queue_full() argument
60 return (queue->prod_idx - queue->cons_idx) >= queue->length; in shadow_queue_full()
63 static inline bool shadow_queue_empty(struct shadow_queue *queue) in shadow_queue_empty() argument
65 return queue->prod_idx == queue->cons_idx; in shadow_queue_empty()
69 shadow_queue_get_element(const struct shadow_queue *queue, u64 unmasked_index) in shadow_queue_get_element() argument
71 u32 index = unmasked_index % queue->length; in shadow_queue_get_element()
73 return ((u8 *)queue->buffer + index * queue->stride); in shadow_queue_get_element()
77 shadow_queue_producer_entry(struct shadow_queue *queue) in shadow_queue_producer_entry() argument
79 return shadow_queue_get_element(queue, queue->prod_idx); in shadow_queue_producer_entry()
83 shadow_queue_get_next_to_consume(const struct shadow_queue *queue) in shadow_queue_get_next_to_consume() argument
85 if (queue->cons_idx == queue->next_to_complete_idx) in shadow_queue_get_next_to_consume()
88 return shadow_queue_get_element(queue, queue->cons_idx); in shadow_queue_get_next_to_consume()
92 shadow_queue_get_next_to_complete(struct shadow_queue *queue) in shadow_queue_get_next_to_complete() argument
94 if (queue->next_to_complete_idx == queue->prod_idx) in shadow_queue_get_next_to_complete()
97 return shadow_queue_get_element(queue, queue->next_to_complete_idx); in shadow_queue_get_next_to_complete()
100 static inline void shadow_queue_advance_producer(struct shadow_queue *queue) in shadow_queue_advance_producer() argument
102 queue->prod_idx++; in shadow_queue_advance_producer()
105 static inline void shadow_queue_advance_consumer(struct shadow_queue *queue) in shadow_queue_advance_consumer() argument
107 queue->cons_idx++; in shadow_queue_advance_consumer()
110 static inline void shadow_queue_advance_next_to_complete(struct shadow_queue *queue) in shadow_queue_advance_next_to_complete() argument
112 queue->next_to_complete_idx++; in shadow_queue_advance_next_to_complete()