本文整理汇总了C++中SCIF_LOG_TRACE函数的典型用法代码示例。如果您正苦于以下问题:C++ SCIF_LOG_TRACE函数的具体用法?C++ SCIF_LOG_TRACE怎么用?C++ SCIF_LOG_TRACE使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了SCIF_LOG_TRACE函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: scif_sas_remote_device_stopping_complete_high_priority_io_handler
/**
* @brief This method provides STOPPING state handling for high priority
* IO requests, when the framework attempts to complete a high
* priority request.
*
* @param[in] remote_device This parameter specifies the remote device
* object for which to complete the high priority IO.
* @param[in] io_request This parameter specifies the IO request to be
* completed.
* @param[in] response_data This parameter is ignored, since the device
* is in the stopping state.
*
* @return This method always returns success.
*/
static
SCI_STATUS scif_sas_remote_device_stopping_complete_high_priority_io_handler(
SCI_BASE_REMOTE_DEVICE_T * remote_device,
SCI_BASE_REQUEST_T * io_request,
void * response_data,
SCI_IO_STATUS completion_status
)
{
SCIF_SAS_REMOTE_DEVICE_T * fw_device = (SCIF_SAS_REMOTE_DEVICE_T *)
remote_device;
SCIF_SAS_REQUEST_T * fw_request = (SCIF_SAS_REQUEST_T *) io_request;
SCIF_LOG_TRACE((
sci_base_object_get_logger(remote_device),
SCIF_LOG_OBJECT_REMOTE_DEVICE | SCIF_LOG_OBJECT_IO_REQUEST,
"scif_sas_remote_device_stopping_complete_high_priority_io_handler(0x%x,0x%x,0x%x) enter\n",
remote_device, io_request, response_data
));
fw_device->request_count--;
if (fw_request->is_internal == TRUE)
{
scif_sas_internal_io_request_complete(
fw_device->domain->controller,
(SCIF_SAS_INTERNAL_IO_REQUEST_T *) io_request,
SCI_SUCCESS
);
}
return SCI_SUCCESS;
}
示例2: scic_cb_port_not_ready
void scic_cb_port_not_ready(
SCI_CONTROLLER_HANDLE_T controller,
SCI_PORT_HANDLE_T port,
U32 reason_code
)
{
SCIF_SAS_DOMAIN_T * fw_domain = (SCIF_SAS_DOMAIN_T*)
sci_object_get_association(port);
SCIF_LOG_TRACE((
sci_base_object_get_logger(fw_domain),
SCIF_LOG_OBJECT_DOMAIN,
"scic_cb_port_not_ready(0x%x, 0x%x) enter\n",
controller, port
));
// The controller supplied with the port should match the controller
// saved in the domain.
ASSERT(sci_object_get_association(controller) == fw_domain->controller);
// There is no need to take action on the port reconfiguring since it is
// just a change of the port width.
if (reason_code != SCIC_PORT_NOT_READY_RECONFIGURING)
{
fw_domain->is_port_ready = FALSE;
fw_domain->state_handlers->port_not_ready_handler(
&fw_domain->parent, reason_code);
}
}
示例3: scif_sas_domain_find_next_ea_target_reset
/**
* @brief This method finds the a EA device that has target reset scheduled.
*
* @param[in] fw_domain The framework domain object
*
* @return SCIF_SAS_REMOTE_DEVICE_T The EA device that has target reset scheduled.
*/
SCIF_SAS_REMOTE_DEVICE_T * scif_sas_domain_find_next_ea_target_reset(
SCIF_SAS_DOMAIN_T * fw_domain
)
{
SCI_ABSTRACT_ELEMENT_T * current_element;
SCIF_SAS_REMOTE_DEVICE_T * current_device;
SCIF_LOG_TRACE((
sci_base_object_get_logger(fw_domain),
SCIF_LOG_OBJECT_DOMAIN,
"scif_sas_domain_find_next_ea_target_reset(0x%x) enter\n",
fw_domain
));
//search throught domain's device list to find the first sata device on spinup_hold
current_element = sci_abstract_list_get_front(&fw_domain->remote_device_list);
while (current_element != NULL )
{
current_device = (SCIF_SAS_REMOTE_DEVICE_T *)
sci_abstract_list_get_object(current_element);
current_element = sci_abstract_list_get_next(current_element);
if ( current_device->ea_target_reset_request_scheduled != NULL )
{
return current_device;
}
}
return NULL;
}
示例4: scif_sas_stp_io_request_constructed_complete_handler
/**
* @brief This method provides SATA/STP CONSTRUCTED state specific handling
* for when the user attempts to complete the supplied IO request.
* This method will be invoked in the event the call to start the
* core IO request fails for some reason. In this situation, the
* NCQ tag will be freed.
*
* @param[in] io_request This parameter specifies the IO request object
* to be started.
*
* @return This method returns a value indicating if the IO request was
* successfully started or not.
* @retval SCI_SUCCESS This return value indicates successful starting
* of the IO request.
*/
static
SCI_STATUS scif_sas_stp_io_request_constructed_complete_handler(
SCI_BASE_REQUEST_T * io_request
)
{
SCIF_SAS_IO_REQUEST_T * fw_io = (SCIF_SAS_IO_REQUEST_T *) io_request;
SCIF_LOG_TRACE((
sci_base_object_get_logger(io_request),
SCIF_LOG_OBJECT_IO_REQUEST,
"scif_sas_stp_io_request_constructed_complete_handler(0x%x) enter\n",
io_request
));
if (fw_io->parent.stp.sequence.protocol == SAT_PROTOCOL_FPDMA)
{
// For NCQ, we need to return the tag back to the free pool.
if (fw_io->parent.stp.ncq_tag != SCIF_SAS_INVALID_NCQ_TAG)
scif_sas_stp_remote_device_free_ncq_tag(
fw_io->parent.device, fw_io->parent.stp.ncq_tag
);
}
return SCI_SUCCESS;
}
示例5: scic_cb_port_bc_change_primitive_recieved
void scic_cb_port_bc_change_primitive_recieved(
SCI_CONTROLLER_HANDLE_T controller,
SCI_PORT_HANDLE_T port,
SCI_PHY_HANDLE_T phy
)
{
SCIF_SAS_DOMAIN_T * fw_domain = (SCIF_SAS_DOMAIN_T*)
sci_object_get_association(port);
SCIF_SAS_CONTROLLER_T * fw_controller = (SCIF_SAS_CONTROLLER_T *)
sci_object_get_association(controller);
SCIF_LOG_TRACE((
sci_base_object_get_logger(fw_domain),
SCIF_LOG_OBJECT_DOMAIN | SCIF_LOG_OBJECT_DOMAIN_DISCOVERY,
"scic_cb_port_bc_change_primitive_recieved(0x%x, 0x%x, 0x%x) enter\n",
controller, port, phy
));
if (fw_domain->broadcast_change_count == 0)
{ // Enable the BCN detection only if the bcn_count is zero. If bcn_count is
// not zero at this time, we won't enable BCN detection since all non-zero
// BCN_count means same to us. Furthermore, we avoid BCN storm by not
// always enabling the BCN_detection.
scic_port_enable_broadcast_change_notification(fw_domain->core_object);
}
fw_domain->broadcast_change_count++;
//if there is smp device on this domain that is in the middle of discover
//process or smp target reset, don't notify the driver layer.
if( ! scif_sas_domain_is_in_smp_activity(fw_domain) )
// Notify the user that there is, potentially, a change to the domain.
scif_cb_domain_change_notification(fw_controller, fw_domain);
}
示例6: scif_sas_remote_device_ready_task_management_complete_high_priority_io_handler
/**
* @brief This handler is currently solely used by smp remote device for
* discovering.
*
* @param[in] remote_device This parameter specifies the remote device
* object on which the user is attempting to perform a complete high
* priority IO operation.
* @param[in] io_request This parameter specifies the high priority IO request
* to be completed.
*
* @return SCI_STATUS indicate whether the io complete successfully.
*/
SCI_STATUS
scif_sas_remote_device_ready_task_management_complete_high_priority_io_handler(
SCI_BASE_REMOTE_DEVICE_T * remote_device,
SCI_BASE_REQUEST_T * io_request,
void * response_data,
SCI_IO_STATUS completion_status
)
{
SCIF_SAS_REMOTE_DEVICE_T * fw_device = (SCIF_SAS_REMOTE_DEVICE_T*)
remote_device;
SCIF_SAS_REQUEST_T * fw_request = (SCIF_SAS_REQUEST_T*) io_request;
SCI_STATUS status = SCI_SUCCESS;
SCIC_TRANSPORT_PROTOCOL protocol;
SCIF_LOG_TRACE((
sci_base_object_get_logger(remote_device),
SCIF_LOG_OBJECT_REMOTE_DEVICE | SCIF_LOG_OBJECT_IO_REQUEST,
"scif_sas_remote_device_ready_task_management_complete_high_priority_io_handler(0x%x, 0x%x, 0x%x, 0x%x) enter\n",
remote_device, io_request, response_data, completion_status
));
fw_device->request_count--;
// we are back to ready operational sub state here.
sci_base_state_machine_change_state(
&fw_device->ready_substate_machine,
SCIF_SAS_REMOTE_DEVICE_READY_SUBSTATE_OPERATIONAL
);
protocol = scic_io_request_get_protocol(fw_request->core_object);
// If this request was an SMP initiator request we created, then
// decode the response.
if (protocol == SCIC_SMP_PROTOCOL)
{
if (completion_status != SCI_IO_FAILURE_TERMINATED)
{
status = scif_sas_smp_remote_device_decode_smp_response(
fw_device, fw_request, response_data, completion_status
);
}
else
scif_sas_smp_remote_device_terminated_request_handler(fw_device, fw_request);
}
else
{
// Currently, there are only internal SMP requests. So, default work
// is simply to clean up the internal request.
if (fw_request->is_internal == TRUE)
{
scif_sas_internal_io_request_complete(
fw_device->domain->controller,
(SCIF_SAS_INTERNAL_IO_REQUEST_T *)fw_request,
SCI_SUCCESS
);
}
}
return status;
}
示例7: scif_sas_domain_get_request_by_io_tag
/**
* @brief This method searches the domain object to find a
* SCIF_SAS_REQUEST object associated with the supplied IO tag.
*
* @param[in] fw_domain This parameter specifies the domain in which to
* to find the request object.
* @param[in] io_tag This parameter specifies the IO tag value for which
* to locate the corresponding request.
*
* @return This method returns a pointer to the SCIF_SAS_REQUEST object
* associated with the supplied IO tag.
* @retval NULL This value is returned if the IO tag does not resolve to
* a request.
*/
SCIF_SAS_REQUEST_T * scif_sas_domain_get_request_by_io_tag(
SCIF_SAS_DOMAIN_T * fw_domain,
U16 io_tag
)
{
SCI_FAST_LIST_ELEMENT_T * element = fw_domain->request_list.list_head;
SCIF_SAS_IO_REQUEST_T * io_request = NULL;
SCIF_LOG_TRACE((
sci_base_object_get_logger(fw_domain),
SCIF_LOG_OBJECT_DOMAIN | SCIF_LOG_OBJECT_TASK_MANAGEMENT,
"scif_sas_domain_get_request_by_io_tag(0x%x, 0x%x) enter\n",
fw_domain, io_tag
));
while (element != NULL)
{
io_request = (SCIF_SAS_IO_REQUEST_T*) sci_fast_list_get_object(element);
// Check to see if we located the request with an identical IO tag.
if (scic_io_request_get_io_tag(io_request->parent.core_object) == io_tag)
return &io_request->parent;
element = sci_fast_list_get_next(element);
}
return NULL;
}
示例8: scif_sas_domain_terminate_requests
/**
* @brief This method will terminate the requests outstanding in the core
* based on the supplied criteria.
* - if the all three parameters are specified then only the single
* SCIF_SAS_REQUEST object is terminated.
* - if only the SCIF_SAS_DOMAIN and SCIF_SAS_REMOTE_DEVICE are
* specified, then all SCIF_SAS_REQUEST objects outstanding at
* the device are terminated. The one exclusion to this rule is
* that the fw_requestor is not terminated.
* - if only the SCIF_SAS_DOMAIN object is specified, then all
* SCIF_SAS_REQUEST objects outstanding in the domain are
* terminated.
*
* @param[in] fw_domain This parameter specifies the domain in which to
* terminate requests.
* @param[in] fw_device This parameter specifies the remote device in
* which to terminate requests. This parameter can be NULL
* as long as the fw_request parameter is NULL. It is a
* required parameter if the fw_request parameter is not NULL.
* @param[in] fw_request This parameter specifies the request object to
* be terminated. This parameter can be NULL.
* @param[in] fw_requestor This parameter specifies the task management
* request that is responsible for the termination of requests.
*
* @return none
*/
void scif_sas_domain_terminate_requests(
SCIF_SAS_DOMAIN_T * fw_domain,
SCIF_SAS_REMOTE_DEVICE_T * fw_device,
SCIF_SAS_REQUEST_T * fw_request,
SCIF_SAS_TASK_REQUEST_T * fw_requestor
)
{
SCIF_LOG_TRACE((
sci_base_object_get_logger(fw_domain),
SCIF_LOG_OBJECT_DOMAIN | SCIF_LOG_OBJECT_TASK_MANAGEMENT,
"scif_sas_domain_terminate_requests(0x%x, 0x%x, 0x%x, 0x%x) enter\n",
fw_domain, fw_device, fw_request, fw_requestor
));
if (fw_request != NULL)
{
fw_request->terminate_requestor = fw_requestor;
fw_request->state_handlers->abort_handler(&fw_request->parent);
}
else
{
SCI_FAST_LIST_ELEMENT_T * element = fw_domain->request_list.list_head;
SCIF_SAS_REQUEST_T * request = NULL;
// Cycle through the fast list of IO requests. Terminate each
// outstanding requests that matches the criteria supplied by the
// caller.
while (element != NULL)
{
request = (SCIF_SAS_REQUEST_T*) sci_fast_list_get_object(element);
// The current element may be deleted from the list becasue of
// IO completion so advance to the next element early
element = sci_fast_list_get_next(element);
// Ensure we pass the supplied criteria before terminating the
// request.
if (
(fw_device == NULL)
|| (
(request->device == fw_device)
&& (fw_requestor != (SCIF_SAS_TASK_REQUEST_T*) request)
)
)
{
if (
(request->is_waiting_for_abort_task_set == FALSE) ||
(request->terminate_requestor == NULL)
)
{
request->terminate_requestor = fw_requestor;
request->state_handlers->abort_handler(&request->parent);
}
}
}
}
}
示例9: scif_sas_stp_core_cb_packet_io_request_complete_handler
/**
* @brief This method provides STP PACKET io request STARTED state specific handling for
* when the user attempts to complete the supplied IO request.
* It will perform data/response translation.
*
* @param[in] io_request This parameter specifies the IO request object
* to be started.
*
* @return This method returns a value indicating if the IO request was
* successfully completed or not.
*/
static
SCI_STATUS scif_sas_stp_core_cb_packet_io_request_complete_handler(
SCIF_SAS_CONTROLLER_T * fw_controller,
SCIF_SAS_REMOTE_DEVICE_T * fw_device,
SCIF_SAS_REQUEST_T * fw_request,
SCI_STATUS * completion_status
)
{
SCIF_SAS_IO_REQUEST_T * fw_io = (SCIF_SAS_IO_REQUEST_T *) fw_request;
SATI_STATUS sati_status;
SCIF_LOG_TRACE((
sci_base_object_get_logger(fw_controller),
SCIF_LOG_OBJECT_IO_REQUEST,
"scif_sas_stp_packet_core_cb_io_request_complete_handler(0x%x, 0x%x, 0x%x, 0x%x) enter\n",
fw_controller, fw_device, fw_request, *completion_status
));
if (*completion_status == SCI_FAILURE_IO_RESPONSE_VALID)
{
sati_status = sati_atapi_translate_command_response(
&fw_io->parent.stp.sequence, fw_io, fw_io
);
if (sati_status == SATI_COMPLETE)
*completion_status = SCI_SUCCESS;
else if (sati_status == SATI_FAILURE_CHECK_RESPONSE_DATA)
*completion_status = SCI_FAILURE_IO_RESPONSE_VALID;
else if (sati_status == SATI_SEQUENCE_INCOMPLETE)
{
// The translation indicates that additional REQUEST SENSE command is
// necessary to finish the original SCSI request. As a result,
// do not complete the IO and begin the next stage of the IO.
return SCI_WARNING_SEQUENCE_INCOMPLETE;
}
else
{
// Something unexpected occurred during translation. Fail the
// IO request to the user.
*completion_status = SCI_FAILURE;
}
}
else if (*completion_status == SCI_SUCCESS &&
fw_request->stp.sequence.state == SATI_SEQUENCE_STATE_INCOMPLETE)
{
//The internal Request Sense command is completed successfully.
sati_atapi_translate_request_sense_response(
&fw_io->parent.stp.sequence, fw_io, fw_io
);
*completion_status = SCI_FAILURE_IO_RESPONSE_VALID;
}
return SCI_SUCCESS;
}
示例10: scic_cb_io_request_do_copy_rx_frames
BOOL scic_cb_io_request_do_copy_rx_frames(
void * scic_user_io_request
)
{
SCIF_SAS_IO_REQUEST_T * fw_io = (SCIF_SAS_IO_REQUEST_T*) scic_user_io_request;
SCIF_LOG_TRACE((
sci_base_object_get_logger(fw_io),
SCIF_LOG_OBJECT_IO_REQUEST,
"scic_cb_io_request_do_copy_rx_frames(0x%x) enter\n",
fw_io
));
// If the translation was a PIO DATA IN (i.e. read) and the request
// was actually a READ payload operation, then copy the data, since
// there will be SGL space allocated for the transfer.
if (fw_io->parent.stp.sequence.protocol == SAT_PROTOCOL_PIO_DATA_IN)
{
if (
(fw_io->parent.stp.sequence.type == SATI_SEQUENCE_ATA_PASSTHROUGH_12)
|| (fw_io->parent.stp.sequence.type == SATI_SEQUENCE_ATA_PASSTHROUGH_16)
|| (
(fw_io->parent.stp.sequence.type >= SATI_SEQUENCE_TYPE_READ_MIN)
&& (fw_io->parent.stp.sequence.type <= SATI_SEQUENCE_TYPE_READ_MAX)
)
)
{
SCIF_LOG_TRACE((
sci_base_object_get_logger(fw_io),
SCIF_LOG_OBJECT_IO_REQUEST,
"scic_cb_io_request_do_copy_rx_frames(0x%x) TRUE\n",
fw_io
));
return TRUE;
}
}
// For all other requests we leave the data in the core buffers.
// This allows the translation to translate without having to have
// separate space allocated into which to copy the data.
return FALSE;
}
示例11: scic_cb_port_bc_aen_primitive_recieved
void scic_cb_port_bc_aen_primitive_recieved(
SCI_CONTROLLER_HANDLE_T controller,
SCI_PORT_HANDLE_T port,
SCI_PHY_HANDLE_T phy
)
{
SCIF_LOG_TRACE((
sci_base_object_get_logger(sci_object_get_association(port)),
SCIF_LOG_OBJECT_DOMAIN,
"scic_cb_port_bc_aen_primitive_received(0x%x, 0x%x, 0x%x) enter\n",
controller, port, phy
));
}
示例12: scic_cb_port_stop_complete
void scic_cb_port_stop_complete(
SCI_CONTROLLER_HANDLE_T controller,
SCI_PORT_HANDLE_T port,
SCI_STATUS completion_status
)
{
SCIF_LOG_TRACE((
sci_base_object_get_logger((SCIF_SAS_DOMAIN_T*)sci_object_get_association(port)),
SCIF_LOG_OBJECT_DOMAIN,
"scic_cb_port_stop_complete(0x%x, 0x%x, 0x%x) enter\n",
controller, port, completion_status
));
}
示例13: scif_sas_high_priority_request_queue_purge_domain
/**
* @brief This method will ensure all internal requests destined for
* devices contained in the supplied domain are properly removed
* from the high priority request queue.
*
* @param[in] fw_hprq This parameter specifies the high priority request
* queue object for which to attempt to remove elements.
* @param[in] fw_domain This parameter specifies the domain for which to
* remove all high priority requests.
*
* @return none
*/
void scif_sas_high_priority_request_queue_purge_domain(
SCIF_SAS_HIGH_PRIORITY_REQUEST_QUEUE_T * fw_hprq,
SCIF_SAS_DOMAIN_T * fw_domain
)
{
SCIF_SAS_IO_REQUEST_T * fw_io;
POINTER_UINT io_address;
U32 index;
U32 element_count;
SCIF_LOG_TRACE((
sci_base_object_get_logger(&fw_hprq->lock),
SCIF_LOG_OBJECT_CONTROLLER | SCIF_LOG_OBJECT_DOMAIN_DISCOVERY,
"scif_sas_high_priority_request_queue_purge_domain(0x%x,0x%x) enter\n",
fw_hprq, fw_domain
));
element_count = sci_pool_count(fw_hprq->pool);
scif_cb_lock_acquire(fw_domain->controller, &fw_hprq->lock);
for (index = 0; index < element_count; index++)
{
sci_pool_get(fw_hprq->pool, io_address);
fw_io = (SCIF_SAS_IO_REQUEST_T*) io_address;
// If the high priority request is not intended for this domain,
// then it can be left in the pool.
if (fw_io->parent.device->domain != fw_domain)
{
sci_pool_put(fw_hprq->pool, io_address);
}
else
{
if (fw_io->parent.is_internal)
{
SCIF_SAS_INTERNAL_IO_REQUEST_T * fw_internal_io =
(SCIF_SAS_INTERNAL_IO_REQUEST_T *)fw_io;
// The request was intended for a device in the domain. Put it
// back in the pool of freely available internal request memory
// objects. The internal IO's timer is to be destoyed.
scif_sas_internal_io_request_destruct(fw_domain->controller, fw_internal_io);
}
}
}
scif_cb_lock_release(fw_domain->controller, &fw_hprq->lock);
}
示例14: scif_sas_internal_io_request_timeout_handler
/**
* @brief This method handles the timeout situation for an internal io.
*
* @param[in] fw_internal_io The timed out IO.
*
* @return none
*/
void scif_sas_internal_io_request_timeout_handler(
void * fw_internal_io
)
{
SCIF_SAS_REQUEST_T * fw_request = (SCIF_SAS_REQUEST_T *)fw_internal_io;
SCIF_LOG_TRACE((
sci_base_object_get_logger(fw_request),
SCIF_LOG_OBJECT_IO_REQUEST,
"scif_sas_internal_io_request_timeout_handler(0x%x) enter\n",
fw_internal_io
));
fw_request->state_handlers->abort_handler(&fw_request->parent);
}
示例15: scif_sas_internal_io_request_complete
/**
* @brief This methods takes care of completion of an internal request about its
* "internal" related feature, including the memory recycling and timer.
*
* @param[in] fw_controller The framework controller object.
* @param[in] fw_internal_io The internal io to be completed.
* @param[in] completion_status the completeion status by core and framework so
* far.
*
* @return none
*/
void scif_sas_internal_io_request_complete(
SCIF_SAS_CONTROLLER_T * fw_controller,
SCIF_SAS_INTERNAL_IO_REQUEST_T * fw_internal_io,
SCI_STATUS completion_status
)
{
SCIF_LOG_TRACE((
sci_base_object_get_logger(fw_controller),
SCIF_LOG_OBJECT_IO_REQUEST,
"scif_sas_internal_io_request_complete(0x%x, 0x%x, 0x%x) enter\n",
fw_controller, fw_internal_io, completion_status
));
scif_cb_timer_stop(fw_controller, fw_internal_io->internal_io_timer);
scif_sas_internal_io_request_destruct(fw_controller, fw_internal_io);
}