/*lint -e961*/ VOS_VOID NAS_COMM_nsprintf ( VOS_CHAR *pcBuff, VOS_UINT16 usOffset, const VOS_CHAR *String, VOS_INT32 *pilOutLen ) { /* delay begin */ PS_LOG_RETURN(); /* delay end */ /* 入参检查 */ if ( VOS_NULL_PTR == pilOutLen ) { NAS_COMM_LOG_ERR("NAS_COMM_nsprintf, pilOutLen is NULL pointer!"); TLPS_PRINT2LAYER_ERROR(NAS_COMM_nsprintf_ENUM, LNAS_FUNCTION_LABEL1); return; } if ( VOS_NULL_PTR == pcBuff ) { NAS_COMM_LOG_ERR("NAS_COMM_nsprintf, pcBuff is NULL pointer!"); TLPS_PRINT2LAYER_ERROR(NAS_COMM_nsprintf_ENUM, LNAS_FUNCTION_LABEL2); *pilOutLen = 0; return; } if ( VOS_NULL_PTR == String ) { NAS_COMM_LOG_ERR("NAS_COMM_nsprintf, String is NULL pointer!"); TLPS_PRINT2LAYER_ERROR(NAS_COMM_nsprintf_ENUM, LNAS_FUNCTION_LABEL3); *pilOutLen = 0; return; } if ((NAS_COMM_PRINT_BUFF_LEN - 2) >= usOffset ) { /* 需要预留一个字符作为结束符 */ *pilOutLen = VOS_nsprintf(pcBuff + usOffset, (NAS_COMM_PRINT_BUFF_LEN - 1) - usOffset, String); if( (0 == *pilOutLen) || (PS_NEG_ONE == *pilOutLen) ) { NAS_COMM_LOG1_WARN("NAS_COMM_nsprintf, *pilOutLen=", *pilOutLen); TLPS_PRINT2LAYER_WARNING1(NAS_COMM_nsprintf_ENUM, LNAS_FUNCTION_LABEL4, *pilOutLen); *pilOutLen = 0; return; } } else { NAS_COMM_LOG_ERR("NAS_COMM_nsprintf, Print too long!"); TLPS_PRINT2LAYER_ERROR(NAS_COMM_nsprintf_ENUM, LNAS_FUNCTION_LABEL5); *pilOutLen = 0; return; } }
VOS_VOID NAS_COMM_nsprintf_3( VOS_CHAR *pcBuff, VOS_UINT16 usOffset, const VOS_CHAR *String, VOS_UINT32 para1, VOS_UINT32 para2, VOS_UINT32 para3, VOS_INT32 *pilOutLen ) { /* delay begin */ PS_LOG_RETURN(); /* delay end */ /* 入参检查 */ if ( VOS_NULL_PTR == pilOutLen ) { NAS_COMM_LOG_ERR("NAS_COMM_nsprintf_3, pilOutLen is NULL pointer!"); return; } if ( VOS_NULL_PTR == pcBuff ) { NAS_COMM_LOG_ERR("NAS_COMM_nsprintf_3, pcBuff is NULL pointer!"); *pilOutLen = 0; return; } if ( VOS_NULL_PTR == String ) { NAS_COMM_LOG_ERR("NAS_COMM_nsprintf_3, String is NULL pointer!"); *pilOutLen = 0; return; } if ((NAS_COMM_PRINT_BUFF_LEN - 2)>= usOffset ) { /* 需要预留一个字符作为结束符 */ *pilOutLen = VOS_nsprintf(pcBuff + usOffset, (NAS_COMM_PRINT_BUFF_LEN - 1) - usOffset, String, para1, para2, para3); if( (0 == *pilOutLen) || (PS_NEG_ONE == *pilOutLen) ) { NAS_COMM_LOG1_WARN("NAS_COMM_nsprintf_3,*pilOutLen=", *pilOutLen); *pilOutLen = 0; return; } } else { NAS_COMM_LOG_ERR("NAS_COMM_nsprintf_3, Print too long!"); *pilOutLen = 0; return; } }
/***************************************************************************** 函 数 名 : Log_BuildId 功能描述 : 构建打印点类型的打印输出信息 输入参数 : VOS_UINT32 ulLogId VOS_UINT8 ucParaCnt VOS_INT32 *plPara VOS_CHAR *pcDst VOS_UINT32 *pulLen 输出参数 : 无 返 回 值 : VOS_VOID 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2007年4月24日 作 者 : 李霄 46160 修改内容 : 新生成函数 *****************************************************************************/ VOS_VOID Log_BuildId(VOS_UINT32 ulLogId, VOS_UINT8 ucParaCnt, VOS_INT32 *plPara, VOS_CHAR *pcDst, VOS_UINT32 *pulLen) { VOS_INT32 lTmpLen; VOS_INT32 lSpareLen; VOS_INT32 lOccupyLen; VOS_UINT8 i; *pulLen = 0; if (ucParaCnt > LOG_MAX_PARA_CNT) { ucParaCnt = LOG_MAX_PARA_CNT; } lTmpLen = VOS_nsprintf( pcDst, LOG_MAX_COLUMN_VAL, "%d, ", ulLogId); LOG_AFFIRM (0 <= lTmpLen) lOccupyLen = lTmpLen; LOG_AFFIRM(LOG_MAX_COLUMN_VAL >= lOccupyLen) lSpareLen = LOG_MAX_COLUMN_VAL - lOccupyLen; lTmpLen = VOS_nsprintf( pcDst + lOccupyLen, (VOS_UINT32)lSpareLen, "%u, ", LOG_GetTick()); LOG_AFFIRM(0 <= lTmpLen) lOccupyLen += lTmpLen; LOG_AFFIRM(LOG_MAX_COLUMN_VAL >= lOccupyLen) lSpareLen = LOG_MAX_COLUMN_VAL - lOccupyLen; for (i = 0; i < ucParaCnt; i ++) { lTmpLen = VOS_nsprintf( pcDst + lOccupyLen, (VOS_UINT32)lSpareLen, "%d, ", *plPara); LOG_AFFIRM(0 <= lTmpLen) lOccupyLen += lTmpLen; LOG_AFFIRM(LOG_MAX_COLUMN_VAL >= lOccupyLen) lSpareLen = LOG_MAX_COLUMN_VAL - lOccupyLen; plPara++; } *pulLen = (VOS_UINT32)(LOG_MAX_COLUMN_VAL - lSpareLen); return; }
/***************************************************************************** Function : CreateFidsTask Description: create tasks of all FIDs Input : void : void Return : VOS_OK on success or errno on failure *****************************************************************************/ VOS_UINT32 CreateFidsTask(VOS_VOID) { VOS_UINT32 i; int ubyIndex; VOS_UINT32 ulReturnValue; VOS_UINT32 Argument[VOS_TARG_NUM] = {0}; VOS_CHAR acSelfTaskName[VOS_MAX_LENGTH_TASK_NAME]; Argument[3] = VOS_NULL_DWORD; for(i=VOS_FID_DOPRAEND; i<VOS_FID_BUTT; i++) { vos_FidCtrlBlk[i].TaskArgument[0] = vos_FidCtrlBlk[i].Qid; vos_FidCtrlBlk[i].TaskArgument[1] = i; vos_FidCtrlBlk[i].TaskArgument[3] = VOS_NULL_DWORD; ulReturnValue = VOS_CreateTask( vos_FidCtrlBlk[i].Name , &(vos_FidCtrlBlk[i].Tid) , vos_FidCtrlBlk[i].TaskFunction , vos_FidCtrlBlk[i].Priority , vos_FidCtrlBlk[i].StackSize , vos_FidCtrlBlk[i].TaskArgument); if( ulReturnValue != VOS_OK ) { Print("# VOS_CreateTask Fail in CreateFidsTask.\r\n"); return( ulReturnValue ); } VOS_RecordFIDTIDInfo( i, vos_FidCtrlBlk[i].Tid ); for( ubyIndex = 0; ubyIndex < VOS_MAX_SELF_TASK_OF_FID; ubyIndex++ ) { if( vos_FidCtrlBlk[i].SelfProcTaskFunc[ubyIndex] != VOS_NULL_PTR ) { VOS_nsprintf(acSelfTaskName, VOS_MAX_LENGTH_TASK_NAME-1, "F%d_I%d",i,ubyIndex); ulReturnValue = VOS_CreateTask( acSelfTaskName, &(vos_FidCtrlBlk[i].SelfProcTaskTid[ubyIndex]), vos_FidCtrlBlk[i].SelfProcTaskFunc[ubyIndex], vos_FidCtrlBlk[i].SelfProcTaskPriority[ubyIndex], vos_FidCtrlBlk[i].SelfProcTaskStack[ubyIndex], Argument); if( ulReturnValue != VOS_OK ) { Print("# VOS_CreateSelfTask Fail in CreateFidsTask.\r\n"); return( ulReturnValue ); } } } } return( VOS_OK ); }
/***************************************************************************** 函 数 名 : Log_BuildStr 功能描述 : 构建字符串类型的打印输出信息 输入参数 : VOS_CHAR *pcFileName VOS_UINT32 ulLineNum LOG_LEVEL_EN enPrintLev VOS_CHAR *pcOriStr VOS_UINT8 ucParaCnt VOS_INT32 *plPara VOS_CHAR *pcDstStr VOS_UINT32 *pulLen 输出参数 : 无 返 回 值 : VOS_VOID 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2007年4月24日 作 者 : 李霄 46160 修改内容 : 新生成函数 *****************************************************************************/ VOS_VOID Log_BuildStr(VOS_CHAR *pcFileName, VOS_UINT32 ulLineNum, LOG_LEVEL_EN enPrintLev, VOS_CHAR *pcOriStr, VOS_UINT8 ucParaCnt, VOS_INT32 *plPara, VOS_CHAR *pcDstStr, VOS_UINT32 *pulLen) { VOS_INT32 lTmpLen; VOS_INT32 lStrLen; VOS_INT32 lOffset; VOS_INT32 lParamLen; VOS_INT32 lSpareLen; VOS_INT32 lOccupyLen; VOS_UINT8 i; *pulLen = 0; switch ( enPrintLev ) { case LOG_LEVEL_ERROR : lTmpLen = VOS_nsprintf( pcDstStr, LOG_MAX_COLUMN_VAL, "\nERROR,F: "); break; case LOG_LEVEL_WARNING : lTmpLen = VOS_nsprintf( pcDstStr, LOG_MAX_COLUMN_VAL, "\nWARNING,F: "); break; case LOG_LEVEL_NORMAL : lTmpLen = VOS_nsprintf( pcDstStr, LOG_MAX_COLUMN_VAL, "\nNORMAL,F: "); break; case LOG_LEVEL_INFO : lTmpLen = VOS_nsprintf( pcDstStr, LOG_MAX_COLUMN_VAL, "\nINFO,F: "); break; default: lTmpLen = VOS_nsprintf( pcDstStr, LOG_MAX_COLUMN_VAL, "\nF: "); break; } lOccupyLen = lTmpLen; LOG_AFFIRM(LOG_MAX_COLUMN_VAL >= lOccupyLen) lSpareLen = LOG_MAX_COLUMN_VAL - lOccupyLen; LOG_AFFIRM(lSpareLen >= LOG_MAX_FILENAME_LEN) /* 将路径去除,只保留文件名称 */ lOffset = Log_GetPathOffset(pcFileName); lTmpLen = (VOS_INT32)strlen(pcFileName + lOffset); if (lTmpLen < LOG_MAX_FILENAME_LEN) { memcpy(pcDstStr + lOccupyLen, pcFileName + lOffset, (VOS_UINT32)lTmpLen); lOccupyLen += lTmpLen; } else { memcpy(pcDstStr + lOccupyLen, pcFileName + lOffset, LOG_MAX_FILENAME_LEN); lOccupyLen += LOG_MAX_FILENAME_LEN; } lSpareLen = LOG_MAX_COLUMN_VAL - lOccupyLen; lTmpLen = VOS_nsprintf( pcDstStr + lOccupyLen, (VOS_UINT32)lSpareLen, ", Line: %u, Tick: %u, ", ulLineNum, LOG_GetTick()); lOccupyLen += lTmpLen; lSpareLen = LOG_MAX_COLUMN_VAL - lOccupyLen; /*=======================*/ /* 计算输出参数需要的长度 */ lParamLen = ucParaCnt * LOG_MAX_PARA_LEN; lStrLen = lSpareLen - lParamLen; LOG_AFFIRM(0 <= lStrLen) /*=======================*/ /* 加入字符串信息 */ lTmpLen = (VOS_INT32)strlen(pcOriStr); if (lTmpLen <= lStrLen) { memcpy(pcDstStr + lOccupyLen, pcOriStr, (VOS_UINT32)lTmpLen); lOccupyLen += lTmpLen; } else { memcpy(pcDstStr + lOccupyLen, pcOriStr, (VOS_UINT32)lStrLen); lOccupyLen += lStrLen; } if (0 == ucParaCnt) { if (LOG_MAX_COLUMN_VAL == lOccupyLen) { *(pcDstStr + (lOccupyLen - 1)) = '\0'; } else { *(pcDstStr + lOccupyLen) = '\0'; lOccupyLen = lOccupyLen + 1; } LOG_AFFIRM(LOG_MAX_COLUMN_VAL >= lOccupyLen) *pulLen = (VOS_UINT32)lOccupyLen; return; } *(pcDstStr + lOccupyLen) = ':'; lOccupyLen = lOccupyLen + 1; LOG_AFFIRM(LOG_MAX_COLUMN_VAL > lOccupyLen) lSpareLen = LOG_MAX_COLUMN_VAL - lOccupyLen; /*=======================*/ /* 加入参数 */ for (i = 0; i < ucParaCnt; i++) { lTmpLen = VOS_nsprintf( pcDstStr + lOccupyLen, (VOS_UINT32)lSpareLen, " %d.", *(plPara + i)); lOccupyLen += lTmpLen; LOG_AFFIRM(LOG_MAX_COLUMN_VAL >= lOccupyLen) lSpareLen = LOG_MAX_COLUMN_VAL - lOccupyLen; } *pulLen = (VOS_UINT32)(LOG_MAX_COLUMN_VAL - lSpareLen); return; }