Exemplo n.º 1
0
static uint32_t mds_quiesced_ack(struct ncsmds_callback_info *mds_info)
{
        SMFSV_EVT *smfsv_evt;
	if (smfd_cb->is_quiesced_set == true) {
                /** allocate an SMFSV_EVT **/
                if (NULL == (smfsv_evt = calloc(1, sizeof(SMFSV_EVT)))) {
                        LOG_NO("calloc FAILED");
                        goto err;
                }
                /** Initialize the Event **/
		smfsv_evt->type = SMFSV_EVT_TYPE_SMFD;
		smfsv_evt->info.smfd.type = SMFD_EVT_QUIESCED_ACK;
		smfsv_evt->cb_hdl = (uint32_t)mds_info->i_yr_svc_hdl;

                /* Push the event and we are done */
		if (NCSCC_RC_FAILURE == m_NCS_IPC_SEND(&smfd_cb->mbx, smfsv_evt, NCS_IPC_PRIORITY_VERY_HIGH)) {
			TRACE("ipc send failed");
			smfsv_evt_destroy(smfsv_evt);
			goto err;
		}
	}

	return NCSCC_RC_SUCCESS;

err:
	return NCSCC_RC_FAILURE;
}
Exemplo n.º 2
0
/****************************************************************************
 * Name          : smfd_process_mbx
 *
 * Description   : This is the function which process the IPC mail box of 
 *                 SMFD 
 *
 * Arguments     : mbx  - This is the mail box pointer on which SMFD is 
 *                        going to block.  
 *
 * Return Values : None.
 *
 * Notes         : None.
 *****************************************************************************/
void smfd_process_mbx(SYSF_MBX * mbx)
{
	SMFSV_EVT *evt = (SMFSV_EVT *) m_NCS_IPC_NON_BLK_RECEIVE(mbx, evt);

	if (evt != NULL) {
		if (evt->type != SMFSV_EVT_TYPE_SMFD) {
			LOG_ER("SMFD received wrong event type %d", evt->type);
			goto err;
		}

		switch (evt->info.smfd.type) {
		case SMFD_EVT_MDS_INFO:
			{
				proc_mds_info(smfd_cb, evt);
				break;
			}
		case SMFD_EVT_CMD_RSP:
			{
				/* The CMD RSP is always received synchronized so skip it here */
				break;
			}
		case SMFD_EVT_CBK_RSP:
			{
				proc_callback_rsp(smfd_cb, evt);
				break;
			}
		case SMFD_EVT_QUIESCED_ACK:
			{
				proc_quiesced_ack(smfd_cb, evt);
				break;
			}
		default:
			{
				LOG_ER("SMFND received unknown event %d",
				       evt->info.smfnd.type);
				break;
			}
		}
	}

 err:
	smfsv_evt_destroy(evt);
}