xref: /aosp_15_r20/external/libtraceevent/include/traceevent/kbuffer.h (revision 436bf2bcd5202612ffffe471bbcc1f277cc8d28e)
1*436bf2bcSAndroid Build Coastguard Worker /* SPDX-License-Identifier: LGPL-2.1 */
2*436bf2bcSAndroid Build Coastguard Worker /*
3*436bf2bcSAndroid Build Coastguard Worker  * Copyright (C) 2012 Red Hat Inc, Steven Rostedt <[email protected]>
4*436bf2bcSAndroid Build Coastguard Worker  *
5*436bf2bcSAndroid Build Coastguard Worker  */
6*436bf2bcSAndroid Build Coastguard Worker #ifndef _KBUFFER_H
7*436bf2bcSAndroid Build Coastguard Worker #define _KBUFFER_H
8*436bf2bcSAndroid Build Coastguard Worker 
9*436bf2bcSAndroid Build Coastguard Worker #ifndef TS_SHIFT
10*436bf2bcSAndroid Build Coastguard Worker #define TS_SHIFT		27
11*436bf2bcSAndroid Build Coastguard Worker #endif
12*436bf2bcSAndroid Build Coastguard Worker 
13*436bf2bcSAndroid Build Coastguard Worker enum kbuffer_endian {
14*436bf2bcSAndroid Build Coastguard Worker 	KBUFFER_ENDIAN_BIG,
15*436bf2bcSAndroid Build Coastguard Worker 	KBUFFER_ENDIAN_LITTLE,
16*436bf2bcSAndroid Build Coastguard Worker 	KBUFFER_ENDIAN_SAME_AS_HOST,
17*436bf2bcSAndroid Build Coastguard Worker };
18*436bf2bcSAndroid Build Coastguard Worker 
19*436bf2bcSAndroid Build Coastguard Worker enum kbuffer_long_size {
20*436bf2bcSAndroid Build Coastguard Worker 	KBUFFER_LSIZE_4,
21*436bf2bcSAndroid Build Coastguard Worker 	KBUFFER_LSIZE_8,
22*436bf2bcSAndroid Build Coastguard Worker 	KBUFFER_LSIZE_SAME_AS_HOST,
23*436bf2bcSAndroid Build Coastguard Worker };
24*436bf2bcSAndroid Build Coastguard Worker 
25*436bf2bcSAndroid Build Coastguard Worker enum {
26*436bf2bcSAndroid Build Coastguard Worker 	KBUFFER_TYPE_PADDING		= 29,
27*436bf2bcSAndroid Build Coastguard Worker 	KBUFFER_TYPE_TIME_EXTEND	= 30,
28*436bf2bcSAndroid Build Coastguard Worker 	KBUFFER_TYPE_TIME_STAMP		= 31,
29*436bf2bcSAndroid Build Coastguard Worker };
30*436bf2bcSAndroid Build Coastguard Worker 
31*436bf2bcSAndroid Build Coastguard Worker struct kbuffer;
32*436bf2bcSAndroid Build Coastguard Worker 
33*436bf2bcSAndroid Build Coastguard Worker struct kbuffer *kbuffer_alloc(enum kbuffer_long_size size, enum kbuffer_endian endian);
34*436bf2bcSAndroid Build Coastguard Worker struct kbuffer *kbuffer_dup(struct kbuffer *kbuf);
35*436bf2bcSAndroid Build Coastguard Worker void kbuffer_free(struct kbuffer *kbuf);
36*436bf2bcSAndroid Build Coastguard Worker int kbuffer_load_subbuffer(struct kbuffer *kbuf, void *subbuffer);
37*436bf2bcSAndroid Build Coastguard Worker int kbuffer_refresh(struct kbuffer *kbuf);
38*436bf2bcSAndroid Build Coastguard Worker void *kbuffer_read_event(struct kbuffer *kbuf, unsigned long long *ts);
39*436bf2bcSAndroid Build Coastguard Worker void *kbuffer_next_event(struct kbuffer *kbuf, unsigned long long *ts);
40*436bf2bcSAndroid Build Coastguard Worker unsigned long long kbuffer_timestamp(struct kbuffer *kbuf);
41*436bf2bcSAndroid Build Coastguard Worker unsigned long long kbuffer_subbuf_timestamp(struct kbuffer *kbuf, void *subbuf);
42*436bf2bcSAndroid Build Coastguard Worker unsigned int kbuffer_ptr_delta(struct kbuffer *kbuf, void *ptr);
43*436bf2bcSAndroid Build Coastguard Worker 
44*436bf2bcSAndroid Build Coastguard Worker void *kbuffer_translate_data(int swap, void *data, unsigned int *size);
45*436bf2bcSAndroid Build Coastguard Worker 
46*436bf2bcSAndroid Build Coastguard Worker void *kbuffer_read_at_offset(struct kbuffer *kbuf, int offset, unsigned long long *ts);
47*436bf2bcSAndroid Build Coastguard Worker int kbuffer_read_buffer(struct kbuffer *kbuf, void *buffer, int len);
48*436bf2bcSAndroid Build Coastguard Worker 
49*436bf2bcSAndroid Build Coastguard Worker int kbuffer_curr_index(struct kbuffer *kbuf);
50*436bf2bcSAndroid Build Coastguard Worker 
51*436bf2bcSAndroid Build Coastguard Worker int kbuffer_curr_offset(struct kbuffer *kbuf);
52*436bf2bcSAndroid Build Coastguard Worker int kbuffer_curr_size(struct kbuffer *kbuf);
53*436bf2bcSAndroid Build Coastguard Worker int kbuffer_event_size(struct kbuffer *kbuf);
54*436bf2bcSAndroid Build Coastguard Worker int kbuffer_missed_events(struct kbuffer *kbuf);
55*436bf2bcSAndroid Build Coastguard Worker int kbuffer_subbuffer_size(struct kbuffer *kbuf);
56*436bf2bcSAndroid Build Coastguard Worker void *kbuffer_subbuffer(struct kbuffer *kbuf);
57*436bf2bcSAndroid Build Coastguard Worker 
58*436bf2bcSAndroid Build Coastguard Worker void kbuffer_set_old_format(struct kbuffer *kbuf);
59*436bf2bcSAndroid Build Coastguard Worker int kbuffer_start_of_data(struct kbuffer *kbuf);
60*436bf2bcSAndroid Build Coastguard Worker 
61*436bf2bcSAndroid Build Coastguard Worker /* Debugging */
62*436bf2bcSAndroid Build Coastguard Worker 
63*436bf2bcSAndroid Build Coastguard Worker struct kbuffer_raw_info {
64*436bf2bcSAndroid Build Coastguard Worker 	int			type;
65*436bf2bcSAndroid Build Coastguard Worker 	int			length;
66*436bf2bcSAndroid Build Coastguard Worker 	unsigned long long	delta;
67*436bf2bcSAndroid Build Coastguard Worker 	void			*next;
68*436bf2bcSAndroid Build Coastguard Worker };
69*436bf2bcSAndroid Build Coastguard Worker 
70*436bf2bcSAndroid Build Coastguard Worker /* Read raw data */
71*436bf2bcSAndroid Build Coastguard Worker struct kbuffer_raw_info *kbuffer_raw_get(struct kbuffer *kbuf, void *subbuf,
72*436bf2bcSAndroid Build Coastguard Worker 					 struct kbuffer_raw_info *info);
73*436bf2bcSAndroid Build Coastguard Worker 
74*436bf2bcSAndroid Build Coastguard Worker #endif /* _K_BUFFER_H */
75