FreeBSD/sys/dev/isci/scil/scic_sds_controller.c
/**
 * @brief This method will copy the soft copy of the task context into
 *        the physical memory accessible by the controller.
 *
 * @note After this call is made the SCIC_SDS_IO_REQUEST object will
 *       always point to the physical memory version of the task context.
 *       Thus, all subsequent updates to the task context are performed in
 *       the TC table (i.e. DMAable memory).
 *
 * @param[in]  this_controller This parameter specifies the controller for
 *             which to copy the task context.
 * @param[in]  this_request This parameter specifies the request for which
 *             the task context is being copied.
 *
 * @return none
 */
@brief This method will copy the soft copy of the task context into
the physical memory accessible by the controller.

@note After this call is made the SCIC_SDS_IO_REQUEST object will
always point to the physical memory version of the task context.
Thus, all subsequent updates to the task context are performed in
the TC table .

@param[in]  this_controller This parameter specifies the controller for
which to copy the task context.
@param[in]  this_request This parameter specifies the request for which
the task context is being copied.

@return none
@brief This method will copy the soft copy of the task context into the physical memory accessible by the controller . @note After this call is made the SCIC_SDS_IO_REQUEST object will always point to the physical memory version of the task context . Thus all subsequent updates to the task context are performed in the TC table . @param [ in ] this_controller This parameter specifies the controller for which to copy the task context . @param [ in ] this_request This parameter specifies the request for which the task context is being copied . @return none
void scic_sds_controller_copy_task_context(
   SCIC_SDS_CONTROLLER_T *this_controller,
   SCIC_SDS_REQUEST_T    *this_request
)
{
   SCU_TASK_CONTEXT_T *task_context_buffer;
   task_context_buffer = scic_sds_controller_get_task_context_buffer(
                            this_controller, this_request->io_tag
                         );
   memcpy(
      task_context_buffer,
      this_request->task_context_buffer,
      SCI_FIELD_OFFSET(SCU_TASK_CONTEXT_T, sgl_snapshot_ac)
   );
   this_request->task_context_buffer = task_context_buffer;
}
void scic_sds_controller_copy_task_context ( SCIC_SDS_CONTROLLER_T * this_controller , SCIC_SDS_REQUEST_T * this_request ) { SCU_TASK_CONTEXT_T * task_context_buffer ; task_context_buffer = scic_sds_controller_get_task_context_buffer ( this_controller , this_request -> io_tag ) ; memcpy ( task_context_buffer , this_request -> task_context_buffer , SCI_FIELD_OFFSET ( SCU_TASK_CONTEXT_T , sgl_snapshot_ac ) ) ; this_request -> task_context_buffer = task_context_buffer ; }
@brief This method will copy the soft copy of the task context into
        the physical memory accessible by the controller.
@brief This method will copy the soft copy of the task context into the physical memory accessible by the controller .
// Now that the soft copy of the TC has been copied into the TC // table accessible by the silicon.  Thus, any further changes to // the TC (e.g. TC termination) occur in the appropriate location.