From 6d22c3073aecc9683a79bc1c47bacfea8d27ec5e Mon Sep 17 00:00:00 2001 From: zhangpan Date: Thu, 2 Jul 2026 14:46:28 +0800 Subject: [PATCH] Fix build with newer libproc2 --- CMakeLists.txt | 5 ++++- utils/processinfohelper.cpp | 16 +++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0770108..1e70886 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,9 @@ pkg_check_modules(GSETTINGQT6 REQUIRED gsettings-qt6) pkg_check_modules(GIO REQUIRED gio-unix-2.0) pkg_check_modules(DATACOLLECT kysdk-datacollect) pkg_check_modules(LIBPROC2 REQUIRED libproc2) +if (LIBPROC2_VERSION VERSION_GREATER_EQUAL "4.0.5") + add_compile_definitions(LIBPROC2_HAS_THREE_ARGUMENT_PIDS_VAL) +endif() pkg_check_modules(wayland_client REQUIRED wayland-client) file(GLOB_RECURSE BASE_FILE CMAKE_CONFIGURE_DEPENDS @@ -318,4 +321,4 @@ if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git/hooks/pre-commit) DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/.git/hooks FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) -endif() \ No newline at end of file +endif() diff --git a/utils/processinfohelper.cpp b/utils/processinfohelper.cpp index a080e2c..fc92231 100644 --- a/utils/processinfohelper.cpp +++ b/utils/processinfohelper.cpp @@ -31,7 +31,11 @@ #include #include - +#ifdef LIBPROC2_HAS_THREE_ARGUMENT_PIDS_VAL +#define KPM_PIDS_VAL(relative_enum, type, stack, info) PIDS_VAL(relative_enum, type, stack) +#else +#define KPM_PIDS_VAL(relative_enum, type, stack, info) PIDS_VAL(relative_enum, type, stack, info) +#endif namespace { void collectSocketInodes(int pid, std::unordered_set& out) { @@ -201,10 +205,9 @@ std::vector childPids(int parentPid) // 获取进程信息 struct pids_stack *stack; while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { - // 使用 PIDS_VAL 宏获取值 - int ppid = PIDS_VAL(1, s_int, stack, info); // PIDS_ID_PPID + int ppid = KPM_PIDS_VAL(1, s_int, stack, info); // PIDS_ID_PPID if (ppid == parentPid) { - int pid = PIDS_VAL(0, s_int, stack, info); // PIDS_ID_PID + int pid = KPM_PIDS_VAL(0, s_int, stack, info); // PIDS_ID_PID pids.emplace_back(pid); } } @@ -240,10 +243,9 @@ std::vector childPids(const std::vector &parentPids) // 获取进程信息 struct pids_stack *stack; while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { - // 使用 PIDS_VAL 宏获取值 - int ppid = PIDS_VAL(1, s_int, stack, info); // PIDS_ID_PPID + int ppid = KPM_PIDS_VAL(1, s_int, stack, info); // PIDS_ID_PPID if (mp.find(ppid) != mp.end()) { - int pid = PIDS_VAL(0, s_int, stack, info); // PIDS_ID_PID + int pid = KPM_PIDS_VAL(0, s_int, stack, info); // PIDS_ID_PID cPids.emplace_back(pid); } } -- Gitee