mirror of
				https://github.com/AetherDroid/android_kernel_samsung_on5xelte.git
				synced 2025-10-31 08:08:51 +01:00 
			
		
		
		
	Fixed MTP to work with TWRP
This commit is contained in:
		
						commit
						f6dfaef42e
					
				
					 50820 changed files with 20846062 additions and 0 deletions
				
			
		
							
								
								
									
										355
									
								
								tools/perf/util/event.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										355
									
								
								tools/perf/util/event.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,355 @@ | |||
| #ifndef __PERF_RECORD_H | ||||
| #define __PERF_RECORD_H | ||||
| 
 | ||||
| #include <limits.h> | ||||
| #include <stdio.h> | ||||
| 
 | ||||
| #include "../perf.h" | ||||
| #include "map.h" | ||||
| #include "build-id.h" | ||||
| #include "perf_regs.h" | ||||
| 
 | ||||
| struct mmap_event { | ||||
| 	struct perf_event_header header; | ||||
| 	u32 pid, tid; | ||||
| 	u64 start; | ||||
| 	u64 len; | ||||
| 	u64 pgoff; | ||||
| 	char filename[PATH_MAX]; | ||||
| }; | ||||
| 
 | ||||
| struct mmap2_event { | ||||
| 	struct perf_event_header header; | ||||
| 	u32 pid, tid; | ||||
| 	u64 start; | ||||
| 	u64 len; | ||||
| 	u64 pgoff; | ||||
| 	u32 maj; | ||||
| 	u32 min; | ||||
| 	u64 ino; | ||||
| 	u64 ino_generation; | ||||
| 	u32 prot; | ||||
| 	u32 flags; | ||||
| 	char filename[PATH_MAX]; | ||||
| }; | ||||
| 
 | ||||
| struct comm_event { | ||||
| 	struct perf_event_header header; | ||||
| 	u32 pid, tid; | ||||
| 	char comm[16]; | ||||
| }; | ||||
| 
 | ||||
| struct fork_event { | ||||
| 	struct perf_event_header header; | ||||
| 	u32 pid, ppid; | ||||
| 	u32 tid, ptid; | ||||
| 	u64 time; | ||||
| }; | ||||
| 
 | ||||
| struct lost_event { | ||||
| 	struct perf_event_header header; | ||||
| 	u64 id; | ||||
| 	u64 lost; | ||||
| }; | ||||
| 
 | ||||
| /*
 | ||||
|  * PERF_FORMAT_ENABLED | PERF_FORMAT_RUNNING | PERF_FORMAT_ID | ||||
|  */ | ||||
| struct read_event { | ||||
| 	struct perf_event_header header; | ||||
| 	u32 pid, tid; | ||||
| 	u64 value; | ||||
| 	u64 time_enabled; | ||||
| 	u64 time_running; | ||||
| 	u64 id; | ||||
| }; | ||||
| 
 | ||||
| struct throttle_event { | ||||
| 	struct perf_event_header header; | ||||
| 	u64 time; | ||||
| 	u64 id; | ||||
| 	u64 stream_id; | ||||
| }; | ||||
| 
 | ||||
| #define PERF_SAMPLE_MASK				\ | ||||
| 	(PERF_SAMPLE_IP | PERF_SAMPLE_TID |		\ | ||||
| 	 PERF_SAMPLE_TIME | PERF_SAMPLE_ADDR |		\ | ||||
| 	PERF_SAMPLE_ID | PERF_SAMPLE_STREAM_ID |	\ | ||||
| 	 PERF_SAMPLE_CPU | PERF_SAMPLE_PERIOD |		\ | ||||
| 	 PERF_SAMPLE_IDENTIFIER) | ||||
| 
 | ||||
| /* perf sample has 16 bits size limit */ | ||||
| #define PERF_SAMPLE_MAX_SIZE (1 << 16) | ||||
| 
 | ||||
| struct sample_event { | ||||
| 	struct perf_event_header        header; | ||||
| 	u64 array[]; | ||||
| }; | ||||
| 
 | ||||
| struct regs_dump { | ||||
| 	u64 abi; | ||||
| 	u64 mask; | ||||
| 	u64 *regs; | ||||
| 
 | ||||
| 	/* Cached values/mask filled by first register access. */ | ||||
| 	u64 cache_regs[PERF_REGS_MAX]; | ||||
| 	u64 cache_mask; | ||||
| }; | ||||
| 
 | ||||
| struct stack_dump { | ||||
| 	u16 offset; | ||||
| 	u64 size; | ||||
| 	char *data; | ||||
| }; | ||||
| 
 | ||||
| struct sample_read_value { | ||||
| 	u64 value; | ||||
| 	u64 id; | ||||
| }; | ||||
| 
 | ||||
| struct sample_read { | ||||
| 	u64 time_enabled; | ||||
| 	u64 time_running; | ||||
| 	union { | ||||
| 		struct { | ||||
| 			u64 nr; | ||||
| 			struct sample_read_value *values; | ||||
| 		} group; | ||||
| 		struct sample_read_value one; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| struct ip_callchain { | ||||
| 	u64 nr; | ||||
| 	u64 ips[0]; | ||||
| }; | ||||
| 
 | ||||
| struct branch_flags { | ||||
| 	u64 mispred:1; | ||||
| 	u64 predicted:1; | ||||
| 	u64 in_tx:1; | ||||
| 	u64 abort:1; | ||||
| 	u64 reserved:60; | ||||
| }; | ||||
| 
 | ||||
| struct branch_entry { | ||||
| 	u64			from; | ||||
| 	u64			to; | ||||
| 	struct branch_flags	flags; | ||||
| }; | ||||
| 
 | ||||
| struct branch_stack { | ||||
| 	u64			nr; | ||||
| 	struct branch_entry	entries[0]; | ||||
| }; | ||||
| 
 | ||||
| struct perf_sample { | ||||
| 	u64 ip; | ||||
| 	u32 pid, tid; | ||||
| 	u64 time; | ||||
| 	u64 addr; | ||||
| 	u64 id; | ||||
| 	u64 stream_id; | ||||
| 	u64 period; | ||||
| 	u64 weight; | ||||
| 	u64 transaction; | ||||
| 	u32 cpu; | ||||
| 	u32 raw_size; | ||||
| 	u64 data_src; | ||||
| 	u32 flags; | ||||
| 	u16 insn_len; | ||||
| 	void *raw_data; | ||||
| 	struct ip_callchain *callchain; | ||||
| 	struct branch_stack *branch_stack; | ||||
| 	struct regs_dump  user_regs; | ||||
| 	struct stack_dump user_stack; | ||||
| 	struct sample_read read; | ||||
| }; | ||||
| 
 | ||||
| #define PERF_MEM_DATA_SRC_NONE \ | ||||
| 	(PERF_MEM_S(OP, NA) |\ | ||||
| 	 PERF_MEM_S(LVL, NA) |\ | ||||
| 	 PERF_MEM_S(SNOOP, NA) |\ | ||||
| 	 PERF_MEM_S(LOCK, NA) |\ | ||||
| 	 PERF_MEM_S(TLB, NA)) | ||||
| 
 | ||||
| struct build_id_event { | ||||
| 	struct perf_event_header header; | ||||
| 	pid_t			 pid; | ||||
| 	u8			 build_id[PERF_ALIGN(BUILD_ID_SIZE, sizeof(u64))]; | ||||
| 	char			 filename[]; | ||||
| }; | ||||
| 
 | ||||
| enum perf_user_event_type { /* above any possible kernel type */ | ||||
| 	PERF_RECORD_USER_TYPE_START		= 64, | ||||
| 	PERF_RECORD_HEADER_ATTR			= 64, | ||||
| 	PERF_RECORD_HEADER_EVENT_TYPE		= 65, /* depreceated */ | ||||
| 	PERF_RECORD_HEADER_TRACING_DATA		= 66, | ||||
| 	PERF_RECORD_HEADER_BUILD_ID		= 67, | ||||
| 	PERF_RECORD_FINISHED_ROUND		= 68, | ||||
| 	PERF_RECORD_HEADER_MAX | ||||
| }; | ||||
| 
 | ||||
| /*
 | ||||
|  * The kernel collects the number of events it couldn't send in a stretch and | ||||
|  * when possible sends this number in a PERF_RECORD_LOST event. The number of | ||||
|  * such "chunks" of lost events is stored in .nr_events[PERF_EVENT_LOST] while | ||||
|  * total_lost tells exactly how many events the kernel in fact lost, i.e. it is | ||||
|  * the sum of all struct lost_event.lost fields reported. | ||||
|  * | ||||
|  * The total_period is needed because by default auto-freq is used, so | ||||
|  * multipling nr_events[PERF_EVENT_SAMPLE] by a frequency isn't possible to get | ||||
|  * the total number of low level events, it is necessary to to sum all struct | ||||
|  * sample_event.period and stash the result in total_period. | ||||
|  */ | ||||
| struct events_stats { | ||||
| 	u64 total_period; | ||||
| 	u64 total_non_filtered_period; | ||||
| 	u64 total_lost; | ||||
| 	u64 total_invalid_chains; | ||||
| 	u32 nr_events[PERF_RECORD_HEADER_MAX]; | ||||
| 	u32 nr_non_filtered_samples; | ||||
| 	u32 nr_lost_warned; | ||||
| 	u32 nr_unknown_events; | ||||
| 	u32 nr_invalid_chains; | ||||
| 	u32 nr_unknown_id; | ||||
| 	u32 nr_unprocessable_samples; | ||||
| 	u32 nr_unordered_events; | ||||
| }; | ||||
| 
 | ||||
| struct attr_event { | ||||
| 	struct perf_event_header header; | ||||
| 	struct perf_event_attr attr; | ||||
| 	u64 id[]; | ||||
| }; | ||||
| 
 | ||||
| #define MAX_EVENT_NAME 64 | ||||
| 
 | ||||
| struct perf_trace_event_type { | ||||
| 	u64	event_id; | ||||
| 	char	name[MAX_EVENT_NAME]; | ||||
| }; | ||||
| 
 | ||||
| struct event_type_event { | ||||
| 	struct perf_event_header header; | ||||
| 	struct perf_trace_event_type event_type; | ||||
| }; | ||||
| 
 | ||||
| struct tracing_data_event { | ||||
| 	struct perf_event_header header; | ||||
| 	u32 size; | ||||
| }; | ||||
| 
 | ||||
| union perf_event { | ||||
| 	struct perf_event_header	header; | ||||
| 	struct mmap_event		mmap; | ||||
| 	struct mmap2_event		mmap2; | ||||
| 	struct comm_event		comm; | ||||
| 	struct fork_event		fork; | ||||
| 	struct lost_event		lost; | ||||
| 	struct read_event		read; | ||||
| 	struct throttle_event		throttle; | ||||
| 	struct sample_event		sample; | ||||
| 	struct attr_event		attr; | ||||
| 	struct event_type_event		event_type; | ||||
| 	struct tracing_data_event	tracing_data; | ||||
| 	struct build_id_event		build_id; | ||||
| }; | ||||
| 
 | ||||
| void perf_event__print_totals(void); | ||||
| 
 | ||||
| struct perf_tool; | ||||
| struct thread_map; | ||||
| 
 | ||||
| typedef int (*perf_event__handler_t)(struct perf_tool *tool, | ||||
| 				     union perf_event *event, | ||||
| 				     struct perf_sample *sample, | ||||
| 				     struct machine *machine); | ||||
| 
 | ||||
| int perf_event__synthesize_thread_map(struct perf_tool *tool, | ||||
| 				      struct thread_map *threads, | ||||
| 				      perf_event__handler_t process, | ||||
| 				      struct machine *machine, bool mmap_data); | ||||
| int perf_event__synthesize_threads(struct perf_tool *tool, | ||||
| 				   perf_event__handler_t process, | ||||
| 				   struct machine *machine, bool mmap_data); | ||||
| int perf_event__synthesize_kernel_mmap(struct perf_tool *tool, | ||||
| 				       perf_event__handler_t process, | ||||
| 				       struct machine *machine); | ||||
| 
 | ||||
| int perf_event__synthesize_modules(struct perf_tool *tool, | ||||
| 				   perf_event__handler_t process, | ||||
| 				   struct machine *machine); | ||||
| 
 | ||||
| int perf_event__process_comm(struct perf_tool *tool, | ||||
| 			     union perf_event *event, | ||||
| 			     struct perf_sample *sample, | ||||
| 			     struct machine *machine); | ||||
| int perf_event__process_lost(struct perf_tool *tool, | ||||
| 			     union perf_event *event, | ||||
| 			     struct perf_sample *sample, | ||||
| 			     struct machine *machine); | ||||
| int perf_event__process_mmap(struct perf_tool *tool, | ||||
| 			     union perf_event *event, | ||||
| 			     struct perf_sample *sample, | ||||
| 			     struct machine *machine); | ||||
| int perf_event__process_mmap2(struct perf_tool *tool, | ||||
| 			     union perf_event *event, | ||||
| 			     struct perf_sample *sample, | ||||
| 			     struct machine *machine); | ||||
| int perf_event__process_fork(struct perf_tool *tool, | ||||
| 			     union perf_event *event, | ||||
| 			     struct perf_sample *sample, | ||||
| 			     struct machine *machine); | ||||
| int perf_event__process_exit(struct perf_tool *tool, | ||||
| 			     union perf_event *event, | ||||
| 			     struct perf_sample *sample, | ||||
| 			     struct machine *machine); | ||||
| int perf_event__process(struct perf_tool *tool, | ||||
| 			union perf_event *event, | ||||
| 			struct perf_sample *sample, | ||||
| 			struct machine *machine); | ||||
| 
 | ||||
| struct addr_location; | ||||
| 
 | ||||
| int perf_event__preprocess_sample(const union perf_event *event, | ||||
| 				  struct machine *machine, | ||||
| 				  struct addr_location *al, | ||||
| 				  struct perf_sample *sample); | ||||
| 
 | ||||
| struct thread; | ||||
| 
 | ||||
| bool is_bts_event(struct perf_event_attr *attr); | ||||
| bool sample_addr_correlates_sym(struct perf_event_attr *attr); | ||||
| void perf_event__preprocess_sample_addr(union perf_event *event, | ||||
| 					struct perf_sample *sample, | ||||
| 					struct machine *machine, | ||||
| 					struct thread *thread, | ||||
| 					struct addr_location *al); | ||||
| 
 | ||||
| const char *perf_event__name(unsigned int id); | ||||
| 
 | ||||
| size_t perf_event__sample_event_size(const struct perf_sample *sample, u64 type, | ||||
| 				     u64 read_format); | ||||
| int perf_event__synthesize_sample(union perf_event *event, u64 type, | ||||
| 				  u64 read_format, | ||||
| 				  const struct perf_sample *sample, | ||||
| 				  bool swapped); | ||||
| 
 | ||||
| int perf_event__synthesize_mmap_events(struct perf_tool *tool, | ||||
| 				       union perf_event *event, | ||||
| 				       pid_t pid, pid_t tgid, | ||||
| 				       perf_event__handler_t process, | ||||
| 				       struct machine *machine, | ||||
| 				       bool mmap_data); | ||||
| 
 | ||||
| size_t perf_event__fprintf_comm(union perf_event *event, FILE *fp); | ||||
| size_t perf_event__fprintf_mmap(union perf_event *event, FILE *fp); | ||||
| size_t perf_event__fprintf_mmap2(union perf_event *event, FILE *fp); | ||||
| size_t perf_event__fprintf_task(union perf_event *event, FILE *fp); | ||||
| size_t perf_event__fprintf(union perf_event *event, FILE *fp); | ||||
| 
 | ||||
| u64 kallsyms__get_function_start(const char *kallsyms_filename, | ||||
| 				 const char *symbol_name); | ||||
| 
 | ||||
| #endif /* __PERF_RECORD_H */ | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 awab228
						awab228