From patchwork Thu Apr 25 11:05:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tzvetomir Stoyanov X-Patchwork-Id: 10916801 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AD6DF1805 for ; Thu, 25 Apr 2019 11:05:42 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9E30028C35 for ; Thu, 25 Apr 2019 11:05:42 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 924F528C3D; Thu, 25 Apr 2019 11:05:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F389128C38 for ; Thu, 25 Apr 2019 11:05:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730655AbfDYLFl (ORCPT ); Thu, 25 Apr 2019 07:05:41 -0400 Received: from mail-wm1-f66.google.com ([209.85.128.66]:53050 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730654AbfDYLFl (ORCPT ); Thu, 25 Apr 2019 07:05:41 -0400 Received: by mail-wm1-f66.google.com with SMTP id j13so8773415wmh.2 for ; Thu, 25 Apr 2019 04:05:39 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cwMm2C4w9yI9eiaOqsYvF9cOsecUQ/ttiJRQ49FSz3Q=; b=kkjS7fbMMcrHDQJmPUrvnp8X4/IHLawj+1678kZHrBMqN/0VscvglR2CjjaBiCdM6J pwfgu8e1Cu9KBqG3ysCrkCqNmvhL8jm4EX/eG8apxsEKjK10wosS4YH2TmEgJKj/vP6j o2BZWyI8ZheOeS2VYvc6OnN78sFLOuYl1edv+xrgxjSZM4YKvspH96sJdMyUF6Nl6wFF pXAFtdxdZqOrrBIjOxlS84r7UevT30iXifEGU+cV/eMj205kSE4+70yv5EOmtFJm9/3e wQz8Nws3DH0iC2IYTue7rsgptwOdeBZPUCoLEpm9MOC1YCpqGLmXT7wWl/pWj4qc5AXm M2DQ== X-Gm-Message-State: APjAAAV9rx3FJBd4b/5+7HEekm3A0ye6eaLbrI+rz7myO681krSKl6lw WjLHZb4kKXhEJhbNgnxE05RiQwvT X-Google-Smtp-Source: APXvYqwHMK1461tMWzT2SUFEEWDEA5z76T9i2+18fxT8X3V/8apuzJ7A8sXDOkK9Ejh/4sEqdxHnPw== X-Received: by 2002:a7b:c40c:: with SMTP id k12mr3012458wmi.2.1556190338424; Thu, 25 Apr 2019 04:05:38 -0700 (PDT) Received: from oberon.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id a6sm23013606wrp.49.2019.04.25.04.05.37 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 25 Apr 2019 04:05:37 -0700 (PDT) From: Tzvetomir Stoyanov To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH v11 5/9] trace-cmd: Refactored few functions in trace-record.c Date: Thu, 25 Apr 2019 14:05:27 +0300 Message-Id: <20190425110531.8941-6-tstoyanov@vmware.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190425110531.8941-1-tstoyanov@vmware.com> References: <20190425110531.8941-1-tstoyanov@vmware.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP In order to reuse the code inside the trace-cmd application, few functions from trace-record.c are refactored: - make_instances() and tracecmd_remove_instances() are splited. New ones are created: tracecmd_make_instance() and tracecmd_remove_instance(), which are visible outside the trace-record.c - Following functions are made non-static: tracecmd_init_instance() get_instance_dir(), write_instance_file(), write_tracing_on(), tracecmd_set_clock() - New function is implemented: tracecmd_local_cpu_count(), an internal API to get local_cpu_count. Signed-off-by: Tzvetomir Stoyanov --- tracecmd/include/trace-local.h | 9 ++++ tracecmd/trace-record.c | 88 +++++++++++++++++++--------------- 2 files changed, 59 insertions(+), 38 deletions(-) diff --git a/tracecmd/include/trace-local.h b/tracecmd/include/trace-local.h index 71b9249..554f1a3 100644 --- a/tracecmd/include/trace-local.h +++ b/tracecmd/include/trace-local.h @@ -235,6 +235,15 @@ void update_first_instance(struct buffer_instance *instance, int topt); void show_instance_file(struct buffer_instance *instance, const char *name); int count_cpus(void); +void write_tracing_on(struct buffer_instance *instance, int on); +char *get_instance_dir(struct buffer_instance *instance); +int write_instance_file(struct buffer_instance *instance, + const char *file, const char *str, const char *type); +void tracecmd_init_instance(struct buffer_instance *instance); +void tracecmd_make_instance(struct buffer_instance *instance); +int tracecmd_local_cpu_count(void); +void tracecmd_set_clock(struct buffer_instance *instance); +void tracecmd_remove_instance(struct buffer_instance *instance); /* No longer in event-utils.h */ void __noreturn die(const char *fmt, ...); /* Can be overriden */ diff --git a/tracecmd/trace-record.c b/tracecmd/trace-record.c index 29f5784..4a82773 100644 --- a/tracecmd/trace-record.c +++ b/tracecmd/trace-record.c @@ -185,7 +185,7 @@ static inline int no_top_instance(void) return first_instance != &top_instance; } -static void init_instance(struct buffer_instance *instance) +void tracecmd_init_instance(struct buffer_instance *instance) { instance->event_next = &instance->events; } @@ -309,7 +309,7 @@ static void reset_save_file_cond(const char *file, int prio, */ void add_instance(struct buffer_instance *instance, int cpu_count) { - init_instance(instance); + tracecmd_init_instance(instance); instance->next = buffer_instances; if (first_instance == buffer_instances) first_instance = instance; @@ -496,7 +496,7 @@ static void add_event(struct buffer_instance *instance, struct event_list *event static void reset_event_list(struct buffer_instance *instance) { instance->events = NULL; - init_instance(instance); + tracecmd_init_instance(instance); } static char *get_temp_file(struct buffer_instance *instance, int cpu) @@ -792,8 +792,7 @@ get_instance_file(struct buffer_instance *instance, const char *file) return path; } -static char * -get_instance_dir(struct buffer_instance *instance) +char *get_instance_dir(struct buffer_instance *instance) { char *buf; char *path; @@ -837,9 +836,8 @@ static int write_file(const char *file, const char *str, const char *type) return ret; } -static int -write_instance_file(struct buffer_instance *instance, - const char *file, const char *str, const char *type) +int write_instance_file(struct buffer_instance *instance, + const char *file, const char *str, const char *type) { char *path; int ret; @@ -1981,7 +1979,7 @@ static int open_tracing_on(struct buffer_instance *instance) return fd; } -static void write_tracing_on(struct buffer_instance *instance, int on) +void write_tracing_on(struct buffer_instance *instance, int on) { int ret; int fd; @@ -2305,7 +2303,7 @@ void tracecmd_enable_events(void) enable_events(first_instance); } -static void set_clock(struct buffer_instance *instance) +void tracecmd_set_clock(struct buffer_instance *instance) { char *path; char *content; @@ -4442,49 +4440,58 @@ static void clear_func_filters(void) } } -static void make_instances(void) +void tracecmd_make_instance(struct buffer_instance *instance) { - struct buffer_instance *instance; struct stat st; char *path; int ret; + path = get_instance_dir(instance); + ret = stat(path, &st); + if (ret < 0) { + ret = mkdir(path, 0777); + if (ret < 0) + die("mkdir %s", path); + } else + /* Don't delete instances that already exist */ + instance->flags |= BUFFER_FL_KEEP; + tracecmd_put_tracing_file(path); + +} + +static void make_instances(void) +{ + struct buffer_instance *instance; + for_each_instance(instance) { if (is_guest(instance)) continue; + tracecmd_make_instance(instance); + } +} - path = get_instance_dir(instance); - ret = stat(path, &st); - if (ret < 0) { - ret = mkdir(path, 0777); - if (ret < 0) - die("mkdir %s", path); - } else - /* Don't delete instances that already exist */ - instance->flags |= BUFFER_FL_KEEP; - tracecmd_put_tracing_file(path); +void tracecmd_remove_instance(struct buffer_instance *instance) +{ + char *path; + + if (instance->tracing_on_fd > 0) { + close(instance->tracing_on_fd); + instance->tracing_on_fd = 0; } + path = get_instance_dir(instance); + rmdir(path); + tracecmd_put_tracing_file(path); } void tracecmd_remove_instances(void) { struct buffer_instance *instance; - char *path; - int ret; for_each_instance(instance) { /* Only delete what we created */ if (is_guest(instance) || (instance->flags & BUFFER_FL_KEEP)) continue; - if (instance->tracing_on_fd > 0) { - close(instance->tracing_on_fd); - instance->tracing_on_fd = 0; - } - path = get_instance_dir(instance); - ret = rmdir(path); - if (ret < 0) - die("rmdir %s", path); - tracecmd_put_tracing_file(path); + tracecmd_remove_instance(instance); } } @@ -4979,7 +4986,7 @@ void trace_stop(int argc, char **argv) int topt = 0; struct buffer_instance *instance = &top_instance; - init_instance(instance); + tracecmd_init_instance(instance); for (;;) { int c; @@ -5020,7 +5027,7 @@ void trace_restart(int argc, char **argv) int topt = 0; struct buffer_instance *instance = &top_instance; - init_instance(instance); + tracecmd_init_instance(instance); for (;;) { int c; @@ -5062,7 +5069,7 @@ void trace_reset(int argc, char **argv) int topt = 0; struct buffer_instance *instance = &top_instance; - init_instance(instance); + tracecmd_init_instance(instance); /* if last arg is -a, then -b and -d apply to all instances */ int last_specified_all = 0; @@ -5146,11 +5153,16 @@ static void init_common_record_context(struct common_record_context *ctx, memset(ctx, 0, sizeof(*ctx)); ctx->instance = &top_instance; ctx->curr_cmd = curr_cmd; - init_instance(ctx->instance); + tracecmd_init_instance(ctx->instance); local_cpu_count = count_cpus(); ctx->instance->cpu_count = local_cpu_count; } +int tracecmd_local_cpu_count(void) +{ + return local_cpu_count; +} + #define IS_EXTRACT(ctx) ((ctx)->curr_cmd == CMD_extract) #define IS_START(ctx) ((ctx)->curr_cmd == CMD_start) #define IS_STREAM(ctx) ((ctx)->curr_cmd == CMD_stream) @@ -5728,7 +5740,7 @@ static void record_trace(int argc, char **argv, tracecmd_disable_all_tracing(1); for_all_instances(instance) - set_clock(instance); + tracecmd_set_clock(instance); /* Record records the date first */ if (ctx->date &&