 9870d78095
			
		
	
	
	9870d78095
	
	
	
		
			
			As these can be obtained from the ordered_events pointer, via
container_of, reducing the cross section of ordered_samples.
These were added to ordered_samples in:
 commit b7b61cbebd
 Author: Arnaldo Carvalho de Melo <acme@redhat.com>
 Date:   Tue Mar 3 11:58:45 2015 -0300
    perf ordered_events: Shorten function signatures
    By keeping pointers to machines, evlist and tool in ordered_events.
But that was more a transitional patch while moving stuff out from
perf_session.c to ordered_events.c and possibly not even needed by then,
as we could use the container_of() method and instead of having the
nr_unordered_samples stats in events_stats, we can have it in
ordered_samples.
Based-on-a-patch-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-4lk0t9js82g0tfc0x1onpkjt@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
		
	
			
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef __ORDERED_EVENTS_H
 | |
| #define __ORDERED_EVENTS_H
 | |
| 
 | |
| #include <linux/types.h>
 | |
| 
 | |
| struct perf_sample;
 | |
| 
 | |
| struct ordered_event {
 | |
| 	u64			timestamp;
 | |
| 	u64			file_offset;
 | |
| 	union perf_event	*event;
 | |
| 	struct list_head	list;
 | |
| };
 | |
| 
 | |
| enum oe_flush {
 | |
| 	OE_FLUSH__NONE,
 | |
| 	OE_FLUSH__FINAL,
 | |
| 	OE_FLUSH__ROUND,
 | |
| 	OE_FLUSH__HALF,
 | |
| };
 | |
| 
 | |
| struct ordered_events;
 | |
| 
 | |
| typedef int (*ordered_events__deliver_t)(struct ordered_events *oe,
 | |
| 					 struct ordered_event *event);
 | |
| 
 | |
| struct ordered_events {
 | |
| 	u64			last_flush;
 | |
| 	u64			next_flush;
 | |
| 	u64			max_timestamp;
 | |
| 	u64			max_alloc_size;
 | |
| 	u64			cur_alloc_size;
 | |
| 	struct list_head	events;
 | |
| 	struct list_head	cache;
 | |
| 	struct list_head	to_free;
 | |
| 	struct ordered_event	*buffer;
 | |
| 	struct ordered_event	*last;
 | |
| 	ordered_events__deliver_t deliver;
 | |
| 	int			buffer_idx;
 | |
| 	unsigned int		nr_events;
 | |
| 	enum oe_flush		last_flush_type;
 | |
| 	u32			nr_unordered_events;
 | |
| 	bool                    copy_on_queue;
 | |
| };
 | |
| 
 | |
| int ordered_events__queue(struct ordered_events *oe, union perf_event *event,
 | |
| 			  struct perf_sample *sample, u64 file_offset);
 | |
| void ordered_events__delete(struct ordered_events *oe, struct ordered_event *event);
 | |
| int ordered_events__flush(struct ordered_events *oe, enum oe_flush how);
 | |
| void ordered_events__init(struct ordered_events *oe, ordered_events__deliver_t deliver);
 | |
| void ordered_events__free(struct ordered_events *oe);
 | |
| 
 | |
| static inline
 | |
| void ordered_events__set_alloc_size(struct ordered_events *oe, u64 size)
 | |
| {
 | |
| 	oe->max_alloc_size = size;
 | |
| }
 | |
| 
 | |
| static inline
 | |
| void ordered_events__set_copy_on_queue(struct ordered_events *oe, bool copy)
 | |
| {
 | |
| 	oe->copy_on_queue = copy;
 | |
| }
 | |
| #endif /* __ORDERED_EVENTS_H */
 |