FreeBSD/sys/cam/cam_xpt.c
/*
 * This function merges stuff from the slave ccb into the master ccb, while
 * keeping important fields in the master ccb constant.
 */
This function merges stuff from the slave ccb into the master ccb, while
keeping important fields in the master ccb constant.
This function merges stuff from the slave ccb into the master ccb while keeping important fields in the master ccb constant .
void
xpt_merge_ccb(union ccb *master_ccb, union ccb *slave_ccb)
{
	master_ccb->ccb_h.retry_count = slave_ccb->ccb_h.retry_count;
	master_ccb->ccb_h.func_code = slave_ccb->ccb_h.func_code;
	master_ccb->ccb_h.timeout = slave_ccb->ccb_h.timeout;
	master_ccb->ccb_h.flags = slave_ccb->ccb_h.flags;
	bcopy(&(&slave_ccb->ccb_h)[1], &(&master_ccb->ccb_h)[1],
	      sizeof(union ccb) - sizeof(struct ccb_hdr));
}
void xpt_merge_ccb ( union ccb * master_ccb , union ccb * slave_ccb ) { master_ccb -> ccb_h . retry_count = slave_ccb -> ccb_h . retry_count ; master_ccb -> ccb_h . func_code = slave_ccb -> ccb_h . func_code ; master_ccb -> ccb_h . timeout = slave_ccb -> ccb_h . timeout ; master_ccb -> ccb_h . flags = slave_ccb -> ccb_h . flags ; bcopy ( & ( & slave_ccb -> ccb_h ) [ 1 ] , & ( & master_ccb -> ccb_h ) [ 1 ] , sizeof ( union ccb ) - sizeof ( struct ccb_hdr ) ) ; }
This function merges stuff from the slave ccb into the master ccb, while
 keeping important fields in the master ccb constant.
This function merges stuff from the slave ccb into the master ccb while keeping important fields in the master ccb constant .
/*
	 * Pull fields that are valid for peripheral drivers to set
	 * into the master CCB along with the CCB "payload".
	 */