From b83ffb9a134a94fb3aa81b3b3fe11fe157d5697c Mon Sep 17 00:00:00 2001 From: Giulio Benetti Date: Mon, 13 Sep 2021 01:20:55 +0200 Subject: [PATCH] package/trace-cmd: bump to version 2.9.5 Update to version 2.9.5 and remove local patches that have been upstreamed. Signed-off-by: Giulio Benetti Signed-off-by: Yann E. MORIN --- ...01-trace-cmd-libtracecmd-API-cleanup.patch | 1486 ----------------- ...make-it-build-against-musl-C-library.patch | 140 -- ...dd_event_pid-out-of-ifndef-NO_PTRACE.patch | 51 - package/trace-cmd/trace-cmd.hash | 2 +- package/trace-cmd/trace-cmd.mk | 2 +- 5 files changed, 2 insertions(+), 1679 deletions(-) delete mode 100644 package/trace-cmd/0001-trace-cmd-libtracecmd-API-cleanup.patch delete mode 100644 package/trace-cmd/0002-trace-cmd-make-it-build-against-musl-C-library.patch delete mode 100644 package/trace-cmd/0003-trace-cmd-Move-add_event_pid-out-of-ifndef-NO_PTRACE.patch diff --git a/package/trace-cmd/0001-trace-cmd-libtracecmd-API-cleanup.patch b/package/trace-cmd/0001-trace-cmd-libtracecmd-API-cleanup.patch deleted file mode 100644 index a0dee21020..0000000000 --- a/package/trace-cmd/0001-trace-cmd-libtracecmd-API-cleanup.patch +++ /dev/null @@ -1,1486 +0,0 @@ -From 4b6e124d8b5a0dfd21aedf21d2c347fc5f0705a2 Mon Sep 17 00:00:00 2001 -From: "Tzvetomir Stoyanov (VMware)" -Date: Thu, 12 Nov 2020 13:52:08 +0200 -Subject: [PATCH] trace-cmd: libtracecmd API cleanup - -The tracecmd library is used by trace-cmd and KernelShark applications. -All APIs, that are not used by KernelShark are removed from trace-cmd.h. -This is the first step to cleanup the library APIs and dependencies. - -Link: https://lore.kernel.org/linux-trace-devel/20201112115208.1250789-3-tz.stoyanov@gmail.com - -Signed-off-by: Tzvetomir Stoyanov (VMware) -Signed-off-by: Steven Rostedt (VMware) -[Retrieved from: -https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git/commit/?id=4b6e124d8b5a0dfd21aedf21d2c347fc5f0705a2] -Signed-off-by: Fabrice Fontaine ---- - Makefile | 2 +- - include/trace-cmd/trace-cmd.h | 488 +----------------- - include/trace-cmd/trace-filter-hash.h | 64 --- - include/trace-cmd/trace-hash.h | 55 -- - include/trace-cmd/trace-msg.h | 15 - - .../include/private/trace-cmd-private.h | 480 +++++++++++++++++ - .../include/private/trace-filter-hash.h | 64 +++ - lib/trace-cmd/include/private/trace-hash.h | 55 ++ - lib/trace-cmd/include/private/trace-msg.h | 15 + - lib/trace-cmd/include/trace-cmd-local.h | 2 + - lib/trace-cmd/trace-ftrace.c | 2 +- - lib/trace-cmd/trace-hooks.c | 2 +- - lib/trace-cmd/trace-recorder.c | 2 +- - lib/trace-cmd/trace-timesync.c | 2 +- - lib/trace-cmd/trace-util.c | 2 +- - lib/traceevent/plugins/plugin_python_loader.c | 3 +- - python/ctracecmd.i | 1 + - tracecmd/include/trace-local.h | 2 +- - 18 files changed, 637 insertions(+), 619 deletions(-) - delete mode 100644 include/trace-cmd/trace-filter-hash.h - delete mode 100644 include/trace-cmd/trace-hash.h - delete mode 100644 include/trace-cmd/trace-msg.h - create mode 100644 lib/trace-cmd/include/private/trace-cmd-private.h - create mode 100644 lib/trace-cmd/include/private/trace-filter-hash.h - create mode 100644 lib/trace-cmd/include/private/trace-hash.h - create mode 100644 lib/trace-cmd/include/private/trace-msg.h - -diff --git a/Makefile b/Makefile -index b034042..6ef6936 100644 ---- a/Makefile -+++ b/Makefile -@@ -224,6 +224,7 @@ INCLUDES += -I$(src)/include/trace-cmd - INCLUDES += -I$(src)/include/tracefs - INCLUDES += -I$(src)/lib/traceevent/include - INCLUDES += -I$(src)/lib/trace-cmd/include -+INCLUDES += -I$(src)/lib/trace-cmd/include/private - INCLUDES += -I$(src)/lib/tracefs/include - INCLUDES += -I$(src)/tracecmd/include - INCLUDES += -I$(obj)/tracecmd/include -@@ -417,7 +418,6 @@ install_libs: libs - $(Q)$(call do_install,$(src)/include/traceevent/event-parse.h,$(includedir_SQ)/traceevent) - $(Q)$(call do_install,$(src)/include/traceevent/trace-seq.h,$(includedir_SQ)/traceevent) - $(Q)$(call do_install,$(src)/include/trace-cmd/trace-cmd.h,$(includedir_SQ)/trace-cmd) -- $(Q)$(call do_install,$(src)/include/trace-cmd/trace-filter-hash.h,$(includedir_SQ)/trace-cmd) - $(Q)$(call do_install,$(src)/include/tracefs/tracefs.h,$(includedir_SQ)/tracefs) - $(Q)$(call do_install_ld,$(TRACE_LD_FILE),$(LD_SO_CONF_DIR),$(libdir_SQ)/trace-cmd) - $(Q)$(call do_install_ld,$(TRACE_LD_FILE),$(LD_SO_CONF_DIR),$(libdir_SQ)/traceevent) -diff --git a/include/trace-cmd/trace-cmd.h b/include/trace-cmd/trace-cmd.h -index 3c2b474..9751ac3 100644 ---- a/include/trace-cmd/trace-cmd.h -+++ b/include/trace-cmd/trace-cmd.h -@@ -9,497 +9,31 @@ - #include "traceevent/event-parse.h" - #include "tracefs/tracefs.h" - --#define TRACECMD_MAGIC { 23, 8, 68 } -- --#define ARRAY_SIZE(_a) (sizeof(_a) / sizeof((_a)[0])) --#define __weak __attribute__((weak)) --#define __noreturn __attribute__((noreturn)) -- --#define TRACECMD_ERR_MSK ((unsigned long)(-1) & ~((1UL << 14) - 1)) --#define TRACECMD_ISERR(ptr) ((unsigned long)(ptr) > TRACECMD_ERR_MSK) --#define TRACECMD_ERROR(ret) ((void *)((unsigned long)(ret) | TRACECMD_ERR_MSK)) --#define TRACECMD_PTR2ERR(ptr) ((unisgned long)(ptr) & ~TRACECMD_ERR_MSK) -- --void tracecmd_parse_cmdlines(struct tep_handle *pevent, char *file, int size); --void tracecmd_parse_proc_kallsyms(struct tep_handle *pevent, char *file, unsigned int size); --void tracecmd_parse_ftrace_printk(struct tep_handle *pevent, char *file, unsigned int size); --struct tep_plugin_list *trace_load_plugins(struct tep_handle *tep); -- --int *tracecmd_add_id(int *list, int id, int len); -- --enum { -- RINGBUF_TYPE_PADDING = 29, -- RINGBUF_TYPE_TIME_EXTEND = 30, -- RINGBUF_TYPE_TIME_STAMP = 31, --}; -- --void tracecmd_record_ref(struct tep_record *record); --void free_record(struct tep_record *record); -- --void tracecmd_set_debug(bool set_debug); --bool tracecmd_get_debug(void); -- - struct tracecmd_input; --struct tracecmd_output; --struct tracecmd_recorder; --struct hook_list; -- --/* --- tracecmd plugins --- */ -- --extern int tracecmd_disable_sys_plugins; --extern int tracecmd_disable_plugins; -- --enum tracecmd_context { -- TRACECMD_INPUT, -- TRACECMD_OUTPUT, --}; -- --enum tracecmd_plugin_flag { -- TRACECMD_DISABLE_SYS_PLUGINS = 1, -- TRACECMD_DISABLE_PLUGINS = 1 << 1, --}; -- --struct trace_plugin_context; -- --struct trace_plugin_context * --tracecmd_plugin_context_create(enum tracecmd_context context, void *data); -- --void tracecmd_plugin_set_flag(struct trace_plugin_context *context, -- enum tracecmd_plugin_flag flag); -- --#define TRACECMD_PLUGIN_LOADER tracecmd_plugin_loader --#define TRACECMD_PLUGIN_UNLOADER tracecmd_plugin_unloader --#define TRACECMD_PLUGIN_ALIAS tracecmd_plugin_alias --#define _MAKE_STR(x) #x --#define MAKE_STR(x) _MAKE_STR(x) --#define TRACECMD_PLUGIN_LOADER_NAME MAKE_STR(TRACECMD_PLUGIN_LOADER) --#define TRACECMD_PLUGIN_UNLOADER_NAME MAKE_STR(TRACECMD_PLUGIN_UNLOADER) --#define TRACECMD_PLUGIN_ALIAS_NAME MAKE_STR(TRACECMD_PLUGIN_ALIAS) -- --typedef int (*tracecmd_plugin_load_func)(struct trace_plugin_context *trace); --typedef int (*tracecmd_plugin_unload_func)(struct trace_plugin_context *trace); -- --struct tracecmd_input * --tracecmd_plugin_context_input(struct trace_plugin_context *trace_context); --struct tracecmd_output * --tracecmd_plugin_context_output(struct trace_plugin_context *trace_context); -- --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 }; -- unsigned int *ptr; -- -- ptr = (unsigned int *)str; -- return *ptr == 0x01020304; --} -- --/* --- Opening and Reading the trace.dat file --- */ -- --enum { -- TRACECMD_OPTION_DONE, -- TRACECMD_OPTION_DATE, -- TRACECMD_OPTION_CPUSTAT, -- TRACECMD_OPTION_BUFFER, -- TRACECMD_OPTION_TRACECLOCK, -- TRACECMD_OPTION_UNAME, -- TRACECMD_OPTION_HOOK, -- TRACECMD_OPTION_OFFSET, -- TRACECMD_OPTION_CPUCOUNT, -- TRACECMD_OPTION_VERSION, -- TRACECMD_OPTION_PROCMAPS, -- TRACECMD_OPTION_TRACEID, -- TRACECMD_OPTION_TIME_SHIFT, -- TRACECMD_OPTION_GUEST, --}; -- --enum { -- TRACECMD_FL_IGNORE_DATE = (1 << 0), -- TRACECMD_FL_BUFFER_INSTANCE = (1 << 1), -- TRACECMD_FL_LATENCY = (1 << 2), -- TRACECMD_FL_IN_USECS = (1 << 3), -- TRACECMD_FL_FLYRECORD = (1 << 4), --}; -- --struct tracecmd_ftrace { -- struct tracecmd_input *handle; -- struct tep_event *fgraph_ret_event; -- int fgraph_ret_id; -- int long_size; --}; -- --struct tracecmd_proc_addr_map { -- unsigned long long start; -- unsigned long long end; -- char *lib_name; --}; -- --typedef void (*tracecmd_show_data_func)(struct tracecmd_input *handle, -- struct tep_record *record); --typedef void (*tracecmd_handle_init_func)(struct tracecmd_input *handle, -- struct hook_list *hook, int global); - --struct tracecmd_input *tracecmd_alloc(const char *file); --struct tracecmd_input *tracecmd_alloc_fd(int fd); --struct tracecmd_input *tracecmd_open(const char *file); - struct tracecmd_input *tracecmd_open_head(const char *file); --struct tracecmd_input *tracecmd_open_fd(int fd); -+void tracecmd_close(struct tracecmd_input *handle); - int tracecmd_pair_peer(struct tracecmd_input *handle, - struct tracecmd_input *peer); --void tracecmd_unpair_peer(struct tracecmd_input *handle); --void tracecmd_ref(struct tracecmd_input *handle); --void tracecmd_close(struct tracecmd_input *handle); --int tracecmd_read_headers(struct tracecmd_input *handle); --int tracecmd_get_parsing_failures(struct tracecmd_input *handle); --int tracecmd_long_size(struct tracecmd_input *handle); --int tracecmd_page_size(struct tracecmd_input *handle); --int tracecmd_cpus(struct tracecmd_input *handle); --int tracecmd_copy_headers(struct tracecmd_input *handle, int fd); --void tracecmd_set_flag(struct tracecmd_input *handle, int flag); --void tracecmd_clear_flag(struct tracecmd_input *handle, int flag); --unsigned long tracecmd_get_flags(struct tracecmd_input *handle); --unsigned long long tracecmd_get_traceid(struct tracecmd_input *handle); --int tracecmd_get_guest_cpumap(struct tracecmd_input *handle, -- unsigned long long trace_id, -- const char **name, -- int *vcpu_count, const int **cpu_pid); --unsigned long long tracecmd_get_tsync_peer(struct tracecmd_input *handle); --int tracecmd_enable_tsync(struct tracecmd_input *handle, bool enable); -- --void tracecmd_parse_trace_clock(struct tracecmd_input *handle, char *file, int size); -- --int tracecmd_make_pipe(struct tracecmd_input *handle, int cpu, int fd, int cpus); -- --int tracecmd_buffer_instances(struct tracecmd_input *handle); --const char *tracecmd_buffer_instance_name(struct tracecmd_input *handle, int indx); --struct tracecmd_input *tracecmd_buffer_instance_handle(struct tracecmd_input *handle, int indx); --int tracecmd_is_buffer_instance(struct tracecmd_input *handle); -- --void tracecmd_set_ts_offset(struct tracecmd_input *handle, long long offset); --void tracecmd_set_ts2secs(struct tracecmd_input *handle, unsigned long long hz); -- --void tracecmd_print_events(struct tracecmd_input *handle, const char *regex); -- --struct hook_list *tracecmd_hooks(struct tracecmd_input *handle); - - int tracecmd_init_data(struct tracecmd_input *handle); -- --void tracecmd_print_stats(struct tracecmd_input *handle); --void tracecmd_print_uname(struct tracecmd_input *handle); --void tracecmd_print_version(struct tracecmd_input *handle); -- - struct tep_record * --tracecmd_peek_data(struct tracecmd_input *handle, int cpu); -- --static inline struct tep_record * --tracecmd_peek_data_ref(struct tracecmd_input *handle, int cpu) --{ -- struct tep_record *rec = tracecmd_peek_data(handle, cpu); -- if (rec) -- rec->ref_count++; -- return rec; --} -- -+tracecmd_read_cpu_first(struct tracecmd_input *handle, int cpu); - struct tep_record * - tracecmd_read_data(struct tracecmd_input *handle, int cpu); -- --struct tep_record * --tracecmd_read_prev(struct tracecmd_input *handle, struct tep_record *record); -- --struct tep_record * --tracecmd_read_next_data(struct tracecmd_input *handle, int *rec_cpu); -- --struct tep_record * --tracecmd_peek_next_data(struct tracecmd_input *handle, int *rec_cpu); -- - struct tep_record * - tracecmd_read_at(struct tracecmd_input *handle, unsigned long long offset, - int *cpu); --struct tep_record * --tracecmd_translate_data(struct tracecmd_input *handle, -- void *ptr, int size); --struct tep_record * --tracecmd_read_cpu_first(struct tracecmd_input *handle, int cpu); --struct tep_record * --tracecmd_read_cpu_last(struct tracecmd_input *handle, int cpu); --int tracecmd_refresh_record(struct tracecmd_input *handle, -- struct tep_record *record); -- --int tracecmd_set_cpu_to_timestamp(struct tracecmd_input *handle, -- int cpu, unsigned long long ts); --void --tracecmd_set_all_cpus_to_timestamp(struct tracecmd_input *handle, -- unsigned long long time); -- --int tracecmd_set_cursor(struct tracecmd_input *handle, -- int cpu, unsigned long long offset); --unsigned long long --tracecmd_get_cursor(struct tracecmd_input *handle, int cpu); -+void free_record(struct tep_record *record); - --int tracecmd_ftrace_overrides(struct tracecmd_input *handle, struct tracecmd_ftrace *finfo); - struct tep_handle *tracecmd_get_pevent(struct tracecmd_input *handle); --bool tracecmd_get_use_trace_clock(struct tracecmd_input *handle); --tracecmd_show_data_func --tracecmd_get_show_data_func(struct tracecmd_input *handle); --void tracecmd_set_show_data_func(struct tracecmd_input *handle, -- tracecmd_show_data_func func); -- --int tracecmd_record_at_buffer_start(struct tracecmd_input *handle, struct tep_record *record); --unsigned long long tracecmd_page_ts(struct tracecmd_input *handle, -- struct tep_record *record); --unsigned int tracecmd_record_ts_delta(struct tracecmd_input *handle, -- struct tep_record *record); -- --struct tracecmd_proc_addr_map * --tracecmd_search_task_map(struct tracecmd_input *handle, -- int pid, unsigned long long addr); --#ifndef SWIG --/* hack for function graph work around */ --extern __thread struct tracecmd_input *tracecmd_curr_thread_handle; --#endif -- -- --/* --- Creating and Writing the trace.dat file --- */ -- --struct tracecmd_event_list { -- struct tracecmd_event_list *next; -- const char *glob; --}; -- --struct tracecmd_option; --struct tracecmd_msg_handle; -- --struct tracecmd_output *tracecmd_create_file_latency(const char *output_file, int cpus); --struct tracecmd_output *tracecmd_create_file(const char *output_file, -- int cpus, char * const *cpu_data_files); --struct tracecmd_output * --tracecmd_create_file_glob(const char *output_file, -- int cpus, char * const *cpu_data_files, -- struct tracecmd_event_list *event_globs); --struct tracecmd_output * --tracecmd_create_init_file_glob(const char *output_file, -- struct tracecmd_event_list *list); --struct tracecmd_output *tracecmd_create_init_fd(int fd); --struct tracecmd_output * --tracecmd_create_init_fd_glob(int fd, struct tracecmd_event_list *list); --struct tracecmd_output * --tracecmd_create_init_fd_msg(struct tracecmd_msg_handle *msg_handle, -- struct tracecmd_event_list *list); --struct tracecmd_output *tracecmd_create_init_file(const char *output_file); --struct tracecmd_output *tracecmd_create_init_file_override(const char *output_file, -- const char *tracing_dir, -- const char *kallsyms); --struct tracecmd_option *tracecmd_add_option(struct tracecmd_output *handle, -- unsigned short id, int size, -- const void *data); --struct tracecmd_option * --tracecmd_add_option_v(struct tracecmd_output *handle, -- unsigned short id, const struct iovec *vector, int count); -- --struct tracecmd_option *tracecmd_add_buffer_option(struct tracecmd_output *handle, -- const char *name, int cpus); -- --int tracecmd_write_cpus(struct tracecmd_output *handle, int cpus); --int tracecmd_write_options(struct tracecmd_output *handle); --int tracecmd_append_options(struct tracecmd_output *handle); --int tracecmd_update_option(struct tracecmd_output *handle, -- struct tracecmd_option *option, int size, -- const void *data); --void tracecmd_output_close(struct tracecmd_output *handle); --void tracecmd_output_free(struct tracecmd_output *handle); --struct tracecmd_output *tracecmd_copy(struct tracecmd_input *ihandle, -- const char *file); -- --int tracecmd_write_cpu_data(struct tracecmd_output *handle, -- int cpus, char * const *cpu_data_files); --int tracecmd_append_cpu_data(struct tracecmd_output *handle, -- int cpus, char * const *cpu_data_files); --int tracecmd_append_buffer_cpu_data(struct tracecmd_output *handle, -- struct tracecmd_option *option, -- int cpus, char * const *cpu_data_files); -- --struct tracecmd_output *tracecmd_get_output_handle_fd(int fd); -- --/* --- Reading the Fly Recorder Trace --- */ -- --enum { -- TRACECMD_RECORD_NOSPLICE = (1 << 0), /* Use read instead of splice */ -- TRACECMD_RECORD_SNAPSHOT = (1 << 1), /* Extract from snapshot */ -- TRACECMD_RECORD_BLOCK = (1 << 2), /* Block on splice write */ -- TRACECMD_RECORD_NOBRASS = (1 << 3), /* Splice directly without a brass pipe */ --}; -- --void tracecmd_free_recorder(struct tracecmd_recorder *recorder); --struct tracecmd_recorder *tracecmd_create_recorder(const char *file, int cpu, unsigned flags); --struct tracecmd_recorder *tracecmd_create_recorder_fd(int fd, int cpu, unsigned flags); --struct tracecmd_recorder *tracecmd_create_recorder_virt(const char *file, int cpu, unsigned flags, int trace_fd); --struct tracecmd_recorder *tracecmd_create_recorder_maxkb(const char *file, int cpu, unsigned flags, int maxkb); --struct tracecmd_recorder *tracecmd_create_buffer_recorder_fd(int fd, int cpu, unsigned flags, const char *buffer); --struct tracecmd_recorder *tracecmd_create_buffer_recorder(const char *file, int cpu, unsigned flags, const char *buffer); --struct tracecmd_recorder *tracecmd_create_buffer_recorder_maxkb(const char *file, int cpu, unsigned flags, const char *buffer, int maxkb); -- --int tracecmd_start_recording(struct tracecmd_recorder *recorder, unsigned long sleep); --void tracecmd_stop_recording(struct tracecmd_recorder *recorder); --long tracecmd_flush_recording(struct tracecmd_recorder *recorder); -- --enum tracecmd_msg_flags { -- TRACECMD_MSG_FL_USE_TCP = 1 << 0, --}; -- --/* for both client and server */ --struct tracecmd_msg_handle { -- int fd; -- short cpu_count; -- short version; /* Current protocol version */ -- unsigned long flags; -- bool done; --}; -- --struct tracecmd_msg_handle * -- tracecmd_msg_handle_alloc(int fd, unsigned long flags); -- --/* Closes the socket and frees the handle */ --void tracecmd_msg_handle_close(struct tracecmd_msg_handle *msg_handle); -- --/* for clients */ --int tracecmd_msg_send_init_data(struct tracecmd_msg_handle *msg_handle, -- unsigned int **client_ports); --int tracecmd_msg_data_send(struct tracecmd_msg_handle *msg_handle, -- const char *buf, int size); --int tracecmd_msg_finish_sending_data(struct tracecmd_msg_handle *msg_handle); --int tracecmd_msg_send_close_msg(struct tracecmd_msg_handle *msg_handle); --int tracecmd_msg_send_close_resp_msg(struct tracecmd_msg_handle *msg_handle); --int tracecmd_msg_wait_close(struct tracecmd_msg_handle *msg_handle); --int tracecmd_msg_wait_close_resp(struct tracecmd_msg_handle *msg_handle); -- --/* for server */ --int tracecmd_msg_initial_setting(struct tracecmd_msg_handle *msg_handle); --int tracecmd_msg_send_port_array(struct tracecmd_msg_handle *msg_handle, -- unsigned *ports); --int tracecmd_msg_read_data(struct tracecmd_msg_handle *msg_handle, int ofd); --int tracecmd_msg_collect_data(struct tracecmd_msg_handle *msg_handle, int ofd); --bool tracecmd_msg_done(struct tracecmd_msg_handle *msg_handle); --void tracecmd_msg_set_done(struct tracecmd_msg_handle *msg_handle); -- --int tracecmd_msg_send_trace_req(struct tracecmd_msg_handle *msg_handle, -- int argc, char **argv, bool use_fifos, -- unsigned long long trace_id, -- char *tsync_protos, -- int tsync_protos_size); --int tracecmd_msg_recv_trace_req(struct tracecmd_msg_handle *msg_handle, -- int *argc, char ***argv, bool *use_fifos, -- unsigned long long *trace_id, -- char **tsync_protos, -- unsigned int *tsync_protos_size); -- --int tracecmd_msg_send_trace_resp(struct tracecmd_msg_handle *msg_handle, -- int nr_cpus, int page_size, -- unsigned int *ports, bool use_fifos, -- unsigned long long trace_id, -- unsigned int tsync_proto, -- unsigned int tsync_port); --int tracecmd_msg_recv_trace_resp(struct tracecmd_msg_handle *msg_handle, -- int *nr_cpus, int *page_size, -- unsigned int **ports, bool *use_fifos, -- unsigned long long *trace_id, -- unsigned int *tsync_proto, -- unsigned int *tsync_port); -- --int tracecmd_msg_send_time_sync(struct tracecmd_msg_handle *msg_handle, -- unsigned int sync_protocol, -- unsigned int sync_msg_id, -- unsigned int payload_size, char *payload); --int tracecmd_msg_recv_time_sync(struct tracecmd_msg_handle *msg_handle, -- unsigned int *sync_protocol, -- unsigned int *sync_msg_id, -- unsigned int *payload_size, char **payload); -- --/* --- Timestamp synchronization --- */ -- --enum{ -- TRACECMD_TIME_SYNC_PROTO_NONE = 0, --}; --enum{ -- TRACECMD_TIME_SYNC_CMD_PROBE = 1, -- TRACECMD_TIME_SYNC_CMD_STOP = 2, --}; -- --#define TRACECMD_TIME_SYNC_PROTO_PTP_WEIGHT 10 -- --struct tracecmd_time_sync { -- unsigned int sync_proto; -- int loop_interval; -- pthread_mutex_t lock; -- pthread_cond_t cond; -- char *clock_str; -- struct tracecmd_msg_handle *msg_handle; -- void *context; --}; -- --void tracecmd_tsync_init(void); --int tracecmd_tsync_proto_getall(char **proto_mask, int *words); --unsigned int tracecmd_tsync_proto_select(char *proto_mask, int words); --bool tsync_proto_is_supported(unsigned int proto_id); --void tracecmd_tsync_with_host(struct tracecmd_time_sync *tsync); --void tracecmd_tsync_with_guest(struct tracecmd_time_sync *tsync); --int tracecmd_tsync_get_offsets(struct tracecmd_time_sync *tsync, -- int *count, -- long long **ts, long long **offsets); --void tracecmd_tsync_free(struct tracecmd_time_sync *tsync); -- --/* --- Plugin handling --- */ --extern struct tep_plugin_option trace_ftrace_options[]; -- --char **trace_util_find_plugin_files(const char *suffix); --void trace_util_free_plugin_files(char **files); -- --/* Used for trace-cmd list */ --void tracecmd_ftrace_load_options(void); -- --/* event hooks */ -- --struct hook_list { -- struct hook_list *next; -- struct buffer_instance *instance; -- const char *hook; -- char *str; -- char *start_system; -- char *start_event; -- char *start_match; -- char *end_system; -- char *end_event; -- char *end_match; -- char *pid; -- int migrate; -- int global; -- int stack; --}; -- --struct hook_list *tracecmd_create_event_hook(const char *arg); --void tracecmd_free_hooks(struct hook_list *hooks); -- --void tracecmd_plog(const char *fmt, ...); --void tracecmd_plog_error(const char *fmt, ...); --int tracecmd_set_logfile(char *logfile); -- --/* --- System --- */ --unsigned long long tracecmd_generate_traceid(void); --int tracecmd_count_cpus(void); -- --/* --- Hack! --- */ --int tracecmd_blk_hack(struct tracecmd_input *handle); -- --/* --- Stack tracer functions --- */ --int tracecmd_stack_tracer_status(int *status); -- --/* --- Debugging --- */ --struct kbuffer *tracecmd_record_kbuf(struct tracecmd_input *handle, -- struct tep_record *record); --void *tracecmd_record_page(struct tracecmd_input *handle, -- struct tep_record *record); --void *tracecmd_record_offset(struct tracecmd_input *handle, -- struct tep_record *record); -+unsigned long long tracecmd_get_traceid(struct tracecmd_input *handle); -+int tracecmd_get_guest_cpumap(struct tracecmd_input *handle, -+ unsigned long long trace_id, -+ const char **name, -+ int *vcpu_count, const int **cpu_pid); -+int tracecmd_buffer_instances(struct tracecmd_input *handle); -+const char *tracecmd_buffer_instance_name(struct tracecmd_input *handle, int indx); -+struct tracecmd_input *tracecmd_buffer_instance_handle(struct tracecmd_input *handle, int indx); - - #endif /* _TRACE_CMD_H */ -diff --git a/include/trace-cmd/trace-filter-hash.h b/include/trace-cmd/trace-filter-hash.h -deleted file mode 100644 -index 4111c41..0000000 ---- a/include/trace-cmd/trace-filter-hash.h -+++ /dev/null -@@ -1,64 +0,0 @@ --/* SPDX-License-Identifier: LGPL-2.1 */ --/* -- * Copyright (C) 2009, 2010 Red Hat Inc, Steven Rostedt -- * Copyright (C) 2018 VMware Inc, Steven Rostedt -- * -- */ --#ifndef _TRACE_FILTER_HASH_H --#define _TRACE_FILTER_HASH_H -- --#include -- --struct tracecmd_filter_id_item { -- struct tracecmd_filter_id_item *next; -- int id; --}; -- --struct tracecmd_filter_id { -- struct tracecmd_filter_id_item **hash; -- int count; --}; -- --/** -- * tracecmd_quick_hash - A quick (non secured) hash alogirthm -- * @val: The value to perform the hash on -- * @bits: The size in bits you need to return -- * -- * This is a quick hashing function adapted from Donald E. Knuth's 32 -- * bit multiplicative hash. See The Art of Computer Programming (TAOCP). -- * Multiplication by the Prime number, closest to the golden ratio of -- * 2^32. -- * -- * @bits is used to max the result for use cases that require -- * a power of 2 return value that is less than 32 bits. Any value -- * of @bits greater than 31 (or zero), will simply return the full hash on @val. -- */ --static inline uint32_t tracecmd_quick_hash(uint32_t val, unsigned int bits) --{ -- val *= UINT32_C(2654435761); -- -- if (!bits || bits > 31) -- return val; -- -- return val & ((1 << bits) - 1); --} -- --struct tracecmd_filter_id_item * -- tracecmd_filter_id_find(struct tracecmd_filter_id *hash, int id); --void tracecmd_filter_id_add(struct tracecmd_filter_id *hash, int id); --void tracecmd_filter_id_remove(struct tracecmd_filter_id *hash, int id); --void tracecmd_filter_id_clear(struct tracecmd_filter_id *hash); --struct tracecmd_filter_id *tracecmd_filter_id_hash_alloc(void); --void tracecmd_filter_id_hash_free(struct tracecmd_filter_id *hash); --struct tracecmd_filter_id * -- tracecmd_filter_id_hash_copy(struct tracecmd_filter_id *hash); --int *tracecmd_filter_ids(struct tracecmd_filter_id *hash); --int tracecmd_filter_id_compare(struct tracecmd_filter_id *hash1, -- struct tracecmd_filter_id *hash2); -- --static inline int tracecmd_filter_task_count(struct tracecmd_filter_id *hash) --{ -- return hash->count; --} -- --#endif /* _TRACE_FILTER_HASH_H */ -diff --git a/include/trace-cmd/trace-hash.h b/include/trace-cmd/trace-hash.h -deleted file mode 100644 -index aa92cdf..0000000 ---- a/include/trace-cmd/trace-hash.h -+++ /dev/null -@@ -1,55 +0,0 @@ --/* SPDX-License-Identifier: GPL-2.0 */ --/* -- * Copyright (C) 2014 Red Hat Inc, Steven Rostedt -- * -- */ --#ifndef _TRACE_HASH_H --#define _TRACE_HASH_H -- --struct trace_hash_item { -- struct trace_hash_item *next; -- struct trace_hash_item *prev; -- unsigned long long key; --}; -- --struct trace_hash { -- struct trace_hash_item **buckets; -- int nr_buckets; -- int power; --}; -- --int trace_hash_init(struct trace_hash *hash, int buckets); --void trace_hash_free(struct trace_hash *hash); --int trace_hash_add(struct trace_hash *hash, struct trace_hash_item *item); --int trace_hash_empty(struct trace_hash *hash); -- --static inline void trace_hash_del(struct trace_hash_item *item) --{ -- struct trace_hash_item *prev = item->prev; -- -- prev->next = item->next; -- if (item->next) -- item->next->prev = prev; --} -- --#define trace_hash_for_each_bucket(bucket, hash) \ -- for (bucket = (hash)->buckets; \ -- (bucket) < (hash)->buckets + (hash)->nr_buckets; (bucket)++) -- --#define trace_hash_for_each_item(item, bucket) \ -- for ((item = *(bucket)); item; item = (item)->next) -- --#define trace_hash_for_each_item_safe(item, n, bucket) \ -- for ((item = *(bucket)), n = item ? item->next : NULL; item; \ -- item = n, n = item ? (item)->next : NULL) -- --#define trace_hash_while_item(item, bucket) \ -- while ((item = *(bucket))) -- --typedef int (*trace_hash_func)(struct trace_hash_item *item, void *data); -- --struct trace_hash_item * --trace_hash_find(struct trace_hash *hash, unsigned long long key, -- trace_hash_func match, void *data); -- --#endif /* _TRACE_HASH_H */ -diff --git a/include/trace-cmd/trace-msg.h b/include/trace-cmd/trace-msg.h -deleted file mode 100644 -index aab8a69..0000000 ---- a/include/trace-cmd/trace-msg.h -+++ /dev/null -@@ -1,15 +0,0 @@ --#ifndef _TRACE_MSG_H_ --#define _TRACE_MSG_H_ -- --#include -- --#define UDP_MAX_PACKET (65536 - 20) --#define V3_MAGIC "766679\0" --#define V3_CPU "-1V3" -- --#define V1_PROTOCOL 1 --#define V3_PROTOCOL 3 -- --extern unsigned int page_size; -- --#endif /* _TRACE_MSG_H_ */ -diff --git a/lib/trace-cmd/include/private/trace-cmd-private.h b/lib/trace-cmd/include/private/trace-cmd-private.h -new file mode 100644 -index 0000000..458760e ---- /dev/null -+++ b/lib/trace-cmd/include/private/trace-cmd-private.h -@@ -0,0 +1,480 @@ -+/* SPDX-License-Identifier: LGPL-2.1 */ -+/* -+ * Copyright (C) 2008, 2009, 2010 Red Hat Inc, Steven Rostedt -+ * -+ */ -+#ifndef _TRACE_CMD_PRIVATE_H -+#define _TRACE_CMD_PRIVATE_H -+ -+#include "traceevent/event-parse.h" -+#include "trace-cmd/trace-cmd.h" -+ -+#define TRACECMD_MAGIC { 23, 8, 68 } -+ -+#define ARRAY_SIZE(_a) (sizeof(_a) / sizeof((_a)[0])) -+#define __weak __attribute__((weak)) -+#define __noreturn __attribute__((noreturn)) -+ -+#define TRACECMD_ERR_MSK ((unsigned long)(-1) & ~((1UL << 14) - 1)) -+#define TRACECMD_ISERR(ptr) ((unsigned long)(ptr) > TRACECMD_ERR_MSK) -+#define TRACECMD_ERROR(ret) ((void *)((unsigned long)(ret) | TRACECMD_ERR_MSK)) -+#define TRACECMD_PTR2ERR(ptr) ((unisgned long)(ptr) & ~TRACECMD_ERR_MSK) -+ -+void tracecmd_parse_cmdlines(struct tep_handle *pevent, char *file, int size); -+void tracecmd_parse_proc_kallsyms(struct tep_handle *pevent, char *file, unsigned int size); -+void tracecmd_parse_ftrace_printk(struct tep_handle *pevent, char *file, unsigned int size); -+struct tep_plugin_list *trace_load_plugins(struct tep_handle *tep); -+ -+int *tracecmd_add_id(int *list, int id, int len); -+ -+enum { -+ RINGBUF_TYPE_PADDING = 29, -+ RINGBUF_TYPE_TIME_EXTEND = 30, -+ RINGBUF_TYPE_TIME_STAMP = 31, -+}; -+ -+void tracecmd_record_ref(struct tep_record *record); -+ -+void tracecmd_set_debug(bool set_debug); -+bool tracecmd_get_debug(void); -+ -+struct tracecmd_output; -+struct tracecmd_recorder; -+struct hook_list; -+ -+/* --- tracecmd plugins --- */ -+ -+extern int tracecmd_disable_sys_plugins; -+extern int tracecmd_disable_plugins; -+ -+enum tracecmd_context { -+ TRACECMD_INPUT, -+ TRACECMD_OUTPUT, -+}; -+ -+enum tracecmd_plugin_flag { -+ TRACECMD_DISABLE_SYS_PLUGINS = 1, -+ TRACECMD_DISABLE_PLUGINS = 1 << 1, -+}; -+ -+struct trace_plugin_context; -+ -+struct trace_plugin_context * -+tracecmd_plugin_context_create(enum tracecmd_context context, void *data); -+ -+void tracecmd_plugin_set_flag(struct trace_plugin_context *context, -+ enum tracecmd_plugin_flag flag); -+ -+#define TRACECMD_PLUGIN_LOADER tracecmd_plugin_loader -+#define TRACECMD_PLUGIN_UNLOADER tracecmd_plugin_unloader -+#define TRACECMD_PLUGIN_ALIAS tracecmd_plugin_alias -+#define _MAKE_STR(x) #x -+#define MAKE_STR(x) _MAKE_STR(x) -+#define TRACECMD_PLUGIN_LOADER_NAME MAKE_STR(TRACECMD_PLUGIN_LOADER) -+#define TRACECMD_PLUGIN_UNLOADER_NAME MAKE_STR(TRACECMD_PLUGIN_UNLOADER) -+#define TRACECMD_PLUGIN_ALIAS_NAME MAKE_STR(TRACECMD_PLUGIN_ALIAS) -+ -+typedef int (*tracecmd_plugin_load_func)(struct trace_plugin_context *trace); -+typedef int (*tracecmd_plugin_unload_func)(struct trace_plugin_context *trace); -+ -+struct tracecmd_input * -+tracecmd_plugin_context_input(struct trace_plugin_context *trace_context); -+struct tracecmd_output * -+tracecmd_plugin_context_output(struct trace_plugin_context *trace_context); -+ -+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 }; -+ unsigned int *ptr; -+ -+ ptr = (unsigned int *)str; -+ return *ptr == 0x01020304; -+} -+ -+/* --- Opening and Reading the trace.dat file --- */ -+ -+enum { -+ TRACECMD_OPTION_DONE, -+ TRACECMD_OPTION_DATE, -+ TRACECMD_OPTION_CPUSTAT, -+ TRACECMD_OPTION_BUFFER, -+ TRACECMD_OPTION_TRACECLOCK, -+ TRACECMD_OPTION_UNAME, -+ TRACECMD_OPTION_HOOK, -+ TRACECMD_OPTION_OFFSET, -+ TRACECMD_OPTION_CPUCOUNT, -+ TRACECMD_OPTION_VERSION, -+ TRACECMD_OPTION_PROCMAPS, -+ TRACECMD_OPTION_TRACEID, -+ TRACECMD_OPTION_TIME_SHIFT, -+ TRACECMD_OPTION_GUEST, -+}; -+ -+enum { -+ TRACECMD_FL_IGNORE_DATE = (1 << 0), -+ TRACECMD_FL_BUFFER_INSTANCE = (1 << 1), -+ TRACECMD_FL_LATENCY = (1 << 2), -+ TRACECMD_FL_IN_USECS = (1 << 3), -+ TRACECMD_FL_FLYRECORD = (1 << 4), -+}; -+ -+struct tracecmd_ftrace { -+ struct tracecmd_input *handle; -+ struct tep_event *fgraph_ret_event; -+ int fgraph_ret_id; -+ int long_size; -+}; -+ -+struct tracecmd_proc_addr_map { -+ unsigned long long start; -+ unsigned long long end; -+ char *lib_name; -+}; -+ -+typedef void (*tracecmd_show_data_func)(struct tracecmd_input *handle, -+ struct tep_record *record); -+typedef void (*tracecmd_handle_init_func)(struct tracecmd_input *handle, -+ struct hook_list *hook, int global); -+ -+struct tracecmd_input *tracecmd_alloc(const char *file); -+struct tracecmd_input *tracecmd_alloc_fd(int fd); -+struct tracecmd_input *tracecmd_open(const char *file); -+struct tracecmd_input *tracecmd_open_fd(int fd); -+void tracecmd_unpair_peer(struct tracecmd_input *handle); -+void tracecmd_ref(struct tracecmd_input *handle); -+int tracecmd_read_headers(struct tracecmd_input *handle); -+int tracecmd_get_parsing_failures(struct tracecmd_input *handle); -+int tracecmd_long_size(struct tracecmd_input *handle); -+int tracecmd_page_size(struct tracecmd_input *handle); -+int tracecmd_cpus(struct tracecmd_input *handle); -+int tracecmd_copy_headers(struct tracecmd_input *handle, int fd); -+void tracecmd_set_flag(struct tracecmd_input *handle, int flag); -+void tracecmd_clear_flag(struct tracecmd_input *handle, int flag); -+unsigned long tracecmd_get_flags(struct tracecmd_input *handle); -+unsigned long long tracecmd_get_tsync_peer(struct tracecmd_input *handle); -+int tracecmd_enable_tsync(struct tracecmd_input *handle, bool enable); -+ -+void tracecmd_parse_trace_clock(struct tracecmd_input *handle, char *file, int size); -+ -+int tracecmd_make_pipe(struct tracecmd_input *handle, int cpu, int fd, int cpus); -+ -+int tracecmd_is_buffer_instance(struct tracecmd_input *handle); -+ -+void tracecmd_set_ts_offset(struct tracecmd_input *handle, long long offset); -+void tracecmd_set_ts2secs(struct tracecmd_input *handle, unsigned long long hz); -+ -+void tracecmd_print_events(struct tracecmd_input *handle, const char *regex); -+ -+struct hook_list *tracecmd_hooks(struct tracecmd_input *handle); -+ -+void tracecmd_print_stats(struct tracecmd_input *handle); -+void tracecmd_print_uname(struct tracecmd_input *handle); -+void tracecmd_print_version(struct tracecmd_input *handle); -+ -+struct tep_record * -+tracecmd_peek_data(struct tracecmd_input *handle, int cpu); -+ -+static inline struct tep_record * -+tracecmd_peek_data_ref(struct tracecmd_input *handle, int cpu) -+{ -+ struct tep_record *rec = tracecmd_peek_data(handle, cpu); -+ if (rec) -+ rec->ref_count++; -+ return rec; -+} -+ -+struct tep_record * -+tracecmd_read_prev(struct tracecmd_input *handle, struct tep_record *record); -+ -+struct tep_record * -+tracecmd_read_next_data(struct tracecmd_input *handle, int *rec_cpu); -+ -+struct tep_record * -+tracecmd_peek_next_data(struct tracecmd_input *handle, int *rec_cpu); -+ -+struct tep_record * -+tracecmd_translate_data(struct tracecmd_input *handle, -+ void *ptr, int size); -+struct tep_record * -+tracecmd_read_cpu_last(struct tracecmd_input *handle, int cpu); -+int tracecmd_refresh_record(struct tracecmd_input *handle, -+ struct tep_record *record); -+ -+int tracecmd_set_cpu_to_timestamp(struct tracecmd_input *handle, -+ int cpu, unsigned long long ts); -+void -+tracecmd_set_all_cpus_to_timestamp(struct tracecmd_input *handle, -+ unsigned long long time); -+ -+int tracecmd_set_cursor(struct tracecmd_input *handle, -+ int cpu, unsigned long long offset); -+unsigned long long -+tracecmd_get_cursor(struct tracecmd_input *handle, int cpu); -+ -+int tracecmd_ftrace_overrides(struct tracecmd_input *handle, struct tracecmd_ftrace *finfo); -+bool tracecmd_get_use_trace_clock(struct tracecmd_input *handle); -+tracecmd_show_data_func -+tracecmd_get_show_data_func(struct tracecmd_input *handle); -+void tracecmd_set_show_data_func(struct tracecmd_input *handle, -+ tracecmd_show_data_func func); -+ -+int tracecmd_record_at_buffer_start(struct tracecmd_input *handle, struct tep_record *record); -+unsigned long long tracecmd_page_ts(struct tracecmd_input *handle, -+ struct tep_record *record); -+unsigned int tracecmd_record_ts_delta(struct tracecmd_input *handle, -+ struct tep_record *record); -+ -+struct tracecmd_proc_addr_map * -+tracecmd_search_task_map(struct tracecmd_input *handle, -+ int pid, unsigned long long addr); -+#ifndef SWIG -+/* hack for function graph work around */ -+extern __thread struct tracecmd_input *tracecmd_curr_thread_handle; -+#endif -+ -+ -+/* --- Creating and Writing the trace.dat file --- */ -+ -+struct tracecmd_event_list { -+ struct tracecmd_event_list *next; -+ const char *glob; -+}; -+ -+struct tracecmd_option; -+struct tracecmd_msg_handle; -+ -+struct tracecmd_output *tracecmd_create_file_latency(const char *output_file, int cpus); -+struct tracecmd_output *tracecmd_create_file(const char *output_file, -+ int cpus, char * const *cpu_data_files); -+struct tracecmd_output * -+tracecmd_create_file_glob(const char *output_file, -+ int cpus, char * const *cpu_data_files, -+ struct tracecmd_event_list *event_globs); -+struct tracecmd_output * -+tracecmd_create_init_file_glob(const char *output_file, -+ struct tracecmd_event_list *list); -+struct tracecmd_output *tracecmd_create_init_fd(int fd); -+struct tracecmd_output * -+tracecmd_create_init_fd_glob(int fd, struct tracecmd_event_list *list); -+struct tracecmd_output * -+tracecmd_create_init_fd_msg(struct tracecmd_msg_handle *msg_handle, -+ struct tracecmd_event_list *list); -+struct tracecmd_output *tracecmd_create_init_file(const char *output_file); -+struct tracecmd_output *tracecmd_create_init_file_override(const char *output_file, -+ const char *tracing_dir, -+ const char *kallsyms); -+struct tracecmd_option *tracecmd_add_option(struct tracecmd_output *handle, -+ unsigned short id, int size, -+ const void *data); -+struct tracecmd_option * -+tracecmd_add_option_v(struct tracecmd_output *handle, -+ unsigned short id, const struct iovec *vector, int count); -+ -+struct tracecmd_option *tracecmd_add_buffer_option(struct tracecmd_output *handle, -+ const char *name, int cpus); -+ -+int tracecmd_write_cpus(struct tracecmd_output *handle, int cpus); -+int tracecmd_write_options(struct tracecmd_output *handle); -+int tracecmd_append_options(struct tracecmd_output *handle); -+int tracecmd_update_option(struct tracecmd_output *handle, -+ struct tracecmd_option *option, int size, -+ const void *data); -+void tracecmd_output_close(struct tracecmd_output *handle); -+void tracecmd_output_free(struct tracecmd_output *handle); -+struct tracecmd_output *tracecmd_copy(struct tracecmd_input *ihandle, -+ const char *file); -+ -+int tracecmd_write_cpu_data(struct tracecmd_output *handle, -+ int cpus, char * const *cpu_data_files); -+int tracecmd_append_cpu_data(struct tracecmd_output *handle, -+ int cpus, char * const *cpu_data_files); -+int tracecmd_append_buffer_cpu_data(struct tracecmd_output *handle, -+ struct tracecmd_option *option, -+ int cpus, char * const *cpu_data_files); -+ -+struct tracecmd_output *tracecmd_get_output_handle_fd(int fd); -+ -+/* --- Reading the Fly Recorder Trace --- */ -+ -+enum { -+ TRACECMD_RECORD_NOSPLICE = (1 << 0), /* Use read instead of splice */ -+ TRACECMD_RECORD_SNAPSHOT = (1 << 1), /* Extract from snapshot */ -+ TRACECMD_RECORD_BLOCK = (1 << 2), /* Block on splice write */ -+ TRACECMD_RECORD_NOBRASS = (1 << 3), /* Splice directly without a brass pipe */ -+}; -+ -+void tracecmd_free_recorder(struct tracecmd_recorder *recorder); -+struct tracecmd_recorder *tracecmd_create_recorder(const char *file, int cpu, unsigned flags); -+struct tracecmd_recorder *tracecmd_create_recorder_fd(int fd, int cpu, unsigned flags); -+struct tracecmd_recorder *tracecmd_create_recorder_virt(const char *file, int cpu, unsigned flags, int trace_fd); -+struct tracecmd_recorder *tracecmd_create_recorder_maxkb(const char *file, int cpu, unsigned flags, int maxkb); -+struct tracecmd_recorder *tracecmd_create_buffer_recorder_fd(int fd, int cpu, unsigned flags, const char *buffer); -+struct tracecmd_recorder *tracecmd_create_buffer_recorder(const char *file, int cpu, unsigned flags, const char *buffer); -+struct tracecmd_recorder *tracecmd_create_buffer_recorder_maxkb(const char *file, int cpu, unsigned flags, const char *buffer, int maxkb); -+ -+int tracecmd_start_recording(struct tracecmd_recorder *recorder, unsigned long sleep); -+void tracecmd_stop_recording(struct tracecmd_recorder *recorder); -+long tracecmd_flush_recording(struct tracecmd_recorder *recorder); -+ -+enum tracecmd_msg_flags { -+ TRACECMD_MSG_FL_USE_TCP = 1 << 0, -+}; -+ -+/* for both client and server */ -+struct tracecmd_msg_handle { -+ int fd; -+ short cpu_count; -+ short version; /* Current protocol version */ -+ unsigned long flags; -+ bool done; -+}; -+ -+struct tracecmd_msg_handle * -+tracecmd_msg_handle_alloc(int fd, unsigned long flags); -+ -+/* Closes the socket and frees the handle */ -+void tracecmd_msg_handle_close(struct tracecmd_msg_handle *msg_handle); -+ -+/* for clients */ -+int tracecmd_msg_send_init_data(struct tracecmd_msg_handle *msg_handle, -+ unsigned int **client_ports); -+int tracecmd_msg_data_send(struct tracecmd_msg_handle *msg_handle, -+ const char *buf, int size); -+int tracecmd_msg_finish_sending_data(struct tracecmd_msg_handle *msg_handle); -+int tracecmd_msg_send_close_msg(struct tracecmd_msg_handle *msg_handle); -+int tracecmd_msg_send_close_resp_msg(struct tracecmd_msg_handle *msg_handle); -+int tracecmd_msg_wait_close(struct tracecmd_msg_handle *msg_handle); -+int tracecmd_msg_wait_close_resp(struct tracecmd_msg_handle *msg_handle); -+ -+/* for server */ -+int tracecmd_msg_initial_setting(struct tracecmd_msg_handle *msg_handle); -+int tracecmd_msg_send_port_array(struct tracecmd_msg_handle *msg_handle, -+ unsigned *ports); -+int tracecmd_msg_read_data(struct tracecmd_msg_handle *msg_handle, int ofd); -+int tracecmd_msg_collect_data(struct tracecmd_msg_handle *msg_handle, int ofd); -+bool tracecmd_msg_done(struct tracecmd_msg_handle *msg_handle); -+void tracecmd_msg_set_done(struct tracecmd_msg_handle *msg_handle); -+ -+int tracecmd_msg_send_trace_req(struct tracecmd_msg_handle *msg_handle, -+ int argc, char **argv, bool use_fifos, -+ unsigned long long trace_id, -+ char *tsync_protos, -+ int tsync_protos_size); -+int tracecmd_msg_recv_trace_req(struct tracecmd_msg_handle *msg_handle, -+ int *argc, char ***argv, bool *use_fifos, -+ unsigned long long *trace_id, -+ char **tsync_protos, -+ unsigned int *tsync_protos_size); -+ -+int tracecmd_msg_send_trace_resp(struct tracecmd_msg_handle *msg_handle, -+ int nr_cpus, int page_size, -+ unsigned int *ports, bool use_fifos, -+ unsigned long long trace_id, -+ unsigned int tsync_proto, -+ unsigned int tsync_port); -+int tracecmd_msg_recv_trace_resp(struct tracecmd_msg_handle *msg_handle, -+ int *nr_cpus, int *page_size, -+ unsigned int **ports, bool *use_fifos, -+ unsigned long long *trace_id, -+ unsigned int *tsync_proto, -+ unsigned int *tsync_port); -+ -+int tracecmd_msg_send_time_sync(struct tracecmd_msg_handle *msg_handle, -+ unsigned int sync_protocol, -+ unsigned int sync_msg_id, -+ unsigned int payload_size, char *payload); -+int tracecmd_msg_recv_time_sync(struct tracecmd_msg_handle *msg_handle, -+ unsigned int *sync_protocol, -+ unsigned int *sync_msg_id, -+ unsigned int *payload_size, char **payload); -+ -+/* --- Timestamp synchronization --- */ -+ -+enum{ -+ TRACECMD_TIME_SYNC_PROTO_NONE = 0, -+}; -+enum{ -+ TRACECMD_TIME_SYNC_CMD_PROBE = 1, -+ TRACECMD_TIME_SYNC_CMD_STOP = 2, -+}; -+ -+#define TRACECMD_TIME_SYNC_PROTO_PTP_WEIGHT 10 -+ -+struct tracecmd_time_sync { -+ unsigned int sync_proto; -+ int loop_interval; -+ pthread_mutex_t lock; -+ pthread_cond_t cond; -+ char *clock_str; -+ struct tracecmd_msg_handle *msg_handle; -+ void *context; -+}; -+ -+void tracecmd_tsync_init(void); -+int tracecmd_tsync_proto_getall(char **proto_mask, int *words); -+unsigned int tracecmd_tsync_proto_select(char *proto_mask, int words); -+bool tsync_proto_is_supported(unsigned int proto_id); -+void tracecmd_tsync_with_host(struct tracecmd_time_sync *tsync); -+void tracecmd_tsync_with_guest(struct tracecmd_time_sync *tsync); -+int tracecmd_tsync_get_offsets(struct tracecmd_time_sync *tsync, -+ int *count, -+ long long **ts, long long **offsets); -+void tracecmd_tsync_free(struct tracecmd_time_sync *tsync); -+ -+/* --- Plugin handling --- */ -+extern struct tep_plugin_option trace_ftrace_options[]; -+ -+char **trace_util_find_plugin_files(const char *suffix); -+void trace_util_free_plugin_files(char **files); -+ -+/* Used for trace-cmd list */ -+void tracecmd_ftrace_load_options(void); -+ -+/* event hooks */ -+ -+struct hook_list { -+ struct hook_list *next; -+ struct buffer_instance *instance; -+ const char *hook; -+ char *str; -+ char *start_system; -+ char *start_event; -+ char *start_match; -+ char *end_system; -+ char *end_event; -+ char *end_match; -+ char *pid; -+ int migrate; -+ int global; -+ int stack; -+}; -+ -+struct hook_list *tracecmd_create_event_hook(const char *arg); -+void tracecmd_free_hooks(struct hook_list *hooks); -+ -+void tracecmd_plog(const char *fmt, ...); -+void tracecmd_plog_error(const char *fmt, ...); -+int tracecmd_set_logfile(char *logfile); -+ -+/* --- System --- */ -+unsigned long long tracecmd_generate_traceid(void); -+int tracecmd_count_cpus(void); -+ -+/* --- Hack! --- */ -+int tracecmd_blk_hack(struct tracecmd_input *handle); -+ -+/* --- Stack tracer functions --- */ -+int tracecmd_stack_tracer_status(int *status); -+ -+/* --- Debugging --- */ -+struct kbuffer *tracecmd_record_kbuf(struct tracecmd_input *handle, -+ struct tep_record *record); -+void *tracecmd_record_page(struct tracecmd_input *handle, -+ struct tep_record *record); -+void *tracecmd_record_offset(struct tracecmd_input *handle, -+ struct tep_record *record); -+ -+#endif /* _TRACE_CMD_PRIVATE_H */ -diff --git a/lib/trace-cmd/include/private/trace-filter-hash.h b/lib/trace-cmd/include/private/trace-filter-hash.h -new file mode 100644 -index 0000000..4111c41 ---- /dev/null -+++ b/lib/trace-cmd/include/private/trace-filter-hash.h -@@ -0,0 +1,64 @@ -+/* SPDX-License-Identifier: LGPL-2.1 */ -+/* -+ * Copyright (C) 2009, 2010 Red Hat Inc, Steven Rostedt -+ * Copyright (C) 2018 VMware Inc, Steven Rostedt -+ * -+ */ -+#ifndef _TRACE_FILTER_HASH_H -+#define _TRACE_FILTER_HASH_H -+ -+#include -+ -+struct tracecmd_filter_id_item { -+ struct tracecmd_filter_id_item *next; -+ int id; -+}; -+ -+struct tracecmd_filter_id { -+ struct tracecmd_filter_id_item **hash; -+ int count; -+}; -+ -+/** -+ * tracecmd_quick_hash - A quick (non secured) hash alogirthm -+ * @val: The value to perform the hash on -+ * @bits: The size in bits you need to return -+ * -+ * This is a quick hashing function adapted from Donald E. Knuth's 32 -+ * bit multiplicative hash. See The Art of Computer Programming (TAOCP). -+ * Multiplication by the Prime number, closest to the golden ratio of -+ * 2^32. -+ * -+ * @bits is used to max the result for use cases that require -+ * a power of 2 return value that is less than 32 bits. Any value -+ * of @bits greater than 31 (or zero), will simply return the full hash on @val. -+ */ -+static inline uint32_t tracecmd_quick_hash(uint32_t val, unsigned int bits) -+{ -+ val *= UINT32_C(2654435761); -+ -+ if (!bits || bits > 31) -+ return val; -+ -+ return val & ((1 << bits) - 1); -+} -+ -+struct tracecmd_filter_id_item * -+ tracecmd_filter_id_find(struct tracecmd_filter_id *hash, int id); -+void tracecmd_filter_id_add(struct tracecmd_filter_id *hash, int id); -+void tracecmd_filter_id_remove(struct tracecmd_filter_id *hash, int id); -+void tracecmd_filter_id_clear(struct tracecmd_filter_id *hash); -+struct tracecmd_filter_id *tracecmd_filter_id_hash_alloc(void); -+void tracecmd_filter_id_hash_free(struct tracecmd_filter_id *hash); -+struct tracecmd_filter_id * -+ tracecmd_filter_id_hash_copy(struct tracecmd_filter_id *hash); -+int *tracecmd_filter_ids(struct tracecmd_filter_id *hash); -+int tracecmd_filter_id_compare(struct tracecmd_filter_id *hash1, -+ struct tracecmd_filter_id *hash2); -+ -+static inline int tracecmd_filter_task_count(struct tracecmd_filter_id *hash) -+{ -+ return hash->count; -+} -+ -+#endif /* _TRACE_FILTER_HASH_H */ -diff --git a/lib/trace-cmd/include/private/trace-hash.h b/lib/trace-cmd/include/private/trace-hash.h -new file mode 100644 -index 0000000..aa92cdf ---- /dev/null -+++ b/lib/trace-cmd/include/private/trace-hash.h -@@ -0,0 +1,55 @@ -+/* SPDX-License-Identifier: GPL-2.0 */ -+/* -+ * Copyright (C) 2014 Red Hat Inc, Steven Rostedt -+ * -+ */ -+#ifndef _TRACE_HASH_H -+#define _TRACE_HASH_H -+ -+struct trace_hash_item { -+ struct trace_hash_item *next; -+ struct trace_hash_item *prev; -+ unsigned long long key; -+}; -+ -+struct trace_hash { -+ struct trace_hash_item **buckets; -+ int nr_buckets; -+ int power; -+}; -+ -+int trace_hash_init(struct trace_hash *hash, int buckets); -+void trace_hash_free(struct trace_hash *hash); -+int trace_hash_add(struct trace_hash *hash, struct trace_hash_item *item); -+int trace_hash_empty(struct trace_hash *hash); -+ -+static inline void trace_hash_del(struct trace_hash_item *item) -+{ -+ struct trace_hash_item *prev = item->prev; -+ -+ prev->next = item->next; -+ if (item->next) -+ item->next->prev = prev; -+} -+ -+#define trace_hash_for_each_bucket(bucket, hash) \ -+ for (bucket = (hash)->buckets; \ -+ (bucket) < (hash)->buckets + (hash)->nr_buckets; (bucket)++) -+ -+#define trace_hash_for_each_item(item, bucket) \ -+ for ((item = *(bucket)); item; item = (item)->next) -+ -+#define trace_hash_for_each_item_safe(item, n, bucket) \ -+ for ((item = *(bucket)), n = item ? item->next : NULL; item; \ -+ item = n, n = item ? (item)->next : NULL) -+ -+#define trace_hash_while_item(item, bucket) \ -+ while ((item = *(bucket))) -+ -+typedef int (*trace_hash_func)(struct trace_hash_item *item, void *data); -+ -+struct trace_hash_item * -+trace_hash_find(struct trace_hash *hash, unsigned long long key, -+ trace_hash_func match, void *data); -+ -+#endif /* _TRACE_HASH_H */ -diff --git a/lib/trace-cmd/include/private/trace-msg.h b/lib/trace-cmd/include/private/trace-msg.h -new file mode 100644 -index 0000000..aab8a69 ---- /dev/null -+++ b/lib/trace-cmd/include/private/trace-msg.h -@@ -0,0 +1,15 @@ -+#ifndef _TRACE_MSG_H_ -+#define _TRACE_MSG_H_ -+ -+#include -+ -+#define UDP_MAX_PACKET (65536 - 20) -+#define V3_MAGIC "766679\0" -+#define V3_CPU "-1V3" -+ -+#define V1_PROTOCOL 1 -+#define V3_PROTOCOL 3 -+ -+extern unsigned int page_size; -+ -+#endif /* _TRACE_MSG_H_ */ -diff --git a/lib/trace-cmd/include/trace-cmd-local.h b/lib/trace-cmd/include/trace-cmd-local.h -index 95dce66..d0a7365 100644 ---- a/lib/trace-cmd/include/trace-cmd-local.h -+++ b/lib/trace-cmd/include/trace-cmd-local.h -@@ -6,6 +6,8 @@ - #ifndef _TRACE_CMD_LOCAL_H - #define _TRACE_CMD_LOCAL_H - -+#include "trace-cmd-private.h" -+ - /* Can be overridden */ - void warning(const char *fmt, ...); - -diff --git a/lib/trace-cmd/trace-ftrace.c b/lib/trace-cmd/trace-ftrace.c -index 20bf71f..df7335f 100644 ---- a/lib/trace-cmd/trace-ftrace.c -+++ b/lib/trace-cmd/trace-ftrace.c -@@ -8,7 +8,7 @@ - #include - #include - --#include "trace-cmd.h" -+#include "trace-cmd-private.h" - - struct tep_plugin_option trace_ftrace_options[] = { - { -diff --git a/lib/trace-cmd/trace-hooks.c b/lib/trace-cmd/trace-hooks.c -index 8c969a6..2dadf61 100644 ---- a/lib/trace-cmd/trace-hooks.c -+++ b/lib/trace-cmd/trace-hooks.c -@@ -8,7 +8,7 @@ - #include - #include - --#include "trace-cmd.h" -+#include "trace-cmd-private.h" - #include "event-utils.h" - - struct hook_list *tracecmd_create_event_hook(const char *arg) -diff --git a/lib/trace-cmd/trace-recorder.c b/lib/trace-cmd/trace-recorder.c -index 2a6e2b6..6b647d6 100644 ---- a/lib/trace-cmd/trace-recorder.c -+++ b/lib/trace-cmd/trace-recorder.c -@@ -13,7 +13,7 @@ - #include - - #include "tracefs.h" --#include "trace-cmd.h" -+#include "trace-cmd-private.h" - #include "event-utils.h" - - /* F_GETPIPE_SZ was introduced in 2.6.35, older systems don't have it */ -diff --git a/lib/trace-cmd/trace-timesync.c b/lib/trace-cmd/trace-timesync.c -index 7a6a7eb..390e9d9 100644 ---- a/lib/trace-cmd/trace-timesync.c -+++ b/lib/trace-cmd/trace-timesync.c -@@ -17,7 +17,7 @@ - #include - #include - --#include "trace-cmd.h" -+#include "trace-cmd-private.h" - #include "tracefs.h" - #include "event-utils.h" - #include "trace-tsync-local.h" -diff --git a/lib/trace-cmd/trace-util.c b/lib/trace-cmd/trace-util.c -index 0ead96e..6b5d872 100644 ---- a/lib/trace-cmd/trace-util.c -+++ b/lib/trace-cmd/trace-util.c -@@ -21,7 +21,7 @@ - #include - #include - --#include "trace-cmd.h" -+#include "trace-cmd-private.h" - #include "event-utils.h" - - #define LOCAL_PLUGIN_DIR ".trace-cmd/plugins" -diff --git a/lib/traceevent/plugins/plugin_python_loader.c b/lib/traceevent/plugins/plugin_python_loader.c -index 776bf12..01bdfad 100644 ---- a/lib/traceevent/plugins/plugin_python_loader.c -+++ b/lib/traceevent/plugins/plugin_python_loader.c -@@ -1,6 +1,7 @@ - #include - #include --#include "trace-cmd.h" -+#include "event-parse.h" -+#include "trace-cmd-private.h" - - #ifndef PYTHON_DIR - #define PYTHON_DIR "." -diff --git a/python/ctracecmd.i b/python/ctracecmd.i -index 01cd0d5..5f7181c 100644 ---- a/python/ctracecmd.i -+++ b/python/ctracecmd.i -@@ -15,6 +15,7 @@ - - %{ - #include "trace-cmd.h" -+#include "event-parse.h" - #include "event-utils.h" - #include - %} -diff --git a/tracecmd/include/trace-local.h b/tracecmd/include/trace-local.h -index 207aa68..28d1b4e 100644 ---- a/tracecmd/include/trace-local.h -+++ b/tracecmd/include/trace-local.h -@@ -9,7 +9,7 @@ - #include - #include /* for DIR */ - --#include "trace-cmd.h" -+#include "trace-cmd-private.h" - #include "event-utils.h" - - #define TRACE_AGENT_DEFAULT_PORT 823 --- -2.29.2 - diff --git a/package/trace-cmd/0002-trace-cmd-make-it-build-against-musl-C-library.patch b/package/trace-cmd/0002-trace-cmd-make-it-build-against-musl-C-library.patch deleted file mode 100644 index 64021245dc..0000000000 --- a/package/trace-cmd/0002-trace-cmd-make-it-build-against-musl-C-library.patch +++ /dev/null @@ -1,140 +0,0 @@ -From 1a000636c1828eecdcec5360a51623ef4ffbff04 Mon Sep 17 00:00:00 2001 -From: Beniamin Sandu -Date: Mon, 30 Nov 2020 14:27:55 +0200 -Subject: [PATCH] trace-cmd: make it build against musl C library - -* add some missing headers and macros -* set pthread affinity using pthread_setaffinity_np after creating the thread -instead of pthread_attr_setaffinity_np (which seems to not be implemented -in musl) - -Tested using https://musl.cc/x86_64-linux-musl-native.tgz - -Link: https://lore.kernel.org/linux-trace-devel/20201130122755.31000-1-beniaminsandu@gmail.com - -Reviewed-by: Tzvetomir Stoyanov (VMware) -Signed-off-by: Beniamin Sandu -[ Fixed a whitespace issue ] -Signed-off-by: Steven Rostedt (VMware) -[Retrieved from: -https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git/commit/?id=1a000636c1828eecdcec5360a51623ef4ffbff04] -Signed-off-by: Fabrice Fontaine ---- - .../include/private/trace-cmd-private.h | 1 + - lib/trace-cmd/include/trace-cmd-local.h | 1 + - lib/tracefs/include/tracefs-local.h | 12 ++++++++++++ - lib/tracefs/tracefs-events.c | 1 + - tracecmd/include/trace-local.h | 1 + - tracecmd/trace-tsync.c | 16 +++++++++++----- - 6 files changed, 27 insertions(+), 5 deletions(-) - -diff --git a/lib/trace-cmd/include/private/trace-cmd-private.h b/lib/trace-cmd/include/private/trace-cmd-private.h -index 458760e5..a0dac5da 100644 ---- a/lib/trace-cmd/include/private/trace-cmd-private.h -+++ b/lib/trace-cmd/include/private/trace-cmd-private.h -@@ -6,6 +6,7 @@ - #ifndef _TRACE_CMD_PRIVATE_H - #define _TRACE_CMD_PRIVATE_H - -+#include - #include "traceevent/event-parse.h" - #include "trace-cmd/trace-cmd.h" - -diff --git a/lib/trace-cmd/include/trace-cmd-local.h b/lib/trace-cmd/include/trace-cmd-local.h -index d0a7365a..0cd27441 100644 ---- a/lib/trace-cmd/include/trace-cmd-local.h -+++ b/lib/trace-cmd/include/trace-cmd-local.h -@@ -6,6 +6,7 @@ - #ifndef _TRACE_CMD_LOCAL_H - #define _TRACE_CMD_LOCAL_H - -+#include - #include "trace-cmd-private.h" - - /* Can be overridden */ -diff --git a/lib/tracefs/include/tracefs-local.h b/lib/tracefs/include/tracefs-local.h -index 9cc371b4..bdbf89e8 100644 ---- a/lib/tracefs/include/tracefs-local.h -+++ b/lib/tracefs/include/tracefs-local.h -@@ -13,4 +13,16 @@ void warning(const char *fmt, ...); - int str_read_file(const char *file, char **buffer); - char *trace_append_file(const char *dir, const char *name); - -+#ifndef ACCESSPERMS -+#define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */ -+#endif -+ -+#ifndef ALLPERMS -+#define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) /* 07777 */ -+#endif -+ -+#ifndef DEFFILEMODE -+#define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) /* 0666*/ -+#endif -+ - #endif /* _TRACE_FS_LOCAL_H */ -diff --git a/lib/tracefs/tracefs-events.c b/lib/tracefs/tracefs-events.c -index 80a25ee5..a4e5215f 100644 ---- a/lib/tracefs/tracefs-events.c -+++ b/lib/tracefs/tracefs-events.c -@@ -13,6 +13,7 @@ - #include - #include - #include -+#include - - #include "kbuffer.h" - #include "tracefs.h" -diff --git a/tracecmd/include/trace-local.h b/tracecmd/include/trace-local.h -index 28d1b4e0..85c7e03e 100644 ---- a/tracecmd/include/trace-local.h -+++ b/tracecmd/include/trace-local.h -@@ -8,6 +8,7 @@ - - #include - #include /* for DIR */ -+#include - - #include "trace-cmd-private.h" - #include "event-utils.h" -diff --git a/tracecmd/trace-tsync.c b/tracecmd/trace-tsync.c -index e639788d..8b9083ae 100644 ---- a/tracecmd/trace-tsync.c -+++ b/tracecmd/trace-tsync.c -@@ -104,13 +104,16 @@ int tracecmd_host_tsync(struct buffer_instance *instance, - - pthread_attr_init(&attrib); - pthread_attr_setdetachstate(&attrib, PTHREAD_CREATE_JOINABLE); -- if (!get_first_cpu(&pin_mask, &mask_size)) -- pthread_attr_setaffinity_np(&attrib, mask_size, pin_mask); - - ret = pthread_create(&instance->tsync_thread, &attrib, - tsync_host_thread, &instance->tsync); -- if (!ret) -+ -+ if (!ret) { -+ if (!get_first_cpu(&pin_mask, &mask_size)) -+ pthread_setaffinity_np(instance->tsync_thread, mask_size, pin_mask); - instance->tsync_thread_running = true; -+ } -+ - if (pin_mask) - CPU_FREE(pin_mask); - pthread_attr_destroy(&attrib); -@@ -243,11 +246,14 @@ unsigned int tracecmd_guest_tsync(char *tsync_protos, - pthread_attr_init(&attrib); - tsync->sync_proto = proto; - pthread_attr_setdetachstate(&attrib, PTHREAD_CREATE_JOINABLE); -- if (!get_first_cpu(&pin_mask, &mask_size)) -- pthread_attr_setaffinity_np(&attrib, mask_size, pin_mask); - - ret = pthread_create(thr_id, &attrib, tsync_agent_thread, tsync); - -+ if (!ret) { -+ if (!get_first_cpu(&pin_mask, &mask_size)) -+ pthread_setaffinity_np(*thr_id, mask_size, pin_mask); -+ } -+ - if (pin_mask) - CPU_FREE(pin_mask); - pthread_attr_destroy(&attrib); diff --git a/package/trace-cmd/0003-trace-cmd-Move-add_event_pid-out-of-ifndef-NO_PTRACE.patch b/package/trace-cmd/0003-trace-cmd-Move-add_event_pid-out-of-ifndef-NO_PTRACE.patch deleted file mode 100644 index ca32e69ab1..0000000000 --- a/package/trace-cmd/0003-trace-cmd-Move-add_event_pid-out-of-ifndef-NO_PTRACE.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 2f55ded528cfd8ef468bdd1f8bb82dcf1cfae04a Mon Sep 17 00:00:00 2001 -From: "Steven Rostedt (VMware)" -Date: Wed, 16 Dec 2020 18:19:43 -0500 -Subject: [PATCH] trace-cmd: Move add_event_pid() out of #ifndef NO_PTRACE - -When NO_PTRACE is defined, add_event_pid() is also not defined, but it is -used outside of NO_PTRACE pre processor block. And this causes a -"add_event_pid" not defined build failure. - -Link: https://lore.kernel.org/linux-trace-devel/20201216232145.010165486@goodmis.org - -Fixes: 0844cff1c ("trace-cmd: Fix "trace-cmd reset" command to restore the default value of set_event_pid") -Signed-off-by: Steven Rostedt (VMware) -[Retrieved from: -https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git/commit/?id=2f55ded528cfd8ef468bdd1f8bb82dcf1cfae04a] -Signed-off-by: Fabrice Fontaine ---- - tracecmd/trace-record.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/tracecmd/trace-record.c b/tracecmd/trace-record.c -index f8baed7d..e2d1cedf 100644 ---- a/tracecmd/trace-record.c -+++ b/tracecmd/trace-record.c -@@ -1312,8 +1312,13 @@ static int trace_wait_for_processes(struct buffer_instance *instance) { - free(pidfds); - return ret; - } --#ifndef NO_PTRACE - -+static void add_event_pid(struct buffer_instance *instance, const char *buf) -+{ -+ tracefs_instance_file_write(instance->tracefs, "set_event_pid", buf); -+} -+ -+#ifndef NO_PTRACE - /** - * append_pid_filter - add a new pid to an existing filter - * @curr_filter: the filter to append to. If NULL, then allocate one -@@ -1369,11 +1374,6 @@ static void update_sched_events(struct buffer_instance *instance, int pid) - static int open_instance_fd(struct buffer_instance *instance, - const char *file, int flags); - --static void add_event_pid(struct buffer_instance *instance, const char *buf) --{ -- tracefs_instance_file_write(instance->tracefs, "set_event_pid", buf); --} -- - static void add_new_filter_child_pid(int pid, int child) - { - struct buffer_instance *instance; diff --git a/package/trace-cmd/trace-cmd.hash b/package/trace-cmd/trace-cmd.hash index 0afde6705e..78ff3472c3 100644 --- a/package/trace-cmd/trace-cmd.hash +++ b/package/trace-cmd/trace-cmd.hash @@ -1,5 +1,5 @@ # Locally computed -sha256 8bab29530cd05272dccab48c9780644758e71ed990ce65c701b9095f7beae417 trace-cmd-trace-cmd-v2.9.1-br1.tar.gz +sha256 026cce03b4ae61f19848646acecf151dd7dd62617859edcf73ae954eb65b2653 trace-cmd-trace-cmd-v2.9.5-br1.tar.gz sha256 b1d04b850c1c7471b0f0896f6c6f0fcfc9f07e2dd183a5f5826af269fe9e88fb COPYING sha256 70f297763149e72306919c924e164f83041d5e512868d4c8c1826c171b3e49f9 COPYING.LIB sha256 f6b78c087c3ebdf0f3c13415070dd480a3f35d8fc76f3d02180a407c1c812f79 LICENSES/GPL-2.0 diff --git a/package/trace-cmd/trace-cmd.mk b/package/trace-cmd/trace-cmd.mk index bc431e5dd2..f9b54ed765 100644 --- a/package/trace-cmd/trace-cmd.mk +++ b/package/trace-cmd/trace-cmd.mk @@ -4,7 +4,7 @@ # ################################################################################ -TRACE_CMD_VERSION = trace-cmd-v2.9.1 +TRACE_CMD_VERSION = trace-cmd-v2.9.5 TRACE_CMD_SITE = https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git TRACE_CMD_SITE_METHOD = git TRACE_CMD_LICENSE = GPL-2.0, LGPL-2.1 -- 2.30.2