diff --git a/common/inc/pwrerr.h b/common/inc/pwrerr.h index 984f6ed66ed4a9e2e8b1b3c92e296be558ee1153..aa87ea273926c75bc802c8035088c2c88ff41f70 100644 --- a/common/inc/pwrerr.h +++ b/common/inc/pwrerr.h @@ -54,6 +54,7 @@ enum PWR_RtnCode { PWR_ERR_CONTROL_AUTH_REQUESTED, PWR_ERR_CONTROL_AUTH_OWNERED_BY_OTHERS, PWR_ERR_CONTROL_AUTH_NO_PERMISSION, + PWR_ERR_NOT_SUPPORT_TASK_TYPE, PWR_ERR_FILE_ACCESS_FAILED = 500, PWR_ERR_FILE_FPRINT_FAILED, PWR_ERR_FILE_FFLUSH_FAILED, diff --git a/pwrapic/src/powerapi.c b/pwrapic/src/powerapi.c index 1013906353b2738b73abf2680d27c85eafa337b3..a3dc5465e4f07d64515446af0682fce37238a627 100644 --- a/pwrapic/src/powerapi.c +++ b/pwrapic/src/powerapi.c @@ -161,7 +161,10 @@ int PWR_CreateDcTask(const PWR_COM_BasicDcTaskInfo *basicDcTaskInfo) CHECK_STATUS(STATUS_REGISTERTED); CHECK_NULL_POINTER(basicDcTaskInfo); - if (basicDcTaskInfo->interval < PWR_MIN_DC_INTERVAL || basicDcTaskInfo->interval > PWR_MAX_DC_INTERVAL) { + if (basicDcTaskInfo->interval < PWR_MIN_DC_INTERVAL || + basicDcTaskInfo->interval > PWR_MAX_DC_INTERVAL || + (basicDcTaskInfo->dataType != PWR_COM_DATATYPE_CPU_USAGE && + basicDcTaskInfo->dataType != PWR_COM_DATATYPE_CPU_PERF)) { return PWR_ERR_INVALIDE_PARAM; } diff --git a/pwrapis/src/taskservice.c b/pwrapis/src/taskservice.c index 9b8e253836cef2f7702eb39e221f9af296ff6fe8..74c053f1be05a5b8598d5bad7da08daadcf3e205 100644 --- a/pwrapis/src/taskservice.c +++ b/pwrapis/src/taskservice.c @@ -316,9 +316,11 @@ static int DeleteTask(PWR_COM_COL_DATATYPE dataType, uint32_t subscriber) { pthread_mutex_lock(&g_taskListMutex); int index = FindCollTaskByType(dataType); - if (index != INVALID_INDEX) { - DeleteSubscriber(index, subscriber); + if (index == INVALID_INDEX) { + pthread_mutex_unlock(&g_taskListMutex); + return PWR_ERR_TASK_NOT_EXISTS; } + DeleteSubscriber(index, subscriber); pthread_mutex_unlock(&g_taskListMutex); Logger(INFO, MD_NM_SVR_TASK, "DeleteTask. sysId:%d dataType:%d taskNum:%d", subscriber, dataType, g_taskNum); return PWR_SUCCESS; @@ -375,7 +377,13 @@ void CreateDataCollTask(PwrMsg *req) if (!req || req->head.dataLen != sizeof(PWR_COM_BasicDcTaskInfo)) { return; } - int rspCode = CreateTask((PWR_COM_BasicDcTaskInfo *)req->data, req->head.sysId); + + PWR_COM_BasicDcTaskInfo *task = (PWR_COM_BasicDcTaskInfo *)req->data; + if (task->dataType != PWR_COM_DATATYPE_CPU_PERF && task->dataType != PWR_COM_DATATYPE_CPU_USAGE) { + Logger(ERROR, MD_NM_SVR_TASK, "Not support data collect task type %d", task->dataType); + return SendRspToClient(req, PWR_ERR_NOT_SUPPORT_TASK_TYPE, NULL, 0); + } + int rspCode = CreateTask(task, req->head.sysId); SendRspToClient(req, rspCode, NULL, 0); }