@@ -57,6 +57,9 @@ struct tracecmd_output;
struct tracecmd_recorder;
struct hook_list;
+void tracecmd_set_quiet(struct tracecmd_output *handle, bool set_quiet);
+bool tracecmd_get_quiet(struct tracecmd_output *handle);
+
static inline int tracecmd_host_bigendian(void)
{
unsigned char str[] = { 0x1, 0x2, 0x3, 0x4 };
@@ -18,8 +18,6 @@
#define STR(x) _STR(x)
#define FILE_VERSION_STRING STR(FILE_VERSION)
-extern int quiet;
-
static ssize_t __do_write(int fd, const void *data, size_t size)
{
ssize_t tot = 0;
@@ -53,6 +53,7 @@ struct tracecmd_output {
char *tracing_dir;
int options_written;
int nr_options;
+ bool quiet;
struct list_head options;
struct tracecmd_msg_handle *msg_handle;
};
@@ -103,6 +104,29 @@ static unsigned long long convert_endian_8(struct tracecmd_output *handle,
return tep_read_number(handle->pevent, &val, 8);
}
+/**
+ * tracecmd_set_quiet - Set if to print output to the screen
+ * @quiet: If non zero, print no output to the screen
+ *
+ */
+void tracecmd_set_quiet(struct tracecmd_output *handle, bool set_quiet)
+{
+ if (handle)
+ handle->quiet = set_quiet;
+}
+
+/**
+ * tracecmd_get_quiet - Get if to print output to the screen
+ * Returns non zero, if no output to the screen should be printed
+ *
+ */
+bool tracecmd_get_quiet(struct tracecmd_output *handle)
+{
+ if (handle)
+ return handle->quiet;
+ return false;
+}
+
void tracecmd_output_free(struct tracecmd_output *handle)
{
struct tracecmd_option *option;
@@ -1157,7 +1181,7 @@ int tracecmd_write_cpu_data(struct tracecmd_output *handle,
goto out_free;
for (i = 0; i < cpus; i++) {
- if (!quiet)
+ if (!tracecmd_get_quiet(handle))
fprintf(stderr, "CPU%d data recorded at offset=0x%llx\n",
i, (unsigned long long) offsets[i]);
offset = lseek64(handle->fd, offsets[i], SEEK_SET);
@@ -1172,7 +1196,7 @@ int tracecmd_write_cpu_data(struct tracecmd_output *handle,
check_size, sizes[i]);
goto out_free;
}
- if (!quiet)
+ if (!tracecmd_get_quiet(handle))
fprintf(stderr, " %llu bytes in size\n",
(unsigned long long)check_size);
}
@@ -12,8 +12,6 @@
#include "trace-cmd.h"
#include "event-utils.h"
-extern int quiet;
-
/* fix stupid glib guint64 typecasts and printf formats */
typedef unsigned long long u64;
@@ -16,8 +16,6 @@
int silence_warnings;
int show_status;
-int quiet;
-
void warning(const char *fmt, ...)
{
va_list ap;
@@ -80,6 +80,8 @@ static char *host;
static unsigned int *client_ports;
static int sfd;
+static bool quiet;
+
/* Max size to let a per cpu file get */
static int max_kb;
@@ -3162,13 +3164,16 @@ setup_connection(struct buffer_instance *instance, struct common_record_context
/* Now create the handle through this socket */
if (msg_handle->version == V3_PROTOCOL) {
network_handle = tracecmd_create_init_fd_msg(msg_handle, listed_events);
+ tracecmd_set_quiet(network_handle, quiet);
add_options(network_handle, ctx);
tracecmd_write_cpus(network_handle, instance->cpu_count);
tracecmd_write_options(network_handle);
tracecmd_msg_finish_sending_data(msg_handle);
- } else
+ } else {
network_handle = tracecmd_create_init_fd_glob(msg_handle->fd,
listed_events);
+ tracecmd_set_quiet(network_handle, quiet);
+ }
instance->network_handle = network_handle;
@@ -3444,9 +3449,10 @@ static void record_data(struct common_record_context *ctx)
if (!local)
return;
- if (latency)
+ if (latency) {
handle = tracecmd_create_file_latency(output_file, local_cpu_count);
- else {
+ tracecmd_set_quiet(handle, quiet);
+ } else {
if (!local_cpu_count)
return;
@@ -3478,6 +3484,7 @@ static void record_data(struct common_record_context *ctx)
handle = tracecmd_create_init_file_glob(output_file, listed_events);
if (!handle)
die("Error creating output file");
+ tracecmd_set_quiet(handle, quiet);
add_options(handle, ctx);
@@ -5155,7 +5162,7 @@ static void parse_record_options(int argc,
break;
case OPT_quiet:
case 'q':
- quiet = 1;
+ quiet = true;
break;
default:
usage(argv);
A trace-cmd global variable "quiet" is used from libtracecmd and should be defined there. A new library APIs are implemented to access it: void tracecmd_set_quiet(int quiet); int tracecmd_get_quiet(void); Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> --- include/trace-cmd/trace-cmd.h | 3 +++ lib/trace-cmd/include/trace-cmd-local.h | 2 -- lib/trace-cmd/trace-output.c | 28 +++++++++++++++++++++++-- tracecmd/include/trace-local.h | 2 -- tracecmd/trace-cmd.c | 2 -- tracecmd/trace-record.c | 15 +++++++++---- 6 files changed, 40 insertions(+), 12 deletions(-)