Re: [PATCH] samples, bpf: Add duration option D for sampleip

From: Andrii Nakryiko
Date: Thu Nov 17 2022 - 18:26:47 EST


On Tue, Nov 15, 2022 at 10:46 PM Kang Minchul <tegongkang@xxxxxxxxx> wrote:
>
> Although sampleip program can handle three options,
> (-F for frequency, duration, and -h for help)
> currently there is no independent option for duration.

Because it's positional argument, which is very clearly documented by
usage(). What's wrong with that and why do you want to change this?

>
> This patch adds option -D for duration like below:
>
> $ sudo ./samples/bpf/sampleip -h
> USAGE: sampleip [-F freq] [-D duration]
> -F freq # sample frequency (Hertz), default 99
> -D duration # sampling duration (seconds), default 5
>
> $ sudo ./samples/bpf/sampleip -F 120
> Sampling at 120 Hertz for 5 seconds. Ctrl-C also ends.
> ADDR KSYM COUNT
> ...
>
> $ sudo ./samples/bpf/sampleip -D 7
> Sampling at 99 Hertz for 7 seconds. Ctrl-C also ends.
> ADDR KSYM COUNT
> ...
>
> $ sudo ./samples/bpf/sampleip -F 120 -D 7
> Sampling at 120 Hertz for 7 seconds. Ctrl-C also ends.
> ADDR KSYM COUNT
> ...
>
> Signed-off-by: Kang Minchul <tegongkang@xxxxxxxxx>
> ---
> samples/bpf/sampleip_user.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/samples/bpf/sampleip_user.c b/samples/bpf/sampleip_user.c
> index 921c505bb567..ce6aadd496e1 100644
> --- a/samples/bpf/sampleip_user.c
> +++ b/samples/bpf/sampleip_user.c
> @@ -28,9 +28,9 @@ static int nr_cpus;
>
> static void usage(void)
> {
> - printf("USAGE: sampleip [-F freq] [duration]\n");
> - printf(" -F freq # sample frequency (Hertz), default 99\n");
> - printf(" duration # sampling duration (seconds), default 5\n");
> + printf("USAGE: sampleip [-F freq] [-D duration]\n");
> + printf(" -F freq # sample frequency (Hertz), default 99\n");
> + printf(" -D duration # sampling duration (seconds), default 5\n");
> }
>
> static int sampling_start(int freq, struct bpf_program *prog,
> @@ -145,19 +145,20 @@ int main(int argc, char **argv)
> char filename[256];
>
> /* process arguments */
> - while ((opt = getopt(argc, argv, "F:h")) != -1) {
> + while ((opt = getopt(argc, argv, "F:D:h")) != -1) {
> switch (opt) {
> case 'F':
> freq = atoi(optarg);
> break;
> + case 'D':
> + secs = atoi(optarg);
> + break;
> case 'h':
> default:
> usage();
> return 0;
> }
> }
> - if (argc - optind == 1)
> - secs = atoi(argv[optind]);
> if (freq == 0 || secs == 0) {
> usage();
> return 1;
> --
> 2.34.1
>