!1276 Recycling cgroup resources

Merge pull request !1276 from wangfenging/master
This commit is contained in:
openharmony_ci 2024-07-19 09:58:34 +00:00 committed by Gitee
commit 16287f562a
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 15 additions and 4 deletions

View File

@ -173,13 +173,22 @@ static int ProcessMgrRemoveApp(const AppSpawnMgr *content, const AppSpawnedProce
if (IsNWebSpawnMode(content) || strcmp(appInfo->name, NWEBSPAWN_SERVER_NAME) == 0) {
return 0;
}
char path[PATH_MAX] = {};
char cgroupPath[PATH_MAX] = {};
APPSPAWN_LOGV("ProcessMgrRemoveApp %{public}d %{public}d to cgroup ", appInfo->pid, appInfo->uid);
int ret = GetCgroupPath(appInfo, path, sizeof(path));
int ret = GetCgroupPath(appInfo, cgroupPath, sizeof(cgroupPath));
APPSPAWN_CHECK(ret == 0, return -1, "Failed to get real path errno: %{public}d", errno);
ret = strcat_s(path, sizeof(path), "cgroup.procs");
char procPath[PATH_MAX] = {};
ret = memcpy_s(procPath, sizeof(procPath), cgroupPath, sizeof(cgroupPath));
if (ret != 0) {
return APPSPAWN_ERROR_UTILS_MEM_FAIL;
}
ret = strcat_s(procPath, sizeof(procPath), "cgroup.procs");
APPSPAWN_CHECK(ret == 0, return ret, "Failed to strcat_s errno: %{public}d", errno);
KillProcessesByCGroup(path, (AppSpawnMgr *)content, appInfo);
KillProcessesByCGroup(procPath, (AppSpawnMgr *)content, appInfo);
ret = rmdir(cgroupPath);
if (ret != 0) {
return APPSPAWN_ERROR_FILE_RMDIR_FAIL;
}
return ret;
}

View File

@ -110,6 +110,8 @@ typedef enum {
APPSPAWN_TIMEOUT,
APPSPAWN_FORK_FAIL,
APPSPAWN_DEBUG_MODE_NOT_SUPPORT,
APPSPAWN_ERROR_UTILS_MEM_FAIL,
APPSPAWN_ERROR_FILE_RMDIR_FAIL,
APPSPAWN_NODE_EXIST,
} AppSpawnErrorCode;