X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fbootchart%2Fbootchart.c;h=a73418af7ee4736831f22d301e59736eced0a772;hb=49e5b2a93339869703d581a06f8d903f8371ab60;hp=9f72d98126c1b4d8e02934b0e6fd0932835ea1ea;hpb=bdd13f6be4b588568683a1ab54f421fc6a636dbb;p=elogind.git diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index 9f72d9812..a73418af7 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -78,6 +78,7 @@ bool initcall = true; bool arg_relative = false; bool arg_filter = true; bool arg_show_cmdline = false; +bool arg_show_cgroup = false; bool arg_pss = false; int samples; int arg_samples_len = 500; /* we record len+1 (1 start sample) */ @@ -113,6 +114,7 @@ static void parse_conf(void) { { "Bootchart", "PlotEntropyGraph", config_parse_bool, 0, &arg_entropy }, { "Bootchart", "ScaleX", config_parse_double, 0, &arg_scale_x }, { "Bootchart", "ScaleY", config_parse_double, 0, &arg_scale_y }, + { "Bootchart", "ControlGroup", config_parse_bool, 0, &arg_show_cgroup }, { NULL, NULL, NULL, 0, NULL } }; _cleanup_fclose_ FILE *f; @@ -143,6 +145,7 @@ static int parse_args(int argc, char *argv[]) { {"init", required_argument, NULL, 'i'}, {"no-filter", no_argument, NULL, 'F'}, {"cmdline", no_argument, NULL, 'C'}, + {"control-group", no_argument, NULL, 'c'}, {"help", no_argument, NULL, 'h'}, {"scale-x", required_argument, NULL, 'x'}, {"scale-y", required_argument, NULL, 'y'}, @@ -151,7 +154,7 @@ static int parse_args(int argc, char *argv[]) { }; int c; - while ((c = getopt_long(argc, argv, "erpf:n:o:i:FChx:y:", options, NULL)) >= 0) { + while ((c = getopt_long(argc, argv, "erpf:n:o:i:FCchx:y:", options, NULL)) >= 0) { int r; switch (c) { @@ -170,6 +173,9 @@ static int parse_args(int argc, char *argv[]) { case 'C': arg_show_cmdline = true; break; + case 'c': + arg_show_cgroup = true; + break; case 'n': r = safe_atoi(optarg, &arg_samples_len); if (r < 0) @@ -217,6 +223,7 @@ static int parse_args(int argc, char *argv[]) { fprintf(stderr, " that are of less importance or short-lived\n"); fprintf(stderr, " --cmdline, -C Display the full command line with arguments\n"); fprintf(stderr, " of processes, instead of only the process name\n"); + fprintf(stderr, " --control-group, -c Display process control group\n"); fprintf(stderr, " --help, -h Display this message\n"); fprintf(stderr, "See bootchart.conf for more information.\n"); exit (EXIT_SUCCESS); @@ -458,9 +465,11 @@ int main(int argc, char *argv[]) { old->sample = old->sample->next; free(oldsample); } + free(old->cgroup); free(old->sample); free(old); } + free(ps->cgroup); free(ps->sample); free(ps);