kbuffer.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /* SPDX-License-Identifier: LGPL-2.1 */
  2. /*
  3. * Copyright (C) 2012 Red Hat Inc, Steven Rostedt <srostedt@redhat.com>
  4. *
  5. */
  6. #ifndef _KBUFFER_H
  7. #define _KBUFFER_H
  8. #ifndef TS_SHIFT
  9. #define TS_SHIFT 27
  10. #endif
  11. enum kbuffer_endian {
  12. KBUFFER_ENDIAN_BIG,
  13. KBUFFER_ENDIAN_LITTLE,
  14. };
  15. enum kbuffer_long_size {
  16. KBUFFER_LSIZE_4,
  17. KBUFFER_LSIZE_8,
  18. };
  19. enum {
  20. KBUFFER_TYPE_PADDING = 29,
  21. KBUFFER_TYPE_TIME_EXTEND = 30,
  22. KBUFFER_TYPE_TIME_STAMP = 31,
  23. };
  24. struct kbuffer;
  25. struct kbuffer *kbuffer_alloc(enum kbuffer_long_size size, enum kbuffer_endian endian);
  26. void kbuffer_free(struct kbuffer *kbuf);
  27. int kbuffer_load_subbuffer(struct kbuffer *kbuf, void *subbuffer);
  28. void *kbuffer_read_event(struct kbuffer *kbuf, unsigned long long *ts);
  29. void *kbuffer_next_event(struct kbuffer *kbuf, unsigned long long *ts);
  30. unsigned long long kbuffer_timestamp(struct kbuffer *kbuf);
  31. unsigned long long kbuffer_subbuf_timestamp(struct kbuffer *kbuf, void *subbuf);
  32. unsigned int kbuffer_ptr_delta(struct kbuffer *kbuf, void *ptr);
  33. void *kbuffer_translate_data(int swap, void *data, unsigned int *size);
  34. void *kbuffer_read_at_offset(struct kbuffer *kbuf, int offset, unsigned long long *ts);
  35. int kbuffer_curr_index(struct kbuffer *kbuf);
  36. int kbuffer_curr_offset(struct kbuffer *kbuf);
  37. int kbuffer_curr_size(struct kbuffer *kbuf);
  38. int kbuffer_event_size(struct kbuffer *kbuf);
  39. int kbuffer_missed_events(struct kbuffer *kbuf);
  40. int kbuffer_subbuffer_size(struct kbuffer *kbuf);
  41. void kbuffer_set_old_format(struct kbuffer *kbuf);
  42. int kbuffer_start_of_data(struct kbuffer *kbuf);
  43. /* Debugging */
  44. struct kbuffer_raw_info {
  45. int type;
  46. int length;
  47. unsigned long long delta;
  48. void *next;
  49. };
  50. /* Read raw data */
  51. struct kbuffer_raw_info *kbuffer_raw_get(struct kbuffer *kbuf, void *subbuf,
  52. struct kbuffer_raw_info *info);
  53. #endif /* _K_BUFFER_H */