chiark / gitweb /
bootchart: rewrite usage message more generally
[elogind.git] / src / bootchart / bootchart.c
index 305a31ae9443a1579b83b79461bfb57ea14eb035..84497cc29fb951386ca04c1441fb3f936036992c 100644 (file)
@@ -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)
@@ -203,24 +209,25 @@ static int parse_args(int argc, char *argv[]) {
                         arg_entropy = true;
                         break;
                 case 'h':
-                        fprintf(stderr, "Usage: %s [OPTIONS]\n", argv[0]);
-                        fprintf(stderr, " --rel,       -r          Record time relative to recording\n");
-                        fprintf(stderr, " --freq,      -f f        Sample frequency [%f]\n", arg_hz);
-                        fprintf(stderr, " --samples,   -n N        Stop sampling at [%d] samples\n", arg_samples_len);
-                        fprintf(stderr, " --scale-x,   -x N        Scale the graph horizontally [%f] \n", arg_scale_x);
-                        fprintf(stderr, " --scale-y,   -y N        Scale the graph vertically [%f] \n", arg_scale_y);
-                        fprintf(stderr, " --pss,       -p          Enable PSS graph (CPU intensive)\n");
-                        fprintf(stderr, " --entropy,   -e          Enable the entropy_avail graph\n");
-                        fprintf(stderr, " --output,    -o [PATH]   Path to output files [%s]\n", arg_output_path);
-                        fprintf(stderr, " --init,      -i [PATH]   Path to init executable [%s]\n", arg_init_path);
-                        fprintf(stderr, " --no-filter, -F          Disable filtering of processes from the graph\n");
-                        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, " --help,      -h          Display this message\n");
+                        fprintf(stderr, "Usage: %s [OPTIONS]\n\n", argv[0]);
+                        fprintf(stderr, "Options:\n");
+                        fprintf(stderr, "  -r, --rel              Record time relative to recording\n");
+                        fprintf(stderr, "  -f, --freq=FREQ        Sample frequency [%f]\n", arg_hz);
+                        fprintf(stderr, "  -n, --samples=N        Stop sampling at [%d] samples\n", arg_samples_len);
+                        fprintf(stderr, "  -x, --scale-x=N        Scale the graph horizontally [%f] \n", arg_scale_x);
+                        fprintf(stderr, "  -y, --scale-y=N        Scale the graph vertically [%f] \n", arg_scale_y);
+                        fprintf(stderr, "  -p, --pss              Enable PSS graph (CPU intensive)\n");
+                        fprintf(stderr, "  -e, --entropy          Enable the entropy_avail graph\n");
+                        fprintf(stderr, "  -o, --output=PATH      Path to output files [%s]\n", arg_output_path);
+                        fprintf(stderr, "  -i, --init=PATH        Path to init executable [%s]\n", arg_init_path);
+                        fprintf(stderr, "  -F, --no-filter        Disable filtering of processes from the graph\n");
+                        fprintf(stderr, "                           that are of less importance or short-lived\n");
+                        fprintf(stderr, "  -C, --cmdline          Display the full command line with arguments\n");
+                        fprintf(stderr, "                           of processes, instead of only the process name\n");
+                        fprintf(stderr, "  -c, --control-group    Display process control group\n");
+                        fprintf(stderr, "  -h, --help             Display this message\n\n");
                         fprintf(stderr, "See bootchart.conf for more information.\n");
                         exit (EXIT_SUCCESS);
-                        break;
                 default:
                         break;
                 }
@@ -459,9 +466,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);