From 32b3680c085af154d36fcae4f3c17220fb0f0280 Mon Sep 17 00:00:00 2001 From: heppen Date: Thu, 6 Jun 2024 09:24:01 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=20fix(watt):=20=20=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=93=A6=E7=89=B9=E8=B0=83=E5=BA=A6=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E9=98=9F=E5=88=97=E6=80=BB=E6=98=AF=E5=8F=AA=E6=9C=89=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E4=BB=BB=E5=8A=A1=EF=BC=8C=E4=B8=94=E4=B8=8D=E6=AD=A3?= =?UTF-8?q?=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pwrapic/src/sockclient.c | 10 +++++---- pwrapic/test/procapitest.c | 4 ++-- pwrapis/src/procservice.c | 42 +++++++++++++------------------------- 3 files changed, 22 insertions(+), 34 deletions(-) diff --git a/pwrapic/src/sockclient.c b/pwrapic/src/sockclient.c index 9601248..b8b6006 100644 --- a/pwrapic/src/sockclient.c +++ b/pwrapic/src/sockclient.c @@ -403,7 +403,7 @@ static int SendMsgSyn(PwrMsg *msg, PwrMsg **rsp) node->reqMsg = NULL; node->rspMsg = NULL; ReleaseResultWaitingMsgNode(node); - return PWR_SUCCESS; + return ret; } static int SendReqMsgAndWaitForRsp(PwrMsg *req, PwrMsg **rsp) @@ -413,9 +413,11 @@ static int SendReqMsgAndWaitForRsp(PwrMsg *req, PwrMsg **rsp) } CHECK_SOCKET_STATUS(); - if (SendMsgSyn(req, rsp) != PWR_SUCCESS) { - PwrLog(ERROR, "Send msg to server failed. optType: %d, seqId: %u", req->head.optType, req->head.seqId); - return PWR_ERR_SYS_EXCEPTION; + int ret = SendMsgSyn(req, rsp); + if (ret != PWR_SUCCESS) { + PwrLog(ERROR, "Send msg to server failed. optType: %d, seqId: %u, ret: %d", + req->head.optType, req->head.seqId, ret); + return ret; } if (*rsp == NULL || (*rsp)->head.rspCode != PWR_SUCCESS) { diff --git a/pwrapic/test/procapitest.c b/pwrapic/test/procapitest.c index 7dea2e8..5a1ef32 100644 --- a/pwrapic/test/procapitest.c +++ b/pwrapic/test/procapitest.c @@ -145,7 +145,7 @@ static void TEST_PWR_PROC_SetAndGetSmartGridGov(void) ret, sgGov.sgAgentState, sgGov.sgLevel0Gov, sgGov.sgLevel1Gov); } -static void TEST_PWR_PROC_RebuildAffinityDomain(void) +static void TEST_PWR_PROC_SetWattFirstDomain(void) { int cpuId = 0; int ret = PWR_PROC_SetWattFirstDomain(cpuId); @@ -193,7 +193,7 @@ void TEST_PROC_AllFunc(void) TEST_PWR_PROC_SetAndGetSmartGridState(); TEST_PWR_PROC_SetAndGetSmartGridProcs(); TEST_PWR_PROC_SetAndGetSmartGridGov(); - TEST_PWR_PROC_RebuildAffinityDomain(); + TEST_PWR_PROC_SetWattFirstDomain(); TEST_PWR_PROC_GetServiceState(); TEST_PWR_PROC_SetServiceState(); TEST_PWR_PROC_GetServiceState(); diff --git a/pwrapis/src/procservice.c b/pwrapis/src/procservice.c index b05814b..b1c8f3d 100644 --- a/pwrapis/src/procservice.c +++ b/pwrapis/src/procservice.c @@ -16,6 +16,7 @@ #include "procservice.h" #include #include +#include #include "pwrerr.h" #include "server.h" #include "log.h" @@ -245,39 +246,24 @@ static int WriteWattAttrs(const PWR_PROC_WattAttrs *wattAttrs) return PWR_SUCCESS; } -static int ReadWattProcs(pid_t *wattProcs, size_t size, int *procNum) +static int ReadWattProcs(pid_t *wattProcs, int len, int *procNum) { - char *content = (char *)malloc(size); - if (!content) { - return PWR_ERR_SYS_EXCEPTION; + FILE *fp = fopen(WATT_PROC_PATH, "r"); + if (fp == NULL) { + Logger(ERROR, MD_NM_SVR_PROC, "Failed to open file %s. errno:%d, %s", WATT_PROC_PATH, errno, strerror(errno)); + return PWR_ERR_FILE_OPEN_FAILED; } - int ret = ReadFile(WATT_PROC_PATH, content, size); - if (ret != PWR_SUCCESS) { - free(content); - return ret; + char line[PWR_MAX_STRING_LEN] = {0}; + int idx = 0; + while (fgets(line, PWR_MAX_STRING_LEN - 1, fp) != NULL && idx < len) { + LRtrim(line); + wattProcs[idx] = (pid_t)atoi(line); + idx++; } - char **strProcs = calloc(PWR_MAX_PROC_NUM, sizeof(char *)); - if (!strProcs) { - free(content); - return PWR_ERR_SYS_EXCEPTION; - } - int num = PWR_MAX_PROC_NUM; - char *splitBuff = StrSplit(content, LINE_SEP, strProcs, &num); - if (!splitBuff) { - free(strProcs); - free(content); - return PWR_ERR_SYS_EXCEPTION; - } + *procNum = idx; - for (int i = 0; i < num; i++) { - wattProcs[i] = (pid_t)atoi(strProcs[i]); - } - *procNum = num; - free(splitBuff); - free(strProcs); - free(content); return PWR_SUCCESS; } @@ -591,7 +577,7 @@ void ProcGetWattProcs(PwrMsg *req) } bzero(wattProcs, size); int procNum = 0; - int rspCode = ReadWattProcs(wattProcs, size, &procNum); + int rspCode = ReadWattProcs(wattProcs, PWR_MAX_PROC_NUM, &procNum); if (rspCode != PWR_SUCCESS) { free(wattProcs); SendRspToClient(req, rspCode, NULL, 0); -- Gitee