From 982ebfb17db0da5f80c2350831293321ba605555 Mon Sep 17 00:00:00 2001 From: queyanwen Date: Wed, 6 Dec 2023 17:09:25 +0800 Subject: [PATCH] =?UTF-8?q?powerapi=E5=AE=A2=E6=88=B7=E7=AB=AF=E5=92=8C?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E7=AB=AF=E7=BC=96=E8=AF=91=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E6=94=B9=E4=B8=BArelease=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pwrapic/src/CMakeLists.txt | 8 +++---- pwrapic/src/sockclient.c | 1 - pwrapis/src/CMakeLists.txt | 8 +++---- pwrapis/src/cpuservice.c | 44 +++++++++++++++++++------------------- pwrapis/src/diskservice.c | 2 +- pwrapis/src/server.c | 5 ++--- pwrapis/src/utils.c | 11 +++++----- 7 files changed, 38 insertions(+), 41 deletions(-) diff --git a/pwrapic/src/CMakeLists.txt b/pwrapic/src/CMakeLists.txt index ea54f60..1ffe4de 100644 --- a/pwrapic/src/CMakeLists.txt +++ b/pwrapic/src/CMakeLists.txt @@ -27,10 +27,10 @@ set ( CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Install path prefix" FORCE) install (TARGETS ${PG_NAME} DESTINATION lib) # Release compile mode -#set(CMAKE_BUILD_TYPE "Release") -#set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall") +set(CMAKE_BUILD_TYPE "Release") +set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall") # Debug compile mode -set(CMAKE_BUILD_TYPE "Debug") -set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb") +#set(CMAKE_BUILD_TYPE "Debug") +#set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb") diff --git a/pwrapic/src/sockclient.c b/pwrapic/src/sockclient.c index 092b09a..0f40861 100644 --- a/pwrapic/src/sockclient.c +++ b/pwrapic/src/sockclient.c @@ -317,7 +317,6 @@ static void *RunSocketProcess(void *none) SendMsgToSocket(); } - // todo: select中增加断连异常事件监听 int ret = select(g_sockFd + 1, &recvFdSet, NULL, NULL, &tv); if (ret > 0 && FD_ISSET(g_sockFd, &recvFdSet)) { RecvMsgFromSocket(); diff --git a/pwrapis/src/CMakeLists.txt b/pwrapis/src/CMakeLists.txt index 08e2ba7..d8600ec 100644 --- a/pwrapis/src/CMakeLists.txt +++ b/pwrapis/src/CMakeLists.txt @@ -29,10 +29,10 @@ install (FILES "${PROJECT_SOURCE_DIR}/../conf/pwrapis_config.ini" install (FILES "${PROJECT_SOURCE_DIR}/../pwrapis.service" DESTINATION /usr/lib/systemd/system) # release complile mode -#set(CMAKE_BUILD_TYPE "Release") -#set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall") +set(CMAKE_BUILD_TYPE "Release") +set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall") # debug complile mode -set(CMAKE_BUILD_TYPE "Debug") -set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb") +#set(CMAKE_BUILD_TYPE "Debug") +#set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb") diff --git a/pwrapis/src/cpuservice.c b/pwrapis/src/cpuservice.c index 71f91dd..999a015 100644 --- a/pwrapis/src/cpuservice.c +++ b/pwrapis/src/cpuservice.c @@ -385,7 +385,7 @@ static int InputTargetPolicys(PWR_CPU_CurFreq *target, char (*policys)[PWR_MAX_E if (snprintf(buffer, PWR_MAX_ELEMENT_NAME_LEN - 1, "%d", target[i].policyId) < 0) { return 1; } - strncat(policys[i], buffer, strlen(buffer)); + strcat(policys[i], buffer); } return 0; } @@ -422,8 +422,8 @@ static int CheckAvailableGovernor(const char *gov, char *policys) const char s1[] = "/sys/devices/system/cpu/cpufreq/"; const char s2[] = "/scaling_available_governors"; StrCopy(checkGovInfo, s1, strlen(gov) + PWR_MAX_NAME_LEN); - strncat(checkGovInfo, policys, strlen(gov)); - strncat(checkGovInfo, s2, strlen(s2)); + strcat(checkGovInfo, policys); + strcat(checkGovInfo, s2); char buf[PWR_MAX_STRING_LEN]; int ret = ReadFile(checkGovInfo, buf, PWR_MAX_STRING_LEN); if (ret != PWR_SUCCESS) { @@ -477,8 +477,8 @@ static int GovernorSet(const char *gov, char (*policys)[PWR_MAX_ELEMENT_NAME_LEN static const char s2[] = "/scaling_governor"; for (i = 0; i < (*poNum); i++) { StrCopy(govInfo, s1, buffLen); - strncat(govInfo, policys[i], strlen(policys[i])); - strncat(govInfo, s2, strlen(s2)); + strcat(govInfo, policys[i]); + strcat(govInfo, s2); int ret = WriteFile(govInfo, gov, strlen(gov)); if (ret != 0) { Logger(ERROR, MD_NM_SVR_CPU, "Change gov(%s) failed.", gov); @@ -513,8 +513,8 @@ static int FreqRead(PWR_CPU_CurFreq *rstData, char (*policys)[PWR_MAX_ELEMENT_NA for (int i = 0; i < (*poNum); i++) { StrCopy(freqInfo, s1, PWR_MAX_NAME_LEN); - strncat(freqInfo, policys[i], strlen(policys[i])); - strncat(freqInfo, s2, strlen(s2)); + strcat(freqInfo, policys[i]); + strcat(freqInfo, s2); int ret = ReadFile(freqInfo, buf, PWR_MAX_STRING_LEN); if (ret != PWR_SUCCESS) { return ret; @@ -546,8 +546,8 @@ static int FreqSet(PWR_CPU_CurFreq *target, int num) if (snprintf(bufPolicyId, PWR_MAX_ELEMENT_NAME_LEN - 1, "%d", target[i].policyId) < 0) { return PWR_ERR_FILE_SPRINTF_FAILED; } - strncat(setFreqInfo, bufPolicyId, strlen(bufPolicyId)); - strncat(setFreqInfo, s2, strlen(s2)); + strcat(setFreqInfo, bufPolicyId); + strcat(setFreqInfo, s2); ret = WriteFile(setFreqInfo, bufFreq, strlen(bufFreq)); if (ret != 0) { return ret; @@ -571,8 +571,8 @@ static int FreqDomainRead(char *buf, char (*policys)[PWR_MAX_ELEMENT_NAME_LEN], const char s2[] = "/affected_cpus"; for (int i = 0; i < domainNum; i++) { StrCopy(domainInfo, s1, PWR_MAX_NAME_LEN); - strncat(domainInfo, policys[i], strlen(policys[i])); - strncat(domainInfo, s2, strlen(s2)); + strcat(domainInfo, policys[i]); + strcat(domainInfo, s2); bzero(domainbuf, PWR_MAX_CPU_LIST_LEN); int ret = ReadFile(domainInfo, domainbuf, PWR_MAX_CPU_LIST_LEN); if (ret != PWR_SUCCESS) { @@ -682,8 +682,8 @@ static int FreqRangeSet(PWR_CPU_FreqRange *rstData) const char min2[] = "/scaling_min_freq"; for (i = 0; i < poNum; i++) { StrCopy(minFreqFile, min1, PWR_MAX_NAME_LEN); - strncat(minFreqFile, policys[i], strlen(policys[i])); - strncat(minFreqFile, min2, strlen(min2)); + strcat(minFreqFile, policys[i]); + strcat(minFreqFile, min2); ret = WriteFile(minFreqFile, buf, strlen(buf)); if (ret != 0) { return ret; @@ -699,8 +699,8 @@ static int FreqRangeSet(PWR_CPU_FreqRange *rstData) const char max2[] = "/scaling_max_freq"; for (i = 0; i < poNum; i++) { StrCopy(maxFreqFile, max1, PWR_MAX_NAME_LEN); - strncat(maxFreqFile, policys[i], strlen(policys[i])); - strncat(maxFreqFile, max2, strlen(max2)); + strcat(maxFreqFile, policys[i]); + strcat(maxFreqFile, max2); ret = WriteFile(maxFreqFile, buf, strlen(buf)); if (ret != 0) { return ret; @@ -714,7 +714,7 @@ static int GetGovAttrs(PWR_CPU_FreqGovAttrs *attrs) char base[] = "/sys/devices/system/cpu/cpufreq/"; char attrPath[PWR_MAX_NAME_LEN] = {0}; StrCopy(attrPath, base, PWR_MAX_NAME_LEN - 1); - strncat(attrPath, attrs->gov, strlen(attrs->gov)); + strcat(attrPath, attrs->gov); DIR *dir = opendir(attrPath); if (dir == NULL) { Logger(ERROR, MD_NM_SVR_CPU, "Unable to open direct: %s", attrPath); @@ -745,9 +745,9 @@ static int GetGovAttr(PWR_CPU_FreqGovAttr *attr) char base[] = "/sys/devices/system/cpu/cpufreq/"; char attrPath[PWR_MAX_NAME_LEN] = {0}; StrCopy(attrPath, base, PWR_MAX_NAME_LEN - 1); - strncat(attrPath, attr->gov, strlen(attr->gov)); - strncat(attrPath, PATH_SEP_STR, strlen(PATH_SEP_STR) + 1); - strncat(attrPath, attr->attr.key, strlen(attr->attr.key)); + strcat(attrPath, attr->gov); + strcat(attrPath, PATH_SEP_STR); + strcat(attrPath, attr->attr.key); int ret = ReadFile(attrPath, attr->attr.value, sizeof(attr->attr.value)); if (ret != PWR_SUCCESS) { Logger(ERROR, MD_NM_SVR_CPU, "GetGovAttr failed. path:%s, value:%s, ret:%d", @@ -761,9 +761,9 @@ static int SetGovAttr(PWR_CPU_FreqGovAttr *attr) char base[] = "/sys/devices/system/cpu/cpufreq/"; char attrPath[PWR_MAX_NAME_LEN] = {0}; StrCopy(attrPath, base, PWR_MAX_NAME_LEN - 1); - strncat(attrPath, attr->gov, strlen(attr->gov)); - strncat(attrPath, PATH_SEP_STR, strlen(PATH_SEP_STR) + 1); - strncat(attrPath, attr->attr.key, strlen(attr->attr.key)); + strcat(attrPath, attr->gov); + strcat(attrPath, PATH_SEP_STR); + strcat(attrPath, attr->attr.key); int ret = WriteFile(attrPath, attr->attr.value, strlen(attr->attr.value)); if (ret != PWR_SUCCESS) { Logger(ERROR, MD_NM_SVR_CPU, "SetGovAttr failed. path:%s, ret:%d", attrPath, ret); diff --git a/pwrapis/src/diskservice.c b/pwrapis/src/diskservice.c index 278d46f..cb92d98 100644 --- a/pwrapis/src/diskservice.c +++ b/pwrapis/src/diskservice.c @@ -531,7 +531,7 @@ int ReadDiskName(const char *file, PWR_DISK_Info disklist[]) while ((read = getline(&line, &len, fp)) != -1) { pRes = GetNthField(line, " \n", diskNameIndex, statVal, sizeof(statVal) - 1); if (pRes != NULL) { - strncpy(disklist[i].diskId, statVal, strlen(statVal)); + strncpy(disklist[i].diskId, statVal, sizeof(statVal) - 1); } else { disklist[i].diskId[0] = '\0'; } diff --git a/pwrapis/src/server.c b/pwrapis/src/server.c index c74e5f5..856c41a 100644 --- a/pwrapis/src/server.c +++ b/pwrapis/src/server.c @@ -172,8 +172,7 @@ static void AcceptConnection(void) return; } - /* - SetKeepAlive(newClientFd); todo 链路保活,后续完善 */ + /*todo 链路保活,IPC场景下优先级放低,后续完善 */ struct ucred credSocket; if (getsockopt(newClientFd, SOL_SOCKET, SO_PEERCRED, &credSocket, &socklen) < 0) { Logger(ERROR, MD_NM_SVR, "get sock options failed"); @@ -432,7 +431,7 @@ static void *RunServerSocketProcess(void *none) } for (int i = 0; i < MAX_CLIENT_NUM; i++) { - if (FD_ISSET(g_pwrClients[i].fd, &recvFdSet)) { // new msg in + if (FD_ISSET(g_pwrClients[i].fd, &recvFdSet)) { // new msg or event ProcessRecvMsgFromClient(i); } } diff --git a/pwrapis/src/utils.c b/pwrapis/src/utils.c index e6cd7da..5565494 100644 --- a/pwrapis/src/utils.c +++ b/pwrapis/src/utils.c @@ -917,9 +917,8 @@ int DeleteSubstr(char *str, char *substr) void StrCopy(char *dest, const char *src, int destSize) { - unsigned int len = strlen(src) < destSize ? strlen(src) : destSize - 1; - strncpy(dest, src, len); - dest[len] = '\0'; + strncpy(dest, src, destSize - 1); + dest[destSize - 1] = '\0'; } int InIntRange(int *range, int len, int a) @@ -1023,8 +1022,8 @@ int GetMd5(const char *filename, char *md5) const char s1[] = "md5sum "; const char s2[] = " | awk '{print $1}'"; StrCopy(md5Cmd, s1, PWR_MAX_NAME_LEN); - strncat(md5Cmd, filename, strlen(filename)); - strncat(md5Cmd, s2, strlen(s2)); + strcat(md5Cmd, filename); + strcat(md5Cmd, s2); FILE *fp = popen(md5Cmd, "r"); if (fp == NULL) { return PWR_ERR_NULL_POINTER; @@ -1046,7 +1045,7 @@ int NormalizeAndVerifyFilepath(const char *filename, char *realpathRes) if (!path) { return PWR_ERR_PATH_NORMALIZE; } - strncpy(realpathRes, path, strlen(path)); + strncpy(realpathRes, path, MAX_FULL_NAME - 1); // Verify file path if (access(realpathRes, F_OK) != 0) { return PWR_ERR_PATH_VERIFY; -- Gitee