Commit e9e0bb2a authored by Denis V. Lunev's avatar Denis V. Lunev Committed by Stefan Hajnoczi
Browse files

trace: move qemu_trace_opts to trace/control.c



The patch also creates trace_opt_parse() helper in trace/control.c to reuse
this code in next patches for qemu-nbd and qemu-io.

The patch also makes trace_init_events() static, as this call is not used
outside the module anymore.

Signed-off-by: default avatarDenis V. Lunev <den@openvz.org>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
Message-id: 1466174654-30130-4-git-send-email-den@openvz.org
CC: Paolo Bonzini <pbonzini@redhat.com>
CC: Stefan Hajnoczi <stefanha@redhat.com>
CC: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
parent eeb2b8f7
Loading
Loading
Loading
Loading
+41 −1
Original line number Diff line number Diff line
@@ -21,11 +21,33 @@
#endif
#include "qapi/error.h"
#include "qemu/error-report.h"
#include "qemu/config-file.h"
#include "monitor/monitor.h"

int trace_events_enabled_count;
bool trace_events_dstate[TRACE_EVENT_COUNT];

QemuOptsList qemu_trace_opts = {
    .name = "trace",
    .implied_opt_name = "enable",
    .head = QTAILQ_HEAD_INITIALIZER(qemu_trace_opts.head),
    .desc = {
        {
            .name = "enable",
            .type = QEMU_OPT_STRING,
        },
        {
            .name = "events",
            .type = QEMU_OPT_STRING,
        },{
            .name = "file",
            .type = QEMU_OPT_STRING,
        },
        { /* end of list */ }
    },
};


TraceEvent *trace_event_name(const char *name)
{
    assert(name != NULL);
@@ -142,7 +164,7 @@ void trace_enable_events(const char *line_buf)
    }
}

void trace_init_events(const char *fname)
static void trace_init_events(const char *fname)
{
    Location loc;
    FILE *fp;
@@ -217,3 +239,21 @@ bool trace_init_backends(void)

    return true;
}

char *trace_opt_parse(const char *optarg)
{
    char *trace_file;
    QemuOpts *opts = qemu_opts_parse_noisily(qemu_find_opts("trace"),
                                             optarg, true);
    if (!opts) {
        exit(1);
    }
    if (qemu_opt_get(opts, "enable")) {
        trace_enable_events(qemu_opt_get(opts, "enable"));
    }
    trace_init_events(qemu_opt_get(opts, "events"));
    trace_file = g_strdup(qemu_opt_get(opts, "file"));
    qemu_opts_del(opts);

    return trace_file;
}
+14 −11
Original line number Diff line number Diff line
@@ -159,17 +159,6 @@ static void trace_event_set_state_dynamic(TraceEvent *ev, bool state);
 */
bool trace_init_backends(void);

/**
 * trace_init_events:
 * @events: Name of file with events to be enabled at startup; may be NULL.
 *          Corresponds to commandline option "-trace events=...".
 *
 * Read the list of enabled tracing events.
 *
 * Returns: Whether the backends could be successfully initialized.
 */
void trace_init_events(const char *file);

/**
 * trace_init_file:
 * @file:   Name of trace output file; may be NULL.
@@ -197,6 +186,20 @@ void trace_list_events(void);
 */
void trace_enable_events(const char *line_buf);

/**
 * Definition of QEMU options describing trace subsystem configuration
 */
extern QemuOptsList qemu_trace_opts;

/**
 * trace_opt_parse:
 * @optarg: A string argument of --trace command line argument
 *
 * Initialize tracing subsystem.
 *
 * Returns the filename to save trace to.  It must be freed with g_free().
 */
char *trace_opt_parse(const char *optarg);

#include "trace/control-internal.h"

+2 −36
Original line number Diff line number Diff line
@@ -262,26 +262,6 @@ static QemuOptsList qemu_sandbox_opts = {
    },
};

static QemuOptsList qemu_trace_opts = {
    .name = "trace",
    .implied_opt_name = "enable",
    .head = QTAILQ_HEAD_INITIALIZER(qemu_trace_opts.head),
    .desc = {
        {
            .name = "enable",
            .type = QEMU_OPT_STRING,
        },
        {
            .name = "events",
            .type = QEMU_OPT_STRING,
        },{
            .name = "file",
            .type = QEMU_OPT_STRING,
        },
        { /* end of list */ }
    },
};

static QemuOptsList qemu_option_rom_opts = {
    .name = "option-rom",
    .implied_opt_name = "romfile",
@@ -3864,23 +3844,9 @@ int main(int argc, char **argv, char **envp)
                xen_mode = XEN_ATTACH;
                break;
            case QEMU_OPTION_trace:
            {
                opts = qemu_opts_parse_noisily(qemu_find_opts("trace"),
                                               optarg, true);
                if (!opts) {
                    exit(1);
                }
                if (qemu_opt_get(opts, "enable")) {
                    trace_enable_events(qemu_opt_get(opts, "enable"));
                }
                trace_init_events(qemu_opt_get(opts, "events"));
                if (trace_file) {
                g_free(trace_file);
                }
                trace_file = g_strdup(qemu_opt_get(opts, "file"));
                qemu_opts_del(opts);
                trace_file = trace_opt_parse(optarg);
                break;
            }
            case QEMU_OPTION_readconfig:
                {
                    int ret = qemu_read_config_file(optarg);