ordered-events.h 1.8 KB
Newer Older
1 2 3 4 5
#ifndef __ORDERED_EVENTS_H
#define __ORDERED_EVENTS_H

#include <linux/types.h>

6 7
struct perf_tool;
struct perf_evlist;
8
struct perf_sample;
9
struct machines;
10 11 12 13 14 15 16 17 18

struct ordered_event {
	u64			timestamp;
	u64			file_offset;
	union perf_event	*event;
	struct list_head	list;
};

enum oe_flush {
19
	OE_FLUSH__NONE,
20 21 22 23 24
	OE_FLUSH__FINAL,
	OE_FLUSH__ROUND,
	OE_FLUSH__HALF,
};

25 26 27 28 29 30
struct ordered_events;

typedef int (*ordered_events__deliver_t)(struct ordered_events *oe,
					 struct ordered_event *event,
					 struct perf_sample *sample);

31 32 33 34 35 36 37 38 39 40 41
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;
42 43 44
	struct machines		*machines;
	struct perf_evlist	*evlist;
	struct perf_tool	*tool;
45
	ordered_events__deliver_t deliver;
46 47
	int			buffer_idx;
	unsigned int		nr_events;
48
	enum oe_flush		last_flush_type;
49
	bool                    copy_on_queue;
50 51
};

52 53
int ordered_events__queue(struct ordered_events *oe, union perf_event *event,
			  struct perf_sample *sample, u64 file_offset);
54
void ordered_events__delete(struct ordered_events *oe, struct ordered_event *event);
55 56
int ordered_events__flush(struct ordered_events *oe, enum oe_flush how);
void ordered_events__init(struct ordered_events *oe, struct machines *machines,
57 58
			  struct perf_evlist *evlsit, struct perf_tool *tool,
			  ordered_events__deliver_t deliver);
59
void ordered_events__free(struct ordered_events *oe);
60 61 62 63 64 65

static inline
void ordered_events__set_alloc_size(struct ordered_events *oe, u64 size)
{
	oe->max_alloc_size = size;
}
66 67 68 69 70 71

static inline
void ordered_events__set_copy_on_queue(struct ordered_events *oe, bool copy)
{
	oe->copy_on_queue = copy;
}
72
#endif /* __ORDERED_EVENTS_H */