Action Routines
As mentioned previously, action routines are executed every time a SIM receives a CCB. You can think of action routines like the “main function” for a SIM.
Here is the function prototype for an action routine (taken from the <cam/cam_sim.h>
header):
typedef void (*sim_action_func)(struct cam_sim *sim, union ccb *ccb);
Recall that action routines switch
according to the ccb->ccb_h.func_code
variable, which contains a constant that symbolizes the I/O operation to perform. For the rest of this chapter, I’ll detail the most common constants/operations.
Note
For the complete list of constants/operations, see the xpt_opcode
enumeration defined in the <cam/cam_ccb.h>
header.
XPT_PATH_INQ
The XPT_PATH_INQ
constant specifies a path inquiry operation, ...
Get FreeBSD Device Drivers now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.