summaryrefslogtreecommitdiffstats
path: root/sys/cam/cam_sim.h
diff options
context:
space:
mode:
authorscottl <scottl@FreeBSD.org>2007-04-19 14:28:43 +0000
committerscottl <scottl@FreeBSD.org>2007-04-19 14:28:43 +0000
commit59a37d31ba70513c3946326203c653bb21aec1d0 (patch)
tree2ceae5f7c4e3735625f60ec06eedb4ea16f78d75 /sys/cam/cam_sim.h
parentc654468e48e06df5cad34378176d6fd5d875153f (diff)
downloadFreeBSD-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.h3
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 */
OpenPOWER on IntegriCloud