33#ifndef _CAM_CAM_QUEUE_H
34#define _CAM_CAM_QUEUE_H 1
132#define CAMQ_GET_HEAD(camq) ((camq)->queue_array[CAMQ_HEAD])
135#define CAMQ_GET_PRIO(camq) (((camq)->entries > 0) ? \
136 ((camq)->queue_array[CAMQ_HEAD]->priority) : 0)
143 u_int32_t new_priority);
157static __inline
union ccb *
190 (
"%s: Cannot queue ccb %p func_code %#x", __func__, new_ccb,
227 (
"%s: Removed wrong entry from queue (%p != %p)", __func__,
249static __inline
union ccb *
#define GENERATIONCMP(x, op, y)
#define CAM_UNQUEUED_INDEX
void cam_ccbq_free(struct cam_ccbq *ccbq)
void camq_fini(struct camq *queue)
static __inline int cam_ccbq_pending_ccb_count(struct cam_ccbq *ccbq)
struct cam_devq * cam_devq_alloc(int devices, int openings)
TAILQ_HEAD(ccb_hdr_tailq, ccb_hdr)
void cam_ccbq_fini(struct cam_ccbq *ccbq)
int camq_init(struct camq *camq, int size)
void cam_devq_free(struct cam_devq *devq)
void camq_change_priority(struct camq *queue, int index, u_int32_t new_priority)
static __inline union ccb * cam_ccbq_peek_ccb(struct cam_ccbq *ccbq, int index)
static __inline void cam_ccbq_send_ccb(struct cam_ccbq *queue, union ccb *send_ccb)
void camq_insert(struct camq *queue, cam_pinfo *new_entry)
static __inline void cam_ccbq_release_opening(struct cam_ccbq *ccbq)
u_int32_t camq_resize(struct camq *queue, int new_size)
struct cam_ccbq * cam_ccbq_alloc(int openings)
static __inline void cam_ccbq_remove_ccb(struct cam_ccbq *ccbq, union ccb *ccb)
static __inline void cam_ccbq_insert_ccb(struct cam_ccbq *ccbq, union ccb *new_ccb)
u_int32_t cam_ccbq_resize(struct cam_ccbq *ccbq, int devices)
cam_pinfo * camq_remove(struct camq *queue, int index)
LIST_HEAD(ccb_hdr_list, ccb_hdr)
int cam_devq_init(struct cam_devq *devq, int devices, int openings)
SLIST_HEAD(ccb_hdr_slist, ccb_hdr)
static __inline void cam_ccbq_ccb_done(struct cam_ccbq *ccbq, union ccb *done_ccb)
u_int32_t cam_devq_resize(struct cam_devq *camq, int openings)
static __inline void cam_ccbq_take_opening(struct cam_ccbq *ccbq)
int cam_ccbq_init(struct cam_ccbq *ccbq, int openings)
struct ccb_hdr_tailq queue_extra_head