shared: drop kernel_thread bool from cgroups show code

Make this an output flag instead, so that our function prototypes can lose one
parameter
This commit is contained in:
Lennart Poettering 2016-04-20 16:06:58 +02:00
parent a0e270198a
commit 0ff308c8de
7 changed files with 37 additions and 30 deletions

View file

@ -191,7 +191,8 @@ int main(int argc, char *argv[]) {
output_flags =
arg_all * OUTPUT_SHOW_ALL |
(arg_full > 0) * OUTPUT_FULL_WIDTH;
(arg_full > 0) * OUTPUT_FULL_WIDTH |
arg_kernel_threads * OUTPUT_KERNEL_THREADS;
if (optind < argc) {
_cleanup_free_ char *root = NULL;
@ -209,7 +210,7 @@ int main(int argc, char *argv[]) {
printf("Directory %s:\n", argv[i]);
fflush(stdout);
q = show_cgroup_by_path(argv[i], NULL, 0, arg_kernel_threads, output_flags);
q = show_cgroup_by_path(argv[i], NULL, 0, output_flags);
} else {
_cleanup_free_ char *c = NULL, *p = NULL, *j = NULL;
const char *controller, *path;
@ -235,7 +236,7 @@ int main(int argc, char *argv[]) {
show_cg_info(controller, path);
q = show_cgroup(controller, path, NULL, 0, arg_kernel_threads, output_flags);
q = show_cgroup(controller, path, NULL, 0, output_flags);
}
if (q < 0)
@ -258,7 +259,7 @@ int main(int argc, char *argv[]) {
printf("Working directory %s:\n", cwd);
fflush(stdout);
r = show_cgroup_by_path(cwd, NULL, 0, arg_kernel_threads, output_flags);
r = show_cgroup_by_path(cwd, NULL, 0, output_flags);
done = true;
}
}
@ -273,7 +274,7 @@ int main(int argc, char *argv[]) {
show_cg_info(SYSTEMD_CGROUP_CONTROLLER, root);
printf("-.slice\n");
r = show_cgroup(SYSTEMD_CGROUP_CONTROLLER, root, NULL, 0, arg_kernel_threads, output_flags);
r = show_cgroup(SYSTEMD_CGROUP_CONTROLLER, root, NULL, 0, output_flags);
}
}

View file

@ -274,7 +274,7 @@ static int show_unit_cgroup(sd_bus *bus, const char *interface, const char *unit
if (cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, cgroup) != 0 && leader <= 0)
return 0;
show_cgroup_and_extra(SYSTEMD_CGROUP_CONTROLLER, cgroup, "\t\t ", c, false, &leader, leader > 0, get_output_flags());
show_cgroup_and_extra(SYSTEMD_CGROUP_CONTROLLER, cgroup, "\t\t ", c, &leader, leader > 0, get_output_flags());
} else if (r < 0)
return log_error_errno(r, "Failed to dump process list: %s", bus_error_message(&error, r));

View file

@ -382,7 +382,7 @@ static int show_unit_cgroup(sd_bus *bus, const char *unit, pid_t leader) {
if (cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, cgroup) != 0 && leader <= 0)
return 0;
show_cgroup_and_extra(SYSTEMD_CGROUP_CONTROLLER, cgroup, "\t\t ", c, false, &leader, leader > 0, get_output_flags());
show_cgroup_and_extra(SYSTEMD_CGROUP_CONTROLLER, cgroup, "\t\t ", c, &leader, leader > 0, get_output_flags());
} else if (r < 0)
return log_error_errno(r, "Failed to dump process list: %s", bus_error_message(&error, r));

View file

@ -37,7 +37,15 @@
#include "string-util.h"
#include "terminal-util.h"
static void show_pid_array(pid_t pids[], unsigned n_pids, const char *prefix, unsigned n_columns, bool extra, bool more, bool kernel_threads, OutputFlags flags) {
static void show_pid_array(
pid_t pids[],
unsigned n_pids,
const char *prefix,
unsigned n_columns,
bool extra,
bool more,
OutputFlags flags) {
unsigned i, j, pid_width;
if (n_pids == 0)
@ -81,7 +89,6 @@ static int show_cgroup_one_by_path(
const char *prefix,
unsigned n_columns,
bool more,
bool kernel_threads,
OutputFlags flags) {
char *fn;
@ -103,7 +110,7 @@ static int show_cgroup_one_by_path(
while ((r = cg_read_pid(f, &pid)) > 0) {
if (!kernel_threads && is_kernel_thread(pid) > 0)
if (!(flags & OUTPUT_KERNEL_THREADS) && is_kernel_thread(pid) > 0)
continue;
if (!GREEDY_REALLOC(pids, n_allocated, n + 1))
@ -116,7 +123,7 @@ static int show_cgroup_one_by_path(
if (r < 0)
return r;
show_pid_array(pids, n, prefix, n_columns, false, more, kernel_threads, flags);
show_pid_array(pids, n, prefix, n_columns, false, more, flags);
return 0;
}
@ -125,7 +132,6 @@ int show_cgroup_by_path(
const char *path,
const char *prefix,
unsigned n_columns,
bool kernel_threads,
OutputFlags flags) {
_cleanup_free_ char *fn = NULL, *p1 = NULL, *last = NULL, *p2 = NULL;
@ -161,7 +167,7 @@ int show_cgroup_by_path(
continue;
if (!shown_pids) {
show_cgroup_one_by_path(path, prefix, n_columns, true, kernel_threads, flags);
show_cgroup_one_by_path(path, prefix, n_columns, true, flags);
shown_pids = true;
}
@ -174,7 +180,7 @@ int show_cgroup_by_path(
return -ENOMEM;
}
show_cgroup_by_path(last, p1, n_columns-2, kernel_threads, flags);
show_cgroup_by_path(last, p1, n_columns-2, flags);
free(last);
}
@ -186,7 +192,7 @@ int show_cgroup_by_path(
return r;
if (!shown_pids)
show_cgroup_one_by_path(path, prefix, n_columns, !!last, kernel_threads, flags);
show_cgroup_one_by_path(path, prefix, n_columns, !!last, flags);
if (last) {
printf("%s%s%s\n", prefix, draw_special_char(DRAW_TREE_RIGHT), cg_unescape(basename(last)));
@ -197,7 +203,7 @@ int show_cgroup_by_path(
return -ENOMEM;
}
show_cgroup_by_path(last, p2, n_columns-2, kernel_threads, flags);
show_cgroup_by_path(last, p2, n_columns-2, flags);
}
return 0;
@ -207,8 +213,6 @@ int show_cgroup(const char *controller,
const char *path,
const char *prefix,
unsigned n_columns,
bool kernel_threads,
OutputFlags flags) {
_cleanup_free_ char *p = NULL;
int r;
@ -219,7 +223,7 @@ int show_cgroup(const char *controller,
if (r < 0)
return r;
return show_cgroup_by_path(p, prefix, n_columns, kernel_threads, flags);
return show_cgroup_by_path(p, prefix, n_columns, flags);
}
static int show_extra_pids(
@ -262,7 +266,7 @@ static int show_extra_pids(
copy[j++] = pids[i];
}
show_pid_array(copy, j, prefix, n_columns, true, false, false, flags);
show_pid_array(copy, j, prefix, n_columns, true, false, flags);
return 0;
}
@ -272,7 +276,6 @@ int show_cgroup_and_extra(
const char *path,
const char *prefix,
unsigned n_columns,
bool kernel_threads,
const pid_t extra_pids[],
unsigned n_extra_pids,
OutputFlags flags) {
@ -281,7 +284,7 @@ int show_cgroup_and_extra(
assert(path);
r = show_cgroup(controller, path, prefix, n_columns, kernel_threads, flags);
r = show_cgroup(controller, path, prefix, n_columns, flags);
if (r < 0)
return r;
@ -292,7 +295,6 @@ int show_cgroup_and_extra_by_spec(
const char *spec,
const char *prefix,
unsigned n_columns,
bool kernel_threads,
const pid_t extra_pids[],
unsigned n_extra_pids,
OutputFlags flags) {
@ -306,5 +308,5 @@ int show_cgroup_and_extra_by_spec(
if (r < 0)
return r;
return show_cgroup_and_extra(controller, path, prefix, n_columns, kernel_threads, extra_pids, n_extra_pids, flags);
return show_cgroup_and_extra(controller, path, prefix, n_columns, extra_pids, n_extra_pids, flags);
}

View file

@ -25,8 +25,8 @@
#include "logs-show.h"
#include "output-mode.h"
int show_cgroup_by_path(const char *path, const char *prefix, unsigned columns, bool kernel_threads, OutputFlags flags);
int show_cgroup(const char *controller, const char *path, const char *prefix, unsigned columns, bool kernel_threads, OutputFlags flags);
int show_cgroup_by_path(const char *path, const char *prefix, unsigned columns, OutputFlags flags);
int show_cgroup(const char *controller, const char *path, const char *prefix, unsigned columns, OutputFlags flags);
int show_cgroup_and_extra_by_spec(const char *spec, const char *prefix, unsigned n_columns, bool kernel_threads, const pid_t extra_pids[], unsigned n_extra_pids, OutputFlags flags);
int show_cgroup_and_extra(const char *controller, const char *path, const char *prefix, unsigned n_columns, bool kernel_threads, const pid_t extra_pids[], unsigned n_extra_pids, OutputFlags flags);
int show_cgroup_and_extra_by_spec(const char *spec, const char *prefix, unsigned n_columns, const pid_t extra_pids[], unsigned n_extra_pids, OutputFlags flags);
int show_cgroup_and_extra(const char *controller, const char *path, const char *prefix, unsigned n_columns, const pid_t extra_pids[], unsigned n_extra_pids, OutputFlags flags);

View file

@ -34,6 +34,9 @@ typedef enum OutputMode {
_OUTPUT_MODE_INVALID = -1
} OutputMode;
/* The output flags definitions are shared by the logs and process tree output. Some apply to both, some only to the
* logs output, others only to the process tree output. */
typedef enum OutputFlags {
OUTPUT_SHOW_ALL = 1 << 0,
OUTPUT_FOLLOW = 1 << 1,
@ -43,4 +46,5 @@ typedef enum OutputFlags {
OUTPUT_CATALOG = 1 << 5,
OUTPUT_BEGIN_NEWLINE = 1 << 6,
OUTPUT_UTC = 1 << 7,
OUTPUT_KERNEL_THREADS = 1 << 8,
} OutputFlags;

View file

@ -3746,7 +3746,7 @@ static void print_status_info(
if (i->control_pid > 0)
extra[k++] = i->control_pid;
show_cgroup_and_extra(SYSTEMD_CGROUP_CONTROLLER, i->control_group, prefix, c, false, extra, k, get_output_flags());
show_cgroup_and_extra(SYSTEMD_CGROUP_CONTROLLER, i->control_group, prefix, c, extra, k, get_output_flags());
} else if (r < 0)
log_warning_errno(r, "Failed to dump process list, ignoring: %s", bus_error_message(&error, r));
}
@ -4663,7 +4663,7 @@ static int show_system_status(sd_bus *bus) {
else
c = 0;
show_cgroup(SYSTEMD_CGROUP_CONTROLLER, strempty(mi.control_group), prefix, c, false, get_output_flags());
show_cgroup(SYSTEMD_CGROUP_CONTROLLER, strempty(mi.control_group), prefix, c, get_output_flags());
}
return 0;