static PluginCred_t *add_plugincred_node (IdentityHandle_t id) { PluginCred_t *node; init_plugincred_list (); if (!(node = get_plugincred_node (id))) { if (!(node = malloc (sizeof (PluginCred_t)))) { exit (1); } else { node->id = id; node->name = NULL; node->certificate = NULL; node->cert_len = 0; node->key = NULL; node->key_len = 0; LIST_ADD_HEAD (list, *node); } } #ifdef SP_CRED_LOG log_printf (SEC_ID, 0, "SP_CRED: Add node (%p) [%d] to credential list\r\n",(void *) node, id); #endif return (node); }
static void _ies_task_dispatch_message(ilm_struct *pIlm) { /*----------------------------------------------------------------*/ /* Local Variables */ /*----------------------------------------------------------------*/ srv_ies_ilm_job_request *pReq; srv_ies_job *pJob; srv_ies_job *pLow; /*----------------------------------------------------------------*/ /* Code Body */ /*----------------------------------------------------------------*/ switch(pIlm->msg_id) { case MSG_ID_IES_JOB_REQ: pReq = (srv_ies_ilm_job_request*)pIlm->local_para_ptr; ASSERT(NULL != pReq); pJob = pReq->pJob; ASSERT(NULL != pJob); ASSERT(KAL_FALSE == g_srv_ies_job_deinit); if(!_srv_ies_job_compare_seq_num(pReq->seqNum, pJob->seqNum)) { kal_trace(MOD_IES, TRACE_GROUP_2, "_ies_task_dispatch_message got inconsistent sequence number %d, %d", pReq->seqNum, pReq->pJob->seqNum); break; } if (SRV_IES_JOB_REQUEST_CANCEL == pReq->type) { if (!LIST_EMPTY(((srv_ies_list_head_struct*)pJob))) { LIST_DEL(((srv_ies_list_head_struct*)pJob)); } _ies_task_job_handle_cancel(pJob); if (pJob == g_ies_task_context.pJob) { g_ies_task_context.pJob = NULL; } } else { ASSERT(SRV_IES_JOB_REQUEST_START == pReq->type); ASSERT(SRV_IES_JOB_STATE_FINISHED != pJob->state); if (g_ies_task_context.pJob) { if (g_ies_task_context.pJob->jobType > pJob->jobType) { pLow = g_ies_task_context.pJob; g_ies_task_context.pJob = pJob; ASSERT(SRV_IES_JOB_STATE_FINISHED != pLow->state); switch(pLow->jobType) { case SRV_IES_JOB_TYPE_RENDER_PREVIEW: case SRV_IES_JOB_TYPE_RENDER_BUFFER: case SRV_IES_JOB_TYPE_RENDER_FILE: LIST_ADD_HEAD(&(g_ies_task_context.normal), (srv_ies_list_head_struct*)pLow); break; case SRV_IES_JOB_TYPE_CREATE_META: LIST_ADD_HEAD(&(g_ies_task_context.lowest), (srv_ies_list_head_struct*)pLow); break; default: ASSERT(0); } } else { pLow = pJob; switch(pLow->jobType) { case SRV_IES_JOB_TYPE_RENDER_PREVIEW: case SRV_IES_JOB_TYPE_RENDER_BUFFER: case SRV_IES_JOB_TYPE_RENDER_FILE: LIST_ADD_TAIL(&(g_ies_task_context.normal), (srv_ies_list_head_struct*)pLow); break; case SRV_IES_JOB_TYPE_CREATE_META: LIST_ADD_TAIL(&(g_ies_task_context.lowest), (srv_ies_list_head_struct*)pLow); break; default: ASSERT(0); } } kal_take_mutex(g_srv_ies_job_mutex); if (SRV_IES_JOB_STATE_CANCELLED != pLow->state) { pLow->state = SRV_IES_JOB_STATE_PENDING; } kal_give_mutex(g_srv_ies_job_mutex); } else { ASSERT(SRV_IES_JOB_STATE_FINISHED != pJob->state); g_ies_task_context.pJob = pJob; } if (_ies_task_job_handle_start(g_ies_task_context.pJob)) { g_ies_task_context.pJob = NULL; } } break; default: break; } }