FreeBSD kernel CAM code
|
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/types.h>
#include <sys/malloc.h>
#include <sys/kernel.h>
#include <cam/cam.h>
#include <cam/cam_ccb.h>
#include <cam/cam_queue.h>
#include <cam/cam_debug.h>
Go to the source code of this file.
Functions | |
__FBSDID ("$FreeBSD$") | |
static | MALLOC_DEFINE (M_CAMQ, "CAM queue", "CAM queue buffers") |
static | MALLOC_DEFINE (M_CAMDEVQ, "CAM dev queue", "CAM dev queue buffers") |
static | MALLOC_DEFINE (M_CAMCCBQ, "CAM ccb queue", "CAM ccb queue buffers") |
static __inline int | queue_cmp (cam_pinfo **queue_array, int i, int j) |
static __inline void | swap (cam_pinfo **queue_array, int i, int j) |
static void | heap_up (cam_pinfo **queue_array, int new_index) |
static void | heap_down (cam_pinfo **queue_array, int index, int last_index) |
int | camq_init (struct camq *camq, int size) |
void | camq_fini (struct camq *queue) |
u_int32_t | camq_resize (struct camq *queue, int new_size) |
void | camq_insert (struct camq *queue, cam_pinfo *new_entry) |
cam_pinfo * | camq_remove (struct camq *queue, int index) |
void | camq_change_priority (struct camq *queue, int index, u_int32_t new_priority) |
struct cam_devq * | cam_devq_alloc (int devices, int openings) |
int | cam_devq_init (struct cam_devq *devq, int devices, int openings) |
void | cam_devq_free (struct cam_devq *devq) |
u_int32_t | cam_devq_resize (struct cam_devq *camq, int devices) |
struct cam_ccbq * | cam_ccbq_alloc (int openings) |
void | cam_ccbq_free (struct cam_ccbq *ccbq) |
u_int32_t | cam_ccbq_resize (struct cam_ccbq *ccbq, int new_size) |
int | cam_ccbq_init (struct cam_ccbq *ccbq, int openings) |
void | cam_ccbq_fini (struct cam_ccbq *ccbq) |
__FBSDID | ( | "$FreeBSD$" | ) |
struct cam_ccbq * cam_ccbq_alloc | ( | int | openings | ) |
Definition at line 234 of file cam_queue.c.
References cam_ccbq_init().
void cam_ccbq_fini | ( | struct cam_ccbq * | ccbq | ) |
Definition at line 289 of file cam_queue.c.
References camq_fini(), and cam_ccbq::queue.
Referenced by cam_ccbq_free(), and xpt_release_device().
void cam_ccbq_free | ( | struct cam_ccbq * | ccbq | ) |
Definition at line 252 of file cam_queue.c.
References cam_ccbq_fini().
int cam_ccbq_init | ( | struct cam_ccbq * | ccbq, |
int | openings | ||
) |
Definition at line 277 of file cam_queue.c.
References camq_init(), cam_ccbq::dev_openings, cam_ccbq::queue, and cam_ccbq::total_openings.
Referenced by cam_ccbq_alloc(), and xpt_alloc_device().
u_int32_t cam_ccbq_resize | ( | struct cam_ccbq * | ccbq, |
int | new_size | ||
) |
Definition at line 261 of file cam_queue.c.
References camq::array_size, CAM_REQ_CMP, camq_resize(), cam_ccbq::dev_active, cam_ccbq::dev_openings, cam_ccbq::queue, and cam_ccbq::total_openings.
Referenced by xpt_dev_ccbq_resize().
struct cam_devq * cam_devq_alloc | ( | int | devices, |
int | openings | ||
) |
Definition at line 186 of file cam_queue.c.
References cam_devq_init().
Referenced by cam_simq_alloc().
void cam_devq_free | ( | struct cam_devq * | devq | ) |
Definition at line 216 of file cam_queue.c.
References camq_fini(), cam_devq::send_mtx, and cam_devq::send_queue.
Referenced by cam_simq_free().
int cam_devq_init | ( | struct cam_devq * | devq, |
int | devices, | ||
int | openings | ||
) |
Definition at line 203 of file cam_queue.c.
References camq_init(), cam_devq::send_active, cam_devq::send_mtx, cam_devq::send_openings, and cam_devq::send_queue.
Referenced by cam_devq_alloc().
u_int32_t cam_devq_resize | ( | struct cam_devq * | camq, |
int | devices | ||
) |
Definition at line 225 of file cam_queue.c.
References camq_resize().
Referenced by xpt_alloc_device(), and xpt_release_device().
void camq_change_priority | ( | struct camq * | queue, |
int | index, | ||
u_int32_t | new_priority | ||
) |
Definition at line 173 of file cam_queue.c.
References camq::entries, heap_down(), heap_up(), cam_pinfo::priority, and camq::queue_array.
Referenced by xpt_schedule_dev().
void camq_fini | ( | struct camq * | queue | ) |
Definition at line 84 of file cam_queue.c.
References camq::queue_array.
Referenced by cam_ccbq_fini(), and cam_devq_free().
int camq_init | ( | struct camq * | camq, |
int | size | ||
) |
Definition at line 58 of file cam_queue.c.
References camq::array_size, and camq::queue_array.
Referenced by cam_ccbq_init(), and cam_devq_init().
Definition at line 126 of file cam_queue.c.
References camq::array_size, camq::entries, heap_up(), cam_pinfo::index, and camq::queue_array.
Referenced by cam_ccbq_insert_ccb(), cam_ccbq_remove_ccb(), and xpt_schedule_dev().
Definition at line 146 of file cam_queue.c.
References CAM_UNQUEUED_INDEX, camq::entries, heap_down(), cam_pinfo::index, and camq::queue_array.
Referenced by cam_ccbq_insert_ccb(), cam_ccbq_remove_ccb(), xpt_freeze_devq_device(), and xpt_run_devq().
u_int32_t camq_resize | ( | struct camq * | queue, |
int | new_size | ||
) |
Definition at line 92 of file cam_queue.c.
References camq::array_size, CAM_REQ_CMP, CAM_RESRC_UNAVAIL, camq::entries, and camq::queue_array.
Referenced by cam_ccbq_insert_ccb(), cam_ccbq_resize(), and cam_devq_resize().
|
static |
Definition at line 358 of file cam_queue.c.
References queue_cmp(), and swap().
Referenced by camq_change_priority(), and camq_remove().
|
static |
Definition at line 336 of file cam_queue.c.
References queue_cmp(), and swap().
Referenced by camq_change_priority(), and camq_insert().
|
static |
|
static |
|
static |
Definition at line 304 of file cam_queue.c.
Referenced by heap_down(), and heap_up().
|
static |
Definition at line 319 of file cam_queue.c.
References cam_pinfo::index.
Referenced by heap_down(), and heap_up().