brintos

brintos / linux-shallow public Read only

0
0
Text · 2.1 KiB · 8febbd7 Raw
85 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef __ORDERED_EVENTS_H3#define __ORDERED_EVENTS_H4 5#include <linux/types.h>6 7struct perf_sample;8 9struct ordered_event {10	u64			timestamp;11	u64			file_offset;12	const char		*file_path;13	union perf_event	*event;14	struct list_head	list;15};16 17enum oe_flush {18	OE_FLUSH__NONE,19	OE_FLUSH__FINAL,20	OE_FLUSH__ROUND,21	OE_FLUSH__HALF,22	OE_FLUSH__TOP,23	OE_FLUSH__TIME,24};25 26struct ordered_events;27 28typedef int (*ordered_events__deliver_t)(struct ordered_events *oe,29					 struct ordered_event *event);30 31struct ordered_events_buffer {32	struct list_head	list;33	struct ordered_event	event[];34};35 36struct ordered_events {37	u64				 last_flush;38	u64				 next_flush;39	u64				 max_timestamp;40	u64				 max_alloc_size;41	u64				 cur_alloc_size;42	struct list_head		 events;43	struct list_head		 cache;44	struct list_head		 to_free;45	struct ordered_events_buffer	*buffer;46	struct ordered_event		*last;47	ordered_events__deliver_t	 deliver;48	int				 buffer_idx;49	unsigned int			 nr_events;50	enum oe_flush			 last_flush_type;51	u32				 nr_unordered_events;52	bool				 copy_on_queue;53	void				*data;54};55 56int ordered_events__queue(struct ordered_events *oe, union perf_event *event,57			  u64 timestamp, u64 file_offset, const char *file_path);58void ordered_events__delete(struct ordered_events *oe, struct ordered_event *event);59int ordered_events__flush(struct ordered_events *oe, enum oe_flush how);60int ordered_events__flush_time(struct ordered_events *oe, u64 timestamp);61void ordered_events__init(struct ordered_events *oe, ordered_events__deliver_t deliver,62			  void *data);63void ordered_events__free(struct ordered_events *oe);64void ordered_events__reinit(struct ordered_events *oe);65u64 ordered_events__first_time(struct ordered_events *oe);66 67static inline68void ordered_events__set_alloc_size(struct ordered_events *oe, u64 size)69{70	oe->max_alloc_size = size;71}72 73static inline74void ordered_events__set_copy_on_queue(struct ordered_events *oe, bool copy)75{76	oe->copy_on_queue = copy;77}78 79static inline u64 ordered_events__last_flush_time(struct ordered_events *oe)80{81	return oe->last_flush;82}83 84#endif /* __ORDERED_EVENTS_H */85