int sal_cpu_stats_get(sal_cpu_stats_t* cpu_stats) { FILE* f; uint64 nice = COMPILER_64_INIT(0,0); uint64 iowait = COMPILER_64_INIT(0,0); char line[200]; CONST char *seperator; COMPILER_64_ZERO(cpu_stats->user); COMPILER_64_ZERO(cpu_stats->kernel); COMPILER_64_ZERO(cpu_stats->idle); COMPILER_64_ZERO(cpu_stats->total); if ((f=fopen("/proc/stat", "r" )) == NULL) { return FALSE; } fgets(line, sizeof(line), f); seperator = sal_strstr(line, "cpu"); if(!seperator) { fclose(f); return FALSE; } ADVANCE_TO_NEXT_NUMBER_RETURN_FALSE_ON_ERROR(seperator, f); TAKE_NUMBER_AND_ADVANCE(seperator, cpu_stats->user); ADVANCE_TO_NEXT_NUMBER_RETURN_FALSE_ON_ERROR(seperator, f); TAKE_NUMBER_AND_ADVANCE(seperator, nice); ADVANCE_TO_NEXT_NUMBER_RETURN_FALSE_ON_ERROR(seperator, f); TAKE_NUMBER_AND_ADVANCE(seperator, cpu_stats->kernel); ADVANCE_TO_NEXT_NUMBER_RETURN_FALSE_ON_ERROR(seperator, f); TAKE_NUMBER_AND_ADVANCE(seperator, cpu_stats->idle); ADVANCE_TO_NEXT_NUMBER_RETURN_FALSE_ON_ERROR(seperator, f); TAKE_NUMBER_AND_ADVANCE(seperator, iowait); fclose(f); COMPILER_64_ADD_64(cpu_stats->kernel, nice); COMPILER_64_ADD_64(cpu_stats->kernel, iowait); COMPILER_64_ADD_64(cpu_stats->total, cpu_stats->user); COMPILER_64_ADD_64(cpu_stats->total, cpu_stats->idle); COMPILER_64_ADD_64(cpu_stats->total, cpu_stats->kernel); return TRUE; } /* sal_cpu_stats_get */
/******************************************************************************* * Name: gen_validate_path * Purpose: validate full path * Input: * pszPath: path name * Output: * Return: * success: 0 * failed : -1 * Note: ******************************************************************************/ int gen_validate_path(char *pszPath) { char **ppNameArr = NULL; unsigned long nCnt = 0; int i = 0; int nRet = 0; if (NULL == pszPath) { return -1; } if (sal_strlen(pszPath) > M_FULLPATH_MAX_LEN) { return -1; } if (NULL != sal_strstr(pszPath, "//")) { return -1; } if (split_tokens(pszPath, sal_strlen(pszPath), M_FULLPATH_DEPTH_MAX, "/", &nCnt, &ppNameArr) != 0) { return -1; } for (i = 0; i < nCnt; i++) { if (NULL == ppNameArr[i]) { continue; } if (check_filename(ppNameArr[i]) != 0) { nRet = -1; break; } } free_tokens(&ppNameArr); return nRet; }
void bslsink_sink_t_init(bslsink_sink_t *sink) { sal_memset(sink, 0, sizeof(*sink)); SHR_BITSET_RANGE(sink->units, 0, BSLSINK_MAX_NUM_UNITS); SHR_BITSET_RANGE(sink->ports, 0, BSLSINK_MAX_NUM_PORTS); sink->xtra = -1; #ifndef BSLSINK_FULL_FILE_PATH { char *ptr, *file = BSL_FILE; /* Calculate position of SDK root in BSL_FILE (__FILE__) */ ptr = sal_strstr(file, "src/appl/diag/bslsink.c"); if (ptr != NULL) { sink->path_offset = PTR_TO_UINTPTR(ptr) - PTR_TO_UINTPTR(file); } } #endif }
static char* __strstr(char* p, char* c) { return sal_strstr(p, c); }