diff options
author | Lucas De Marchi <lucas.demarchi@intel.com> | 2024-05-01 12:33:02 -0500 |
---|---|---|
committer | Lucas De Marchi <lucas.demarchi@intel.com> | 2024-05-08 05:31:56 -0700 |
commit | 7e0bf0a8f066d58a41c4a46c5fa4d9faf2f8a3a4 (patch) | |
tree | c169a6950807d1e46c8e4b0f6dc090763d50fb87 | |
parent | 268e107e4eb5a321094f49501ea9a549e508543b (diff) |
gputop: Allow to limit number of executions
Add argument to limit number of executions, similar to the one accepted
by `top`. This allows testing changes and optimizations more easily.
Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
Link: https://lore.kernel.org/r/20240501173303.115737-4-lucas.demarchi@intel.com
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
-rw-r--r-- | tools/gputop.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/tools/gputop.c b/tools/gputop.c index 481e79753..1ac382a7e 100644 --- a/tools/gputop.c +++ b/tools/gputop.c @@ -293,6 +293,7 @@ static void clrscr(void) } struct gputop_args { + long n_iter; }; static void help(void) @@ -301,19 +302,22 @@ static void help(void) "\t%s [options]\n\n" "Options:\n" "\t-h, --help show this help\n" + "\t-n, --iterations =NUMBER number of executions\n" , program_invocation_short_name); } static int parse_args(int argc, char * const argv[], struct gputop_args *args) { - static const char cmdopts_s[] = "h"; + static const char cmdopts_s[] = "hn:"; static const struct option cmdopts[] = { {"help", no_argument, 0, 'h'}, + {"iterations", required_argument, 0, 'n'}, { } }; /* defaults */ memset(args, 0, sizeof(*args)); + args->n_iter = -1; for (;;) { int c, idx = 0; @@ -323,6 +327,9 @@ static int parse_args(int argc, char * const argv[], struct gputop_args *args) break; switch (c) { + case 'n': + args->n_iter = strtol(optarg, NULL, 10); + break; case 'h': help(); return 0; @@ -342,6 +349,7 @@ int main(int argc, char **argv) struct igt_drm_clients *clients = NULL; int con_w = -1, con_h = -1; int ret; + long n; ret = parse_args(argc, argv, &args); if (ret < 0) @@ -349,13 +357,15 @@ int main(int argc, char **argv) if (!ret) return EXIT_SUCCESS; + n = args.n_iter; + clients = igt_drm_clients_init(NULL); if (!clients) exit(1); igt_drm_clients_scan(clients, NULL, NULL, 0, NULL, 0); - for (;;) { + while (n != 0) { struct igt_drm_client *c, *prevc = NULL; int i, engine_w = 0, lines = 0; @@ -381,6 +391,8 @@ int main(int argc, char **argv) printf("\n"); usleep(period_us); + if (n > 0) + n--; } igt_drm_clients_free(clients); |