LIBTRACEEVENT(3)

πŸ’– LIBTRACEEVENT πŸ’–

okay bestie, real talk β€” this is the libtraceevent manual, and this particular page is all about page sizes and sub buffers. like, the memory page on the machine where your trace got made, and the lil chunks the kernel ring buffer gets chopped into. that's it. that's the whole vibe. πŸ¦‹


✨ NAME ✨

tep_get_page_size, tep_set_page_size, tep_get_sub_buffer_data_size, tep_get_sub_buffer_size β€” get / set the size of a memory page on the machine, where the trace is generated πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

#include <event-parse.h>

int tep_get_page_size(struct tep_handle *tep);
void tep_set_page_size(struct tep_handle *tep, int page_size);
int tep_get_sub_buffer_size(struct tep_handle *tep);
int tep_get_sub_buffer_data_size(struct tep_handle *tep);
int tep_get_sub_buffer_commit_offset(struct tep_handle *tep);

🌸 DESCRIPTION 🌸

so basically, tep_get_page_size() hands you back the size of a memory page on the machine where the trace was generated. the tep argument is your trace event parser context, obvi. πŸ‘‘

tep_set_page_size() is the reverse situation β€” it stores that page size into the tep context, the size of a memory page on the machine where the trace is generated. tep is, again, the trace event parser context. and page_size is that memory page size, measured in bytes. no cap.

tep_get_sub_buffer_size() returns the size of each "sub buffer" of the ring buffer. see, the Linux kernel ring buffer is broken up into sections called sub buffers, and this gives you the size of those buffers. it's giving fragmentation, but make it intentional. ✨

tep_get_sub_buffer_data_size() returns the size of just the data portion of the sub buffers. like, the actual data, not the whole thing. the way that data has its own little zone. πŸ™ˆ

tep_get_sub_buffer_commit_offset() returns the offset on the sub buffer that holds the committed portion of data. this number contains the index from the data portion of the sub buffer that is the end of the last element on the sub buffer. lowkey important. πŸ”₯


🌈 RETURN VALUE 🌈

  • tep_get_page_size() returns size of the memory page, in bytes.
  • tep_get_sub_buffer_size() returns the number of bytes each sub buffer is made up of.
  • tep_get_sub_buffer_commit_offset() returns the location on the sub buffer that contains the index of the last element.

🧚 EXAMPLE 🧚

here's the moment, bestie, copy it exact:

#include <unistd.h>
#include <event-parse.h>
...
struct tep_handle *tep = tep_alloc();
...
        int page_size = getpagesize();

        tep_set_page_size(tep, page_size);

        printf("The page size for this machine is %d\n", tep_get_page_size(tep));

πŸ“ FILES πŸ“

  • event-parse.h β€” Header file to include in order to have access to the library APIs.
  • -ltraceevent β€” Linker switch to add when building a program that uses the library.

πŸ¦‹ SEE ALSO πŸ¦‹

libtraceevent(3), trace-cmd(1)


πŸ‘‘ AUTHOR πŸ‘‘

  • Steven Rostedt <rostedt@goodmis.org[1]>, author of libtraceevent.
  • Tzvetomir Stoyanov <tz.stoyanov@gmail.com[2]>, author of this man page.

πŸ’€ REPORTING BUGS πŸ’€

Report bugs to <linux-trace-devel@vger.kernel.org[3]>

not me asking you to actually report them, but like, please do? the maintainers are sweeties and they wanna know. 🫢

⭐ LICENSE ⭐

libtraceevent is Free Software licensed under the GNU LGPL 2.1


πŸ’œ RESOURCES πŸ’œ

https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/


πŸŽ€ NOTES πŸŽ€

  1. rostedt@goodmis.org mailto:rostedt@goodmis.org
  2. tz.stoyanov@gmail.com mailto:tz.stoyanov@gmail.com
  3. linux-trace-devel@vger.kernel.org mailto:linux-trace-devel@vger.kernel.org

okay and that's the whole page!! πŸ’– this was libtraceevent version 1.9.0, dated 06/15/2026, and it lives in the libtraceevent Manual section, slay. go forth and read your sub buffers. periodt. πŸ‘‘βœ¨

πŸ“¦ where this page comes from