diff options
Diffstat (limited to 'src/cgtop/cgtop.c')
-rw-r--r-- | src/cgtop/cgtop.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c index cf51024dcb..cef5b654e7 100644 --- a/src/cgtop/cgtop.c +++ b/src/cgtop/cgtop.c @@ -56,6 +56,12 @@ typedef struct Group { uint64_t io_input_bps, io_output_bps; } Group; +typedef enum PidsCount { + COUNT_USERSPACE_PROCESSES, + COUNT_ALL_PROCESSES, + COUNT_PIDS, +} PidsCount; + static unsigned arg_depth = 3; static unsigned arg_iterations = UINT_MAX; static bool arg_batch = false; @@ -66,11 +72,7 @@ static char* arg_root = NULL; static bool arg_recursive = true; static bool arg_recursive_unset = false; -static enum { - COUNT_PIDS, - COUNT_USERSPACE_PROCESSES, - COUNT_ALL_PROCESSES, -} arg_count = COUNT_PIDS; +static PidsCount arg_count = COUNT_PIDS; static enum { ORDER_PATH, @@ -916,6 +918,7 @@ static int run(int argc, char *argv[]) { usec_t last_refresh = 0; bool quit = false, immediate_refresh = false; _cleanup_free_ char *root = NULL; + PidsCount possible_count; CGroupMask mask; int r; @@ -929,7 +932,8 @@ static int run(int argc, char *argv[]) { if (r < 0) return log_error_errno(r, "Failed to determine supported controllers: %m"); - arg_count = (mask & CGROUP_MASK_PIDS) ? COUNT_PIDS : COUNT_USERSPACE_PROCESSES; + possible_count = (mask & CGROUP_MASK_PIDS) ? COUNT_PIDS : COUNT_ALL_PROCESSES; + arg_count = MIN(possible_count, arg_count); if (arg_recursive_unset && arg_count == COUNT_PIDS) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), |