| /* SPDX-License-Identifier: LGPL-2.1 */ | |
| /* | |
| * Copyright (C) 2012 Red Hat Inc, Steven Rostedt <srostedt@redhat.com> | |
| * | |
| */ | |
| #ifndef _KBUFFER_H | |
| #define _KBUFFER_H | |
| #ifndef TS_SHIFT | |
| #define TS_SHIFT 27 | |
| #endif | |
| enum kbuffer_endian { | |
| KBUFFER_ENDIAN_BIG, | |
| KBUFFER_ENDIAN_LITTLE, | |
| }; | |
| enum kbuffer_long_size { | |
| KBUFFER_LSIZE_4, | |
| KBUFFER_LSIZE_8, | |
| }; | |
| enum { | |
| KBUFFER_TYPE_PADDING = 29, | |
| KBUFFER_TYPE_TIME_EXTEND = 30, | |
| KBUFFER_TYPE_TIME_STAMP = 31, | |
| }; | |
| struct kbuffer; | |
| struct kbuffer *kbuffer_alloc(enum kbuffer_long_size size, enum kbuffer_endian endian); | |
| void kbuffer_free(struct kbuffer *kbuf); | |
| int kbuffer_load_subbuffer(struct kbuffer *kbuf, void *subbuffer); | |
| void *kbuffer_read_event(struct kbuffer *kbuf, unsigned long long *ts); | |
| void *kbuffer_next_event(struct kbuffer *kbuf, unsigned long long *ts); | |
| unsigned long long kbuffer_timestamp(struct kbuffer *kbuf); | |
| unsigned long long kbuffer_subbuf_timestamp(struct kbuffer *kbuf, void *subbuf); | |
| unsigned int kbuffer_ptr_delta(struct kbuffer *kbuf, void *ptr); | |
| void *kbuffer_translate_data(int swap, void *data, unsigned int *size); | |
| void *kbuffer_read_at_offset(struct kbuffer *kbuf, int offset, unsigned long long *ts); | |
| int kbuffer_curr_index(struct kbuffer *kbuf); | |
| int kbuffer_curr_offset(struct kbuffer *kbuf); | |
| int kbuffer_curr_size(struct kbuffer *kbuf); | |
| int kbuffer_event_size(struct kbuffer *kbuf); | |
| int kbuffer_missed_events(struct kbuffer *kbuf); | |
| int kbuffer_subbuffer_size(struct kbuffer *kbuf); | |
| void kbuffer_set_old_format(struct kbuffer *kbuf); | |
| int kbuffer_start_of_data(struct kbuffer *kbuf); | |
| /* Debugging */ | |
| struct kbuffer_raw_info { | |
| int type; | |
| int length; | |
| unsigned long long delta; | |
| void *next; | |
| }; | |
| /* Read raw data */ | |
| struct kbuffer_raw_info *kbuffer_raw_get(struct kbuffer *kbuf, void *subbuf, | |
| struct kbuffer_raw_info *info); | |
| #endif /* _K_BUFFER_H */ |