Re: [PATCH v2] rt-error: added conditional to info() and debug()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Wed, 9 Aug 2023, Anubhav Shelat wrote:

> This change was motivated by the desire to clean up the output of
> cyclicdeadline, and include the extra info only when requested.
> 
> Instead of having to check if the program is in debugging mode, the
> rt-error functions will automatically check by passing in an argument.
> 
> The other changes in this patch edit the function calls to debug() and
> info() to work with the changes in rt-error.
> 
> Signed-off-by: Anubhav Shelat <ashelat@xxxxxxxxxx>
> ---
>  src/cyclictest/cyclictest.c         | 13 +++++--------
>  src/include/rt-error.h              |  4 ++--
>  src/lib/rt-error.c                  | 28 ++++++++++++++++------------
>  src/lib/rt-utils.c                  |  2 +-
>  src/pi_tests/pi_stress.c            |  4 ++--
>  src/sched_deadline/cyclicdeadline.c | 26 +++++++++++++++++++-------
>  6 files changed, 45 insertions(+), 32 deletions(-)
> 
> diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
> index 7b0f80fe5a1e..4a7108ea2c8f 100644
> --- a/src/cyclictest/cyclictest.c
> +++ b/src/cyclictest/cyclictest.c
> @@ -1950,10 +1950,8 @@ int main(int argc, char **argv)
>  		for (k=0; k < times; k++)
>  			clock_gettime(clock, &time[k]);
>  
> -		if (ct_debug) {
> -			info("For %d consecutive calls to clock_gettime():\n", times);
> -			info("time, delta time (nsec)\n");
> -		}
> +		info(ct_debug, "For %d consecutive calls to clock_gettime():\n", times);
> +		info(ct_debug, "time, delta time (nsec)\n");
>  
>  		prev = time[0];
>  		for (k=1; k < times; k++) {
> @@ -1964,10 +1962,9 @@ int main(int argc, char **argv)
>  			if (diff && (diff < min_non_zero_diff))
>  				min_non_zero_diff = diff;
>  
> -			if (ct_debug)
> -				info("%ld.%06ld  %5llu\n",
> -				     time[k].tv_sec, time[k].tv_nsec,
> -				     (unsigned long long)diff);
> +			info(ct_debug, "%ld.%06ld  %5llu\n",
> +					time[k].tv_sec, time[k].tv_nsec,
> +					(unsigned long long)diff);
>  		}
>  
>  		free(time);
> diff --git a/src/include/rt-error.h b/src/include/rt-error.h
> index d205e49ff041..7c4a9db55a52 100644
> --- a/src/include/rt-error.h
> +++ b/src/include/rt-error.h
> @@ -11,8 +11,8 @@ void err_exit(int err, char *fmt, ...) __attribute__((noreturn));
>  void err_msg(char *fmt, ...);
>  void err_msg_n(int err, char *fmt, ...);
>  void err_quit(char *fmt, ...) __attribute__((noreturn));
> -void debug(char *fmt, ...);
> -void info(char *fmt, ...);
> +void debug(int enable, char *fmt, ...);
> +void info(int enable, char *fmt, ...);
>  void warn(char *fmt, ...);
>  void fatal(char *fmt, ...) __attribute__((noreturn));
>  void err_doit(int err, const char *fmt, va_list ap);
> diff --git a/src/lib/rt-error.c b/src/lib/rt-error.c
> index 616f70b044e0..9f0827530ccb 100644
> --- a/src/lib/rt-error.c
> +++ b/src/lib/rt-error.c
> @@ -47,24 +47,28 @@ void err_quit(char *fmt, ...)
>  	exit(1);
>  }
>  
> -void debug(char *fmt, ...)
> +void debug(int enable, char *fmt, ...)
>  {
> -	va_list ap;
> +	if (enable) {
> +		va_list ap;
>  
> -	va_start(ap, fmt);
> -	fputs("DEBUG: ", stderr);
> -	err_doit(0, fmt, ap);
> -	va_end(ap);
> +		va_start(ap, fmt);
> +		fputs("DEBUG: ", stderr);
> +		err_doit(0, fmt, ap);
> +		va_end(ap);
> +	}
>  }
>  
> -void info(char *fmt, ...)
> +void info(int enable, char *fmt, ...)
>  {
> -	va_list ap;
> +	if (enable) {
> +		va_list ap;
>  
> -	va_start(ap, fmt);
> -	fputs("INFO: ", stderr);
> -	err_doit(0, fmt, ap);
> -	va_end(ap);
> +		va_start(ap, fmt);
> +		fputs("INFO: ", stderr);
> +		err_doit(0, fmt, ap);
> +		va_end(ap);
> +	}
>  }
>  
>  void warn(char *fmt, ...)
> diff --git a/src/lib/rt-utils.c b/src/lib/rt-utils.c
> index 6c0235d0d2e0..14dac5608037 100644
> --- a/src/lib/rt-utils.c
> +++ b/src/lib/rt-utils.c
> @@ -109,7 +109,7 @@ int mount_debugfs(char *path)
>  	/* if it's already mounted just return */
>  	prefix = get_debugfileprefix();
>  	if (strlen(prefix) != 0) {
> -		info("debugfs mountpoint: %s\n", prefix);
> +		info(1, "debugfs mountpoint: %s\n", prefix);
>  		return 0;
>  	}
>  	if (!mountpoint)
> diff --git a/src/pi_tests/pi_stress.c b/src/pi_tests/pi_stress.c
> index cba1ad92ac2d..9ce7d66751da 100644
> --- a/src/pi_tests/pi_stress.c
> +++ b/src/pi_tests/pi_stress.c
> @@ -71,9 +71,9 @@
>  #define DOWN_ONE "\033[1B"
>  
>  #define pi_info(fmt, arg...) \
> -	do { if (verbose) info(fmt, ## arg); } while (0)
> +	do { info(verbose, fmt, ## arg); } while (0)
>  #define pi_debug(fmt, arg...) \
> -	do { if (debugging) debug(fmt, ## arg); } while (0)
> +	do { debug(debugging, fmt, ## arg); } while (0)
>  #define pi_error(fmt, arg...) \
>  	do { err_msg(fmt, ## arg); have_errors = 1; } while (0)
>  
> diff --git a/src/sched_deadline/cyclicdeadline.c b/src/sched_deadline/cyclicdeadline.c
> index 39de1b799458..ef00a0d6b2dd 100644
> --- a/src/sched_deadline/cyclicdeadline.c
> +++ b/src/sched_deadline/cyclicdeadline.c
> @@ -80,6 +80,8 @@ struct sched_data {
>  };
>  
>  static int shutdown;
> +static int info_enable;
> +static int debug_enable;
>  static int tracelimit;
>  static int trace_marker;
>  static pthread_mutex_t break_thread_id_lock = PTHREAD_MUTEX_INITIALIZER;
> @@ -698,6 +700,8 @@ static void usage(int error)
>  	       "-q       --quiet           print a summary only on exit\n"
>  	       "-b USEC  --breaktrace=USEC send break trace command when latency > USEC\n"
>  	       "         --tracemark       write a trace mark when -b latency is exceeded\n"
> +		   "		 --debug		   Print debugging info for cyclicdeadline\n"
> +		   "		 --verbose		   Print useful information about the test\n"
>  	       );
>  	exit(error);
>  }
> @@ -794,8 +798,8 @@ void *run_deadline(void *data)
>  	u64 period;
>  	int ret;
>  
> -	printf("deadline thread %ld\n", tid);
> -
> +	debug(debug_enable, "deadline thread %ld\n", tid);
> +	// set up for each measurment thread
>  	stat->tid = tid;
>  
>  	ret = sched_getattr(0, &attr, sizeof(attr), 0);
> @@ -811,7 +815,7 @@ void *run_deadline(void *data)
>  	attr.sched_runtime = sd->runtime_us * 1000;
>  	attr.sched_deadline = sd->deadline_us * 1000;
>  
> -	printf("thread[%d] runtime=%lldus deadline=%lldus\n",
> +	debug(debug_enable, "thread[%d] runtime=%lldus deadline=%lldus\n",
>  	      gettid(), sd->runtime_us, sd->deadline_us);
>  
>  	ret = sched_setattr(0, &attr, 0);
> @@ -1083,7 +1087,7 @@ static void write_stats(FILE *f, void *data)
>  enum options_values {
>  	OPT_AFFINITY=1, OPT_DURATION, OPT_HELP, OPT_INTERVAL,
>  	OPT_JSON, OPT_STEP, OPT_THREADS, OPT_QUIET,
> -	OPT_BREAKTRACE, OPT_TRACEMARK,
> +	OPT_BREAKTRACE, OPT_TRACEMARK, OPT_INFO, OPT_DEBUG,
>  };
>  
>  int main(int argc, char **argv)
> @@ -1124,6 +1128,8 @@ int main(int argc, char **argv)
>  			{ "quiet",	no_argument,		NULL,	OPT_QUIET },
>  			{ "breaktrace",       required_argument, NULL, OPT_BREAKTRACE },
>  			{ "tracemark",	     no_argument,	NULL, OPT_TRACEMARK },
> +			{ "verbose",	no_argument,	NULL,	OPT_INFO},
> +			{ "debug",	no_argument, 	NULL, 	OPT_DEBUG},
>  			{ NULL,		0,			NULL,	0   },
>  		};
>  		c = getopt_long(argc, argv, "a::c:D:hi:s:t:b:q", options, NULL);
> @@ -1176,6 +1182,12 @@ int main(int argc, char **argv)
>  		case OPT_TRACEMARK:
>  			trace_marker = 1;
>  			break;
> +		case OPT_INFO:
> +			info_enable = 1;
> +			break;
> +		case OPT_DEBUG:
> +			debug_enable = 1;
> +			break;
>  		default:
>  			usage(1);
>  		}
> @@ -1250,7 +1262,7 @@ int main(int argc, char **argv)
>  		sd->runtime_us = runtime;
>  		sd->deadline_us = interval;
>  
> -		printf("interval: %lld:%lld\n", sd->runtime_us, sd->deadline_us);
> +		info(info_enable, "interval: %lld:%lld\n", sd->runtime_us, sd->deadline_us);
>  
>  		/* Make sure that we can make our deadlines */
>  		start_period = get_time_us();
> @@ -1260,7 +1272,7 @@ int main(int argc, char **argv)
>  			fatal("Failed to perform task within runtime: Missed by %lld us\n",
>  			      end_period - start_period - sd->runtime_us);
>  
> -		printf("  Tested at %lldus of %lldus\n",
> +		info(info_enable, "  Tested at %lldus of %lldus\n",
>  		       end_period - start_period, sd->runtime_us);
>  
>  		interval += step;
> @@ -1303,7 +1315,7 @@ int main(int argc, char **argv)
>  		system("cat /sys/fs/cgroup/cpuset/my_cpuset/tasks");
>  	}
>  
> -	printf("main thread %d\n", gettid());
> +	debug(debug_enable, "main thread %d\n", gettid());
>  
>  	if (shutdown)
>  		fatal("failed to setup child threads at step 2");
> -- 
> 2.39.3
> 
> 

Signed-off-by: John Kacur <jkacur@xxxxxxxxxx>




[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux