Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F154744362
D30115.id88631.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D30115.id88631.diff
View Options
Index: sys/cam/cam_sim.c
===================================================================
--- sys/cam/cam_sim.c
+++ sys/cam/cam_sim.c
@@ -64,6 +64,41 @@
cam_devq_free(devq);
}
+/**
+ * @brief allocate a new sim and fill in the details
+ *
+ * Allocates memory and fills in different fields and initializes the
+ * callout. The sim acts as the glue between the CAM system and other parts of
+ * the system. An @c sim_action routine gets messages from CAM's xpt system. The
+ * sim is responsible for interpreting these messages in the form of CCBs and
+ * translating them into DMA or other transactions for the HBA or other
+ * hardware.
+ *
+ * The @c mtx acts as a perimeter lock for the sim. All calls into the sim's @c
+ * sim_action are made with this lock held. It is also used to hold/release a
+ * sim, managing its reference count. When the lock is NULL, the sim is 100%
+ * responsible for locking (and the reference counting is done with a shared
+ * lock.
+ *
+ * The cam_devq passed in (@c queue) is used to arbitrate the number of
+ * outstanding transactions to the sim. For HBAs that have global limits shared
+ * between the different buses, the same devq should be specified for each bus
+ * attached to the sim.
+ *
+ * @param sim_action Function to call to process CCBs
+ * @param sim_poll Function to poll the hardware for completions
+ * @param sim_name Name of sim class
+ * @param softc Software context associated with the sim
+ * @param unit Unit number of sim
+ * @param mtx Mutex to lock while interacting with the
+ * sim, or NULL for sims that handle their
+ * own locking to enable multi queue support.
+ * @param max_dev_transactions Maximum number of concurrent
+ * untagged transactions possible
+ * @param max_tagged_dev_transactions Maximum number of concurrent
+ * tagged transactions possible.
+ * @param queue The cam_devq to use for this sim.
+ */
struct cam_sim *
cam_sim_alloc(sim_action_func sim_action, sim_poll_func sim_poll,
const char *sim_name, void *softc, u_int32_t unit,
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Apr 30, 8:57 AM (11 h, 51 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
32481831
Default Alt Text
D30115.id88631.diff (2 KB)
Attached To
Mode
D30115: cam: Add doxygen docs to cam_sim_alloc
Attached
Detach File
Event Timeline
Log In to Comment