/***************************************************************************** Function : VOS_PidCtrlBlkInit Description: Init the control block of PID Input : void Return : VOS_OK on success or errno on failure. Other : *****************************************************************************/ VOS_UINT32 VOS_PidCtrlBlkInit(VOS_VOID) { int i; for(i=VOS_PID_DOPRAEND; i<VOS_PID_BUTT; i++) { vos_PidRecords[i-VOS_PID_DOPRAEND].Pid = VOS_ID_PID_NULL; vos_PidRecords[i-VOS_PID_DOPRAEND].Fid = VOS_ID_FID_NULL; vos_PidRecords[i-VOS_PID_DOPRAEND].InitFunc = PidInitFuncDefault; vos_PidRecords[i-VOS_PID_DOPRAEND].MsgFunction = MsgProcFuncDefault; vos_PidRecords[i-VOS_PID_DOPRAEND].priority = VOS_PRIORITY_NULL; #if VOS_YES == VOS_ANALYZE_PID_MEM vos_PidRecords[i-VOS_PID_DOPRAEND].ulMsgSize = VOS_NULL; vos_PidRecords[i-VOS_PID_DOPRAEND].ulMemSize = VOS_NULL; vos_PidRecords[i-VOS_PID_DOPRAEND].ulMsgPeakSize = VOS_NULL; vos_PidRecords[i-VOS_PID_DOPRAEND].ulMemPeakSize = VOS_NULL; #endif } /* which comes from v_id.inc */ REG_FID_PID_RSP(); #if VOS_YES == VOS_ANALYZE_PID_MEM VOS_SpinLockInit(&g_stVosPidMemAnaSpinLock); #endif return(VOS_OK); }
/***************************************************************************** Function : VOS_TaskCtrlBlkInit Description: Init task's control block Input : ulTaskCtrlBlkNumber -- number Return : None. Other : *****************************************************************************/ VOS_VOID VOS_TaskCtrlBlkInit(VOS_VOID) { int i; vos_TaskCtrlBlkNumber = VOS_MAX_TASK_NUMBER; vos_TaskCtrlBlk = (VOS_TASK_CONTROL_BLOCK*)g_acVosTaskCtrlBuf; for(i=0; i<(int)vos_TaskCtrlBlkNumber; i++) { vos_TaskCtrlBlk[i].Flag = VOS_TASK_CTRL_BLK_IDLE; vos_TaskCtrlBlk[i].Tid = i; vos_TaskCtrlBlk[i].ulLinuxThreadId = 0; vos_TaskCtrlBlk[i].ulEventIsCreate = VOS_FALSE; vos_TaskCtrlBlk[i].ulEvents = 0; vos_TaskCtrlBlk[i].ulExpects = 0; vos_TaskCtrlBlk[i].ulReceives = 0; vos_TaskCtrlBlk[i].ulFlags = VOS_EVENT_NOWAIT; vos_TaskCtrlBlk[i].ulFid = 0xffffffff; } VOS_SpinLockInit(&g_stVosTaskSpinLock); sema_init(&g_stVosTaskRunSem, 0); return; }
VOS_VOID ADS_InitUlCtx(VOS_UINT8 ucInstanceIndex) { VOS_UINT32 i; VOS_UINT32 ulRst; ADS_SPEC_CTX_STRU *pstAdsSpecCtx = VOS_NULL_PTR; pstAdsSpecCtx = &(g_stAdsCtx.astAdsSpecCtx[ucInstanceIndex]); /* 默认从第一个队列开始调度 */ pstAdsSpecCtx->stAdsUlCtx.ucAdsUlCurIndex = 0; for (i = 0; i < ADS_RAB_ID_MAX + 1; i++) { pstAdsSpecCtx->stAdsUlCtx.astAdsUlQueue[i].pstAdsUlLink = VOS_NULL_PTR; pstAdsSpecCtx->stAdsUlCtx.astAdsUlQueue[i].ucIsQueueValid = VOS_FALSE; pstAdsSpecCtx->stAdsUlCtx.astAdsUlQueue[i].enPrio = ADS_QCI_TYPE_BUTT; pstAdsSpecCtx->stAdsUlCtx.astAdsUlQueue[i].usRecordNum = 0; pstAdsSpecCtx->stAdsUlCtx.astAdsUlQueue[i].enPktType = ADS_CDS_IPF_PKT_TYPE_IP; /* 锁初始化 */ VOS_SpinLockInit(&(pstAdsSpecCtx->stAdsUlCtx.astAdsUlQueue[i].stSpinLock)); pstAdsSpecCtx->stAdsUlCtx.astAdsUlQueue[i].ucRabSndPermitFlg = VOS_TRUE; } PS_MEM_SET(pstAdsSpecCtx->stAdsUlCtx.aucPrioIndex, 0, ADS_RAB_NUM_MAX); /* 读NV,将优先级加权数读写到ADS上下文中 */ ulRst = NV_ReadEx(ucInstanceIndex, en_NV_Item_ADS_Queue_Scheduler_Pri, &(pstAdsSpecCtx->stAdsUlCtx.stQueuePriNv), sizeof(ADS_UL_QUEUE_SCHEDULER_PRI_NV_STRU)); if(NV_OK != ulRst) { pstAdsSpecCtx->stAdsUlCtx.stQueuePriNv.ulStatus = VOS_FALSE; for (i = 0; i < ADS_UL_QUEUE_SCHEDULER_PRI_MAX; i++) { pstAdsSpecCtx->stAdsUlCtx.stQueuePriNv.ausPriWeightedNum[i] = ADS_UL_DEFAULT_PRI_WEIGHTED_NUM; } ADS_ERROR_LOG(ACPU_PID_ADS_UL, "ADS_InitUlCtx: NV read failed !"); } if (VOS_FALSE == pstAdsSpecCtx->stAdsUlCtx.stQueuePriNv.ulStatus) { for (i = 0; i < ADS_UL_QUEUE_SCHEDULER_PRI_MAX; i++) { pstAdsSpecCtx->stAdsUlCtx.stQueuePriNv.ausPriWeightedNum[i] = ADS_UL_DEFAULT_PRI_WEIGHTED_NUM; } } pstAdsSpecCtx->stAdsUlCtx.ucModemSndPermitFlg = VOS_TRUE; #if(FEATURE_OFF == FEATURE_SKB_EXP) pstAdsSpecCtx->stAdsUlCtx.ulUlMaxQueueLength = ADS_UL_MAX_QUEUE_LENGTH; #endif return; }
VOS_UINT32 PPM_SockPortInit(VOS_VOID) { #if (VOS_OS_VER != VOS_WIN32) if ((BSP_MODULE_SUPPORT == mdrv_misc_support_check(BSP_MODULE_TYPE_WIFI)) && (VOS_TRUE == PPM_SockIsEnable())) { /*CPM_PhySendReg(CPM_WIFI_OM_IND_PORT, (CPM_SEND_FUNC)PPM_SockOMIndComSend);*/ CPM_PhySendReg(CPM_WIFI_OM_IND_PORT, (CPM_SEND_FUNC)PPM_SockOMCfgComSend); CPM_PhySendReg(CPM_WIFI_OM_CFG_PORT, (CPM_SEND_FUNC)PPM_SockOMCfgComSend); CPM_PhySendReg(CPM_WIFI_AT_PORT, (CPM_SEND_FUNC)PPM_SockATComSend); } #endif VOS_SpinLockInit(&g_stSockTaskSpinLock); return VOS_OK; }
VOS_UINT32 CSD_InitCtx(VOS_VOID) { /*缓存队列头指针初始化*/ CSD_UL_SetQueue(VOS_NULL_PTR); /*用来记录最近触发DICC中断的时间,初始为0*/ CSD_SetCurrTxSlice(CSD_DEFAULT_TX_SLICE); /*CSD默认通话状态设置*/ CSD_SetCallState(AT_CSD_CALL_STATE_OFF); /* 锁初始化 */ VOS_SpinLockInit(&g_stCsdCtx.stSpinLock); CSD_UL_SetAtClientIndex(0); return VOS_OK; }
/***************************************************************************** Function : VOS_SemCtrlBlkInit Description: Init semaphore's control block Input : ulSemCtrlBlkNumber -- number Return : None Other : *****************************************************************************/ VOS_VOID VOS_SemCtrlBlkInit(VOS_VOID) { int i; vos_SemCtrlBlkNumber = VOS_MAX_SEM_NUMBER; vos_SemCtrlBlk = (SEM_CONTROL_BLOCK*)g_acVosSemCtrlBuf; for(i=0; i<(int)vos_SemCtrlBlkNumber; i++) { vos_SemCtrlBlk[i].Flag = VOS_SEM_CTRL_BLK_IDLE; vos_SemCtrlBlk[i].SemId = vos_SemCtrlBlk+i; } vos_SemMaxSemId = 0; VOS_SpinLockInit(&g_stVosSemSpinLock); return; }
VOS_VOID GU_OamErrLogVComPortInit(VOS_VOID) { #if(FEATURE_ON == FEATURE_PTM) VOS_SpinLockInit(&g_stVosErrLogSendSpinLock); /* 商用ERR LOG上报全局变量初始化 */ g_stOmAppMsgRecord.ulErrLogReportSend = 0;/* 记录Err Log需要上报组件 */ g_stOmAppMsgRecord.ulFTMReportSend = 0;/* 记录FTM需要上报组件 */ g_stOmAppMsgRecord.pulErrorLogModule = VOS_NULL_PTR; g_stOmAppMsgRecord.pulFTMModule = VOS_NULL_PTR; g_stOmAppMsgRecord.usModemId = MODEM_ID_BUTT; #if (VOS_LINUX == VOS_OS_VER) sema_init(&g_stOmRxErrorLogBuffSem, 1); #endif /* 注册收Vcom Error log函数给NAS */ APP_VCOM_RegDataCallback(APP_VCOM_DEV_INDEX_ERRLOG, OM_AcpuReadVComData); #endif return; }
VOS_UINT32 PPM_PortInit(VOS_VOID) { VOS_MemSet(&g_stAcpuDebugInfo, 0, sizeof(g_stAcpuDebugInfo)); VOS_MemSet(g_astOMPortUDIHandle, VOS_ERROR, sizeof(g_astOMPortUDIHandle)); VOS_MemSet(&g_stPpmPortSwitchInfo, 0, sizeof(g_stPpmPortSwitchInfo)); VOS_SpinLockInit(&g_stPpmPortSwitchSpinLock); /* USB承载的虚拟端口通道的初始化 */ PPM_UsbPortInit(); /* Hsic承载的虚拟端口通道的初始化 */ PPM_HsicPortInit(); /* Vcom承载的虚拟端口通道的初始化 */ PPM_VComPortInit(); return VOS_OK; }
VOS_VOID IMM_RbRxFreeMemTaskInit( VOS_VOID ) { /* 初始化 IMM MEM RB 可维可测实体 */ PS_MEM_SET(&g_stImmMemRbMntnEntity, 0x0, sizeof(IMM_MEM_RB_MNTN_INFO_STRU)); /* 初始化信号量 */ if ( VOS_OK != VOS_SmBCreate("g_ulImmMemRbFreeSem", 0, VOS_SEMA4_FIFO, (VOS_SEM *)&g_ulImmMemRbFreeSem ) ) { IMM_LOG(UEPS_PID_IMM_RB_FREE, IMM_PRINT_ERROR, "IMM_RB, IMM_RbRxFreeMemTaskInit, ERROR, Create g_ulImmMemRbFreeSem fail!\n"); return; } VOS_SpinLockInit(&g_stImmRbSpinLock); IMM_RbMemFreeQueInit(); IMM_RbIsrInit(UEPS_PID_IMM_RB_FREE, IMM_IPC_MEM_FREE_INT, (VOIDFUNCPTR)IMM_RbMemRelDataIsr); IMM_MemRegExtFreeCallBack(IMM_RbRemoteFreeMem); IMM_MntnInit(); return ; }/* IMM_RbRxFreeMemTaskInit */
VOS_UINT32 SCM_SoftDecodeCfgRcvTaskInit(VOS_VOID) { VOS_UINT32 ulRslt; if (VOS_OK != VOS_SmCCreate("OMCF", 0, VOS_SEMA4_FIFO, &(g_stSCMDataRcvTaskCtrlInfo.SmID))) { /*lint -e534*/ vos_printf("SCM_SoftDecodeCfgRcvTaskInit: Error, OMCFG semCCreate Fail.\n"); /*lint +e534*/ g_stScmSoftDecodeInfo.stRbInfo.ulSemCreatErr++; return VOS_ERR; } /* 注册OM配置数据接收自处理任务 */ ulRslt = VOS_RegisterSelfTaskPrio(MSP_FID_DIAG_ACPU, (VOS_TASK_ENTRY_TYPE)SCM_SoftDecodeCfgRcvSelfTask, SCM_DATA_RCV_SELFTASK_PRIO, 8096); if ( VOS_NULL_BYTE == ulRslt ) { vos_printf("SCM_SoftDecodeCfgRcvTaskInit: VOS_RegisterSelfTaskPrio Fail.\n"); return VOS_ERR; } /*lint -e534*/ VOS_MemSet(&g_stScmSoftDecodeInfo, 0, sizeof(g_stScmSoftDecodeInfo)); /*lint +e534*/ if (VOS_OK != SCM_SoftDecodeCfgHdlcInit(&g_stScmHdlcSoftDecodeEntity)) { /*lint -e534*/ vos_printf("SCM_SoftDecodeCfgRcvTaskInit: Error, HDLC Init Fail.\n"); /*lint +e534*/ g_stScmSoftDecodeInfo.ulHdlcInitErr++; return VOS_ERR; } g_stSCMDataRcvTaskCtrlInfo.rngOmRbufId = OM_RingBufferCreate(SCM_DATA_RCV_BUFFER_SIZE); if (VOS_NULL_PTR == g_stSCMDataRcvTaskCtrlInfo.rngOmRbufId) { /*lint -e534*/ vos_printf("SCM_SoftDecodeCfgRcvTaskInit: Error, Creat OMCFG ringBuffer Fail.\n"); /*lint +e534*/ g_stScmSoftDecodeInfo.stRbInfo.ulRingBufferCreatErr++; /*lint -e534*/ VOS_MemFree(MSP_PID_DIAG_APP_AGENT, g_stScmHdlcSoftDecodeEntity.pucDecapBuff); /*lint +e534*/ return VOS_ERR; } g_stSCMDataRcvTaskCtrlInfo.pucBuffer = &g_aucSCMDataRcvBuffer[0]; VOS_SpinLockInit(&g_stScmSoftDecodeDataRcvSpinLock); return VOS_OK; }