/***************************************************************************** 函 数 名 : Log_Init 功能描述 : 打印初始化 输入参数 : VOS_VOID 输出参数 : 无 返 回 值 : VOS_VOID 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2007年4月24日 作 者 : 李霄 46160 修改内容 : 新生成函数 *****************************************************************************/ VOS_VOID Log_Init(VOS_VOID) { OM_PORT_CFG_STRU stPortCfg; g_stLogEnt.ulPrintSwitch = LOG_FALSE; if (VOS_OK != VOS_SmMCreate("LOG_MSem", VOS_SEMA4_PRIOR | VOS_SEMA4_INVERSION_SAFE, &g_logBuffSem)) { vos_printf("Log: Error, semMCreate Fail"); return ; } if (VOS_OK != VOS_SmCCreate("LOG_CSem", 0, VOS_SEMA4_FIFO, &(g_stLogEnt.semOmPrint))) { VOS_SmDelete(g_logBuffSem); vos_printf("Log: Error, semCCreate Fail"); return ; } g_stLogEnt.rngOmRbufId = OM_RingBufferCreate(LOG_BUF_VOLUMN); if (LOG_NULL_PTR == g_stLogEnt.rngOmRbufId) { VOS_SmDelete(g_logBuffSem); VOS_SmDelete(g_stLogEnt.semOmPrint); vos_printf("Log: Error, rngCreate Fail"); return; } /* 从NV项中读出LOG的输出方式和文件支持的最大大小 */ if(NV_OK != NV_Read(en_NV_Item_Om_PsLog_Port, &stPortCfg, sizeof(OM_PORT_CFG_STRU))) { vos_printf("Log_InitFile: NV_Read fail, NV Id :%d\n", en_NV_Item_Om_PsLog_Port); stPortCfg.ulMaxFileSize = 0; } else { /*参数检测*/ if (OM_OUTPUT_BUTT > stPortCfg.enPortType) { g_stLogEnt.ulLogOutput = stPortCfg.enPortType; } } g_stLogEnt.ulPrintSwitch = LOG_TRUE; return; }
VOS_VOID NFExt_SelfTaskInit(VOS_VOID) { g_stExEntity.pRingBufferId = OM_RingBufferCreate(NF_EXT_RING_BUF_SIZE); if ( VOS_NULL_PTR == g_stExEntity.pRingBufferId ) { vos_printf("NFExt_SelfTaskInit : ERROR : Create ring buffer Failed!" ); return; } /* 初始化自处理任务的等待队列头 */ init_waitqueue_head(&g_stExEntity.stWaitHeadTxTask); spin_lock_init(&g_stExEntity.stLockTxTask); }
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; }
VOS_UINT32 OM_PrintfInit(VOS_VOID) { OM_PORT_CFG_STRU stPortCfg; NAS_NVIM_SYSTEM_APP_CONFIG_STRU stAPPConfig; stAPPConfig.usSysAppConfigType = SYSTEM_APP_BUTT; if(NV_OK != NV_Read(en_NV_Item_System_APP_Config, &stAPPConfig, sizeof(NAS_NVIM_SYSTEM_APP_CONFIG_STRU))) { PS_LOG(WUEPS_PID_OM, 0, PS_PRINT_ERROR, "OM_AcpuSelfTaskReg:Read NV en_NV_Item_System_APP_Config fail!"); } if(SYSTEM_APP_WEBUI != stAPPConfig.usSysAppConfigType) { return VOS_OK; } VOS_MemSet(&g_stOmPrintfErrRecord, 0, sizeof(OM_PRINTF_ERROR_RECORD_STRU)); VOS_MemSet(g_astOmPrintfOutPutLev, LOG_LEVEL_OFF, OM_PRINTF_MODULE_MAX_NUM*sizeof(LOG_LEVEL_EN)); /* 读NV项获取输出端口配置和文件大小,若失败则默认输出端口为SHELL口, 文件大小为0表示取默认文件大小 */ if(NV_OK != NV_Read(en_NV_Item_Om_Printf_Port, &stPortCfg, sizeof(OM_PORT_CFG_STRU))) { stPortCfg.ulMaxFileSize = 0; } else { /* 判断端口范围 */ if (OM_OUTPUT_BUTT > stPortCfg.enPortType) { g_ulOmPrintfPort = (VOS_UINT32)stPortCfg.enPortType; } } /* 创建Printf BUFFER 保护信号量 */ if(VOS_OK != VOS_SmMCreate("Pt", VOS_SEMA4_PRIOR | VOS_SEMA4_INVERSION_SAFE, &g_ulOmPrintfBuffSem)) { return VOS_ERR; } /*创建存储OM_Printf数据的环形缓冲区*/ g_pstOmPrintfBufId = OM_RingBufferCreate(OM_PRINTF_BUFFER_SIZE); if (VOS_NULL_PTR == g_pstOmPrintfBufId) { VOS_SmDelete(g_ulOmPrintfBuffSem); return VOS_ERR; } #if (VOS_OS_VER == VOS_LINUX) if (VOS_OK != OmPrintf_VFInit()) { VOS_SmDelete(g_ulOmPrintfBuffSem); return VOS_ERR; } #endif DRV_MSP_PROC_REG(OM_PRINTF_WITH_MODULE, (BSP_MspProc)OM_PrintfWithModule); DRV_MSP_PROC_REG(OM_PRINTF, (BSP_MspProc)OM_Printf); DRV_MSP_PROC_REG(OM_PRINTF_GET_MODULE_IDLEV,(BSP_MspProc)OM_PrintfGetModuleIdLev); /* 模块初始化完后将全局变量置TRUE*/ g_bIsPrintfInit = VOS_TRUE; return VOS_OK; }
/***************************************************************************** 函 数 名 : Log_Init 功能描述 : 打印初始化 输入参数 : void 输出参数 : 无 返 回 值 : void 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2007年4月24日 作 者 : 李霄 46160 修改内容 : 新生成函数 *****************************************************************************/ void Log_Init(void) { OM_PORT_CFG_STRU stPortCfg; g_stLogEnt.ulPrintSwitch = LOG_FALSE; if (VOS_OK != VOS_SmMCreate("LOG_MSem", VOS_SEMA4_PRIOR | VOS_SEMA4_INVERSION_SAFE, &g_logBuffSem)) { vos_printf("Log: Error, semMCreate Fail"); return ; } if (VOS_OK != VOS_SmCCreate("LOG_CSem", 0, VOS_SEMA4_FIFO, &(g_stLogEnt.semOmPrint))) { VOS_SmDelete(g_logBuffSem); vos_printf("Log: Error, semCCreate Fail"); return ; } g_stLogEnt.rngOmRbufId = OM_RingBufferCreate(LOG_BUF_VOLUMN); if (LOG_NULL_PTR == g_stLogEnt.rngOmRbufId) { VOS_SmDelete(g_logBuffSem); VOS_SmDelete(g_stLogEnt.semOmPrint); vos_printf("Log: Error, rngCreate Fail"); return; } /* 从NV项中读出LOG的输出方式和文件支持的最大大小 */ if(NV_OK != NV_Read(en_NV_Item_Om_PsLog_Port, &stPortCfg, sizeof(OM_PORT_CFG_STRU))) { vos_printf("Log_InitFile: NV_Read fail, NV Id :%d\n", en_NV_Item_Om_PsLog_Port); stPortCfg.ulMaxFileSize = 0; } else { /*参数检测*/ if (OM_OUTPUT_BUTT > stPortCfg.enPortType) { g_stLogEnt.ulLogOutput = (LOG_ULONG)stPortCfg.enPortType; } } g_stLogEnt.ulPrintSwitch = LOG_TRUE; /* 注册底软的回调函数,定义OM_Log...... */ #ifdef __LOG_BBIT__ LOG_RegisterDrv((LOG_PFUN)OM_Log, (LOG_PFUN)OM_Log1, (LOG_PFUN)OM_Log2, (LOG_PFUN)OM_Log3, (LOG_PFUN)OM_Log4); #endif #ifdef __LOG_RELEASE__ LOG_RegisterDrv((LOG_PFUN)OM_LogId, (LOG_PFUN)OM_LogId1, (LOG_PFUN)OM_LogId2, (LOG_PFUN)OM_LogId3, (LOG_PFUN)OM_LogId4); #endif return; }