shadow_queue
struct hl_cs_job **shadow_queue;
kfree(q->shadow_queue);
q->shadow_queue[hl_pi_2_offset(q->pi)] = job;
q->shadow_queue = kmalloc_objs(struct hl_cs_job *, HL_QUEUE_LENGTH);
if (!q->shadow_queue) {
job = queue->shadow_queue[hl_pi_2_offset(cs_seq)];
struct shadow_queue shadow_rq;
struct shadow_queue shadow_sq;
static inline void shadow_queue_advance_producer(struct shadow_queue *queue)
static inline void shadow_queue_advance_consumer(struct shadow_queue *queue)
static inline void shadow_queue_advance_next_to_complete(struct shadow_queue *queue)
static inline int create_shadow_queue(struct shadow_queue *queue, uint32_t length, uint32_t stride)
static inline void destroy_shadow_queue(struct shadow_queue *queue)
static inline bool shadow_queue_full(struct shadow_queue *queue)
static inline bool shadow_queue_empty(struct shadow_queue *queue)
shadow_queue_get_element(const struct shadow_queue *queue, u64 unmasked_index)
shadow_queue_producer_entry(struct shadow_queue *queue)
shadow_queue_get_next_to_consume(const struct shadow_queue *queue)
shadow_queue_get_next_to_complete(struct shadow_queue *queue)