workload_exec_errno = info->si_value.sival_int;
 }
 
-static int perf_stat_synthesize_config(struct perf_stat_config *config,
-                                      struct perf_tool *tool,
-                                      struct perf_evlist *evlist,
-                                      perf_event__handler_t process,
-                                      bool attrs)
-{
-       int err;
-
-       if (attrs) {
-               err = perf_event__synthesize_attrs(tool, evlist, process);
-               if (err < 0) {
-                       pr_err("Couldn't synthesize attrs.\n");
-                       return err;
-               }
-       }
-
-       err = perf_event__synthesize_extra_attr(tool, evlist, process,
-                                               attrs);
-
-       err = perf_event__synthesize_thread_map2(tool, evlist->threads,
-                                                process, NULL);
-       if (err < 0) {
-               pr_err("Couldn't synthesize thread map.\n");
-               return err;
-       }
-
-       err = perf_event__synthesize_cpu_map(tool, evlist->cpus,
-                                            process, NULL);
-       if (err < 0) {
-               pr_err("Couldn't synthesize thread map.\n");
-               return err;
-       }
-
-       err = perf_event__synthesize_stat_config(tool, config, process, NULL);
-       if (err < 0) {
-               pr_err("Couldn't synthesize config.\n");
-               return err;
-       }
-
-       return 0;
-}
-
 static bool perf_evsel__should_store_id(struct perf_evsel *counter)
 {
        return STAT_RECORD || counter->attr.read_format & PERF_FORMAT_ID;
 
 
        return perf_evsel__open_per_thread(evsel, evsel->threads);
 }
+
+int perf_stat_synthesize_config(struct perf_stat_config *config,
+                               struct perf_tool *tool,
+                               struct perf_evlist *evlist,
+                               perf_event__handler_t process,
+                               bool attrs)
+{
+       int err;
+
+       if (attrs) {
+               err = perf_event__synthesize_attrs(tool, evlist, process);
+               if (err < 0) {
+                       pr_err("Couldn't synthesize attrs.\n");
+                       return err;
+               }
+       }
+
+       err = perf_event__synthesize_extra_attr(tool, evlist, process,
+                                               attrs);
+
+       err = perf_event__synthesize_thread_map2(tool, evlist->threads,
+                                                process, NULL);
+       if (err < 0) {
+               pr_err("Couldn't synthesize thread map.\n");
+               return err;
+       }
+
+       err = perf_event__synthesize_cpu_map(tool, evlist->cpus,
+                                            process, NULL);
+       if (err < 0) {
+               pr_err("Couldn't synthesize thread map.\n");
+               return err;
+       }
+
+       err = perf_event__synthesize_stat_config(tool, config, process, NULL);
+       if (err < 0) {
+               pr_err("Couldn't synthesize config.\n");
+               return err;
+       }
+
+       return 0;
+}
 
 #include "xyarray.h"
 #include "rblist.h"
 #include "perf.h"
+#include "event.h"
 
 struct stats {
        double n, mean, M2;
 int create_perf_stat_counter(struct perf_evsel *evsel,
                             struct perf_stat_config *config,
                             struct target *target);
+int perf_stat_synthesize_config(struct perf_stat_config *config,
+                               struct perf_tool *tool,
+                               struct perf_evlist *evlist,
+                               perf_event__handler_t process,
+                               bool attrs);
 #endif