Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v3.18 59 lines 1.4 kB view raw
1#ifndef __ORDERED_EVENTS_H 2#define __ORDERED_EVENTS_H 3 4#include <linux/types.h> 5#include "tool.h" 6 7struct perf_session; 8 9struct ordered_event { 10 u64 timestamp; 11 u64 file_offset; 12 union perf_event *event; 13 struct list_head list; 14}; 15 16enum oe_flush { 17 OE_FLUSH__NONE, 18 OE_FLUSH__FINAL, 19 OE_FLUSH__ROUND, 20 OE_FLUSH__HALF, 21}; 22 23struct ordered_events { 24 u64 last_flush; 25 u64 next_flush; 26 u64 max_timestamp; 27 u64 max_alloc_size; 28 u64 cur_alloc_size; 29 struct list_head events; 30 struct list_head cache; 31 struct list_head to_free; 32 struct ordered_event *buffer; 33 struct ordered_event *last; 34 int buffer_idx; 35 unsigned int nr_events; 36 enum oe_flush last_flush_type; 37 bool copy_on_queue; 38}; 39 40struct ordered_event *ordered_events__new(struct ordered_events *oe, u64 timestamp, 41 union perf_event *event); 42void ordered_events__delete(struct ordered_events *oe, struct ordered_event *event); 43int ordered_events__flush(struct perf_session *s, struct perf_tool *tool, 44 enum oe_flush how); 45void ordered_events__init(struct ordered_events *oe); 46void ordered_events__free(struct ordered_events *oe); 47 48static inline 49void ordered_events__set_alloc_size(struct ordered_events *oe, u64 size) 50{ 51 oe->max_alloc_size = size; 52} 53 54static inline 55void ordered_events__set_copy_on_queue(struct ordered_events *oe, bool copy) 56{ 57 oe->copy_on_queue = copy; 58} 59#endif /* __ORDERED_EVENTS_H */