.. | .. |
---|
18 | 18 | OE_FLUSH__FINAL, |
---|
19 | 19 | OE_FLUSH__ROUND, |
---|
20 | 20 | OE_FLUSH__HALF, |
---|
| 21 | + OE_FLUSH__TOP, |
---|
| 22 | + OE_FLUSH__TIME, |
---|
21 | 23 | }; |
---|
22 | 24 | |
---|
23 | 25 | struct ordered_events; |
---|
.. | .. |
---|
25 | 27 | typedef int (*ordered_events__deliver_t)(struct ordered_events *oe, |
---|
26 | 28 | struct ordered_event *event); |
---|
27 | 29 | |
---|
| 30 | +struct ordered_events_buffer { |
---|
| 31 | + struct list_head list; |
---|
| 32 | + struct ordered_event event[]; |
---|
| 33 | +}; |
---|
| 34 | + |
---|
28 | 35 | struct ordered_events { |
---|
29 | | - u64 last_flush; |
---|
30 | | - u64 next_flush; |
---|
31 | | - u64 max_timestamp; |
---|
32 | | - u64 max_alloc_size; |
---|
33 | | - u64 cur_alloc_size; |
---|
34 | | - struct list_head events; |
---|
35 | | - struct list_head cache; |
---|
36 | | - struct list_head to_free; |
---|
37 | | - struct ordered_event *buffer; |
---|
38 | | - struct ordered_event *last; |
---|
39 | | - ordered_events__deliver_t deliver; |
---|
40 | | - int buffer_idx; |
---|
41 | | - unsigned int nr_events; |
---|
42 | | - enum oe_flush last_flush_type; |
---|
43 | | - u32 nr_unordered_events; |
---|
44 | | - bool copy_on_queue; |
---|
| 36 | + u64 last_flush; |
---|
| 37 | + u64 next_flush; |
---|
| 38 | + u64 max_timestamp; |
---|
| 39 | + u64 max_alloc_size; |
---|
| 40 | + u64 cur_alloc_size; |
---|
| 41 | + struct list_head events; |
---|
| 42 | + struct list_head cache; |
---|
| 43 | + struct list_head to_free; |
---|
| 44 | + struct ordered_events_buffer *buffer; |
---|
| 45 | + struct ordered_event *last; |
---|
| 46 | + ordered_events__deliver_t deliver; |
---|
| 47 | + int buffer_idx; |
---|
| 48 | + unsigned int nr_events; |
---|
| 49 | + enum oe_flush last_flush_type; |
---|
| 50 | + u32 nr_unordered_events; |
---|
| 51 | + bool copy_on_queue; |
---|
| 52 | + void *data; |
---|
45 | 53 | }; |
---|
46 | 54 | |
---|
47 | 55 | int ordered_events__queue(struct ordered_events *oe, union perf_event *event, |
---|
48 | 56 | u64 timestamp, u64 file_offset); |
---|
49 | 57 | void ordered_events__delete(struct ordered_events *oe, struct ordered_event *event); |
---|
50 | 58 | int ordered_events__flush(struct ordered_events *oe, enum oe_flush how); |
---|
51 | | -void ordered_events__init(struct ordered_events *oe, ordered_events__deliver_t deliver); |
---|
| 59 | +int ordered_events__flush_time(struct ordered_events *oe, u64 timestamp); |
---|
| 60 | +void ordered_events__init(struct ordered_events *oe, ordered_events__deliver_t deliver, |
---|
| 61 | + void *data); |
---|
52 | 62 | void ordered_events__free(struct ordered_events *oe); |
---|
53 | 63 | void ordered_events__reinit(struct ordered_events *oe); |
---|
| 64 | +u64 ordered_events__first_time(struct ordered_events *oe); |
---|
54 | 65 | |
---|
55 | 66 | static inline |
---|
56 | 67 | void ordered_events__set_alloc_size(struct ordered_events *oe, u64 size) |
---|