lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Tue, 28 Nov 2017 11:48:22 -0500
From:   Steven Rostedt <rostedt@...dmis.org>
To:     "Vladislav Valtchev (VMware)" <vladislav.valtchev@...il.com>
Cc:     linux-kernel@...r.kernel.org, y.karadz@...il.com
Subject: Re: [PATCH 04/11] trace-cmd: Extract parse_record_options() from
 trace_record()

On Thu, 23 Nov 2017 18:33:28 +0200
"Vladislav Valtchev (VMware)" <vladislav.valtchev@...il.com> wrote:

> In this patch a huge part of trace_record(), dealing with parsing the command
> line options, has been extracted in a separate function. That allows the body
> of trace_record() to be focused only on the proper actions involved in a given
> type of tracing (record, stream, etc.) reducing, this way, the scope and the
> complexity of trace_record().

Hi Vladislav,

I applied patches 1-3.

> 
> Signed-off-by: Vladislav Valtchev (VMware) <vladislav.valtchev@...il.com>
> ---
> +
> +static void parse_record_options(int argc,
> +				 char **argv,
> +				 struct common_record_context *ctx)
>  {
>  	const char *plugin = NULL;
> -	const char *output = NULL;
>  	const char *option;
>  	struct event_list *event = NULL;
>  	struct event_list *last_event = NULL;
> -	struct buffer_instance *instance = &top_instance;
> -	enum trace_type type = 0;
>  	char *pids;
>  	char *pid;
>  	char *sav;
> -	char *date2ts = NULL;
> -	int record_all = 0;
> -	int total_disable = 0;
> -	int disable = 0;
> -	int events = 0;
> -	int record = 0;
> -	int extract = 0;
> -	int stream = 0;
> -	int profile = 0;
> -	int global = 0;
> -	int start = 0;
> -	int filtered = 0;
> -	int run_command = 0;
>  	int neg_event = 0;
> -	int date = 0;
> -	int manual = 0;
> -	char *max_graph_depth = NULL;
> -	int topt = 0;
> -	int do_child = 0;
> -	int data_flags = 0;
> -
> -	int c;
> -
> -	init_instance(instance);
> -
> -	cpu_count = count_cpus();
> -
> -	if ((record = (strcmp(argv[1], "record") == 0)))
> -		; /* do nothing */
> -	else if ((start = strcmp(argv[1], "start") == 0))
> -		; /* do nothing */
> -	else if ((extract = strcmp(argv[1], "extract") == 0))
> -		; /* do nothing */
> -	else if ((stream = strcmp(argv[1], "stream") == 0))
> -		; /* do nothing */
> -	else if ((profile = strcmp(argv[1], "profile") == 0)) {
> -		handle_init = trace_init_profile;
> -		events = 1;
> -	} else
> -		usage(argv);
>  
>  	for (;;) {
>  		int option_index = 0;
>  		int ret;
> +		int c;
>  		const char *opts;
>  		static struct option long_options[] = {
>  			{"date", no_argument, NULL, OPT_date},
> @@ -4431,7 +4419,7 @@ void trace_record(int argc, char **argv)
> 


+
> +static void init_common_record_context(struct common_record_context *ctx)
> +{
> +	memset(ctx, 0, sizeof(*ctx));
> +	ctx->instance = &top_instance;
> +	cpu_count = count_cpus();
> +}
> +
> +void trace_record(int argc, char **argv)
> +{
> +	struct common_record_context ctx;
> +	enum trace_type type = 0;
> +
> +	init_common_record_context(&ctx);
> +	init_instance(ctx.instance);

Is there a reason that init_instance() isn't called in
init_common_record_context()?

Also, why not just do the "init_common_record_context()" in
parse_record_options()?

-- Steve

> +
> +	if ((ctx.record = (strcmp(argv[1], "record") == 0)))
> +		; /* do nothing */
> +	else if ((ctx.start = strcmp(argv[1], "start") == 0))
> +		; /* do nothing */
> +	else if ((ctx.extract = strcmp(argv[1], "extract") == 0))
> +		; /* do nothing */
> +	else if ((ctx.stream = strcmp(argv[1], "stream") == 0))
> +		; /* do nothing */
> +	else if ((ctx.profile = strcmp(argv[1], "profile") == 0)) {
> +		handle_init = trace_init_profile;
> +		ctx.events = 1;
> +	} else
> +		usage(argv);
> +
> +
> +	parse_record_options(argc, argv, &ctx);
> +
> +
>  	/*
>  	 * If this is a profile run, and no instances were set,
>  	 * then enable profiling on the top instance.
>  	 */

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ