#include "util/parse-options.h"
 
-static bool            inject_build_ids;
+struct perf_inject {
+       struct perf_tool tool;
+       bool             build_ids;
+};
 
 static int perf_event__repipe_synth(struct perf_tool *tool __maybe_unused,
                                    union perf_event *event,
        return 0;
 }
 
-struct perf_tool perf_inject = {
-       .sample         = perf_event__repipe_sample,
-       .mmap           = perf_event__repipe,
-       .comm           = perf_event__repipe,
-       .fork           = perf_event__repipe,
-       .exit           = perf_event__repipe,
-       .lost           = perf_event__repipe,
-       .read           = perf_event__repipe_sample,
-       .throttle       = perf_event__repipe,
-       .unthrottle     = perf_event__repipe,
-       .attr           = perf_event__repipe_attr,
-       .event_type     = perf_event__repipe_event_type_synth,
-       .tracing_data   = perf_event__repipe_tracing_data_synth,
-       .build_id       = perf_event__repipe_op2_synth,
-};
-
 extern volatile int session_done;
 
 static void sig_handler(int sig __maybe_unused)
        session_done = 1;
 }
 
-static int __cmd_inject(void)
+static int __cmd_inject(struct perf_inject *inject)
 {
        struct perf_session *session;
        int ret = -EINVAL;
 
        signal(SIGINT, sig_handler);
 
-       if (inject_build_ids) {
-               perf_inject.sample       = perf_event__inject_buildid;
-               perf_inject.mmap         = perf_event__repipe_mmap;
-               perf_inject.fork         = perf_event__repipe_task;
-               perf_inject.tracing_data = perf_event__repipe_tracing_data;
+       if (inject->build_ids) {
+               inject->tool.sample       = perf_event__inject_buildid;
+               inject->tool.mmap         = perf_event__repipe_mmap;
+               inject->tool.fork         = perf_event__repipe_task;
+               inject->tool.tracing_data = perf_event__repipe_tracing_data;
        }
 
-       session = perf_session__new("-", O_RDONLY, false, true, &perf_inject);
+       session = perf_session__new("-", O_RDONLY, false, true, &inject->tool);
        if (session == NULL)
                return -ENOMEM;
 
-       ret = perf_session__process_events(session, &perf_inject);
+       ret = perf_session__process_events(session, &inject->tool);
 
        perf_session__delete(session);
 
        NULL
 };
 
-static const struct option options[] = {
-       OPT_BOOLEAN('b', "build-ids", &inject_build_ids,
-                   "Inject build-ids into the output stream"),
-       OPT_INCR('v', "verbose", &verbose,
-                "be more verbose (show build ids, etc)"),
-       OPT_END()
-};
-
 int cmd_inject(int argc, const char **argv, const char *prefix __maybe_unused)
 {
+       struct perf_inject inject = {
+               .tool = {
+                       .sample         = perf_event__repipe_sample,
+                       .mmap           = perf_event__repipe,
+                       .comm           = perf_event__repipe,
+                       .fork           = perf_event__repipe,
+                       .exit           = perf_event__repipe,
+                       .lost           = perf_event__repipe,
+                       .read           = perf_event__repipe_sample,
+                       .throttle       = perf_event__repipe,
+                       .unthrottle     = perf_event__repipe,
+                       .attr           = perf_event__repipe_attr,
+                       .event_type     = perf_event__repipe_event_type_synth,
+                       .tracing_data   = perf_event__repipe_tracing_data_synth,
+                       .build_id       = perf_event__repipe_op2_synth,
+               },
+       };
+       const struct option options[] = {
+               OPT_BOOLEAN('b', "build-ids", &inject.build_ids,
+                           "Inject build-ids into the output stream"),
+               OPT_INCR('v', "verbose", &verbose,
+                        "be more verbose (show build ids, etc)"),
+               OPT_END()
+       };
+
        argc = parse_options(argc, argv, options, report_usage, 0);
 
        /*
        if (symbol__init() < 0)
                return -1;
 
-       return __cmd_inject();
+       return __cmd_inject(&inject);
 }