diff options
author | scottl <scottl@FreeBSD.org> | 2007-04-19 14:28:43 +0000 |
---|---|---|
committer | scottl <scottl@FreeBSD.org> | 2007-04-19 14:28:43 +0000 |
commit | 59a37d31ba70513c3946326203c653bb21aec1d0 (patch) | |
tree | 2ceae5f7c4e3735625f60ec06eedb4ea16f78d75 /sys/cam/cam_sim.h | |
parent | c654468e48e06df5cad34378176d6fd5d875153f (diff) | |
download | FreeBSD-src-59a37d31ba70513c3946326203c653bb21aec1d0.zip FreeBSD-src-59a37d31ba70513c3946326203c653bb21aec1d0.tar.gz |
Split the camisr into per-SIM done queues. This optimizes the locking a
little bit and allows for direct dispatch of the doneq from certain
contexts that would otherwise face recursive locking problems.
Diffstat (limited to 'sys/cam/cam_sim.h')
-rw-r--r-- | sys/cam/cam_sim.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/cam/cam_sim.h b/sys/cam/cam_sim.h index 8976529..c2d3c5f 100644 --- a/sys/cam/cam_sim.h +++ b/sys/cam/cam_sim.h @@ -92,6 +92,8 @@ struct cam_sim { const char *sim_name; void *softc; struct mtx *mtx; + TAILQ_HEAD(, ccb_hdr) sim_doneq; + TAILQ_ENTRY(cam_sim) links; u_int32_t path_id;/* The Boot device may set this to 0? */ u_int32_t unit_number; u_int32_t bus_id; @@ -100,6 +102,7 @@ struct cam_sim { u_int32_t flags; #define CAM_SIM_REL_TIMEOUT_PENDING 0x01 #define CAM_SIM_MPSAFE 0x02 +#define CAM_SIM_ON_DONEQ 0x04 struct callout callout; struct cam_devq *devq; /* Device Queue to use for this SIM */ |