diff options
author | Steven Rostedt (Google) <rostedt@goodmis.org> | 2023-12-24 14:16:02 -0500 |
---|---|---|
committer | Steven Rostedt (Google) <rostedt@goodmis.org> | 2023-12-24 14:28:01 -0500 |
commit | 33bad32779279a68b69f2f78ecdda0bce3a019bf (patch) | |
tree | d631cfecafe8cb3ab9f40d4ba5ebfdd911bc4076 | |
parent | f6bdff749f1e942f91952a9366f9be769d4e50ca (diff) | |
download | libtraceevent-33bad32779279a68b69f2f78ecdda0bce3a019bf.tar.gz |
kbuffer: Add kbuffer_subbuffer() API
Add a way to retrieve the last loaded subbuffer to the kbuffer.
The kbuffer_subbuffer() will return a pointer to the last loaded subbuffer or
NULL if none was ever loaded.
Link: https://lore.kernel.org/linux-trace-devel/20231224191813.1076074-6-rostedt@goodmis.org
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
-rw-r--r-- | Documentation/libtraceevent-kbuffer-create.txt | 11 | ||||
-rw-r--r-- | Documentation/libtraceevent.txt | 1 | ||||
-rw-r--r-- | include/traceevent/kbuffer.h | 1 | ||||
-rw-r--r-- | src/kbuffer-parse.c | 11 |
4 files changed, 23 insertions, 1 deletions
diff --git a/Documentation/libtraceevent-kbuffer-create.txt b/Documentation/libtraceevent-kbuffer-create.txt index 7279dbe..0dca314 100644 --- a/Documentation/libtraceevent-kbuffer-create.txt +++ b/Documentation/libtraceevent-kbuffer-create.txt @@ -3,7 +3,8 @@ libtraceevent(3) NAME ---- -kbuffer_alloc, kbuffer_dup, kbuffer_free, kbuffer_load_subbuffer, kbuffer_subbuffer_size, kbuffer_start_of_data - Creating of kbuffer element to parse +kbuffer_alloc, kbuffer_dup, kbuffer_free, kbuffer_load_subbuffer, kbuffer_subbuffer, +kbuffer_subbuffer_size, kbuffer_start_of_data - Creating of kbuffer element to parse the Linux kernel tracing ring buffer SYNOPSIS @@ -33,6 +34,7 @@ void *kbuffer_free*(struct kbuffer pass:[*]_kbuf_); int *kbuffer_load_subbuffer*(struct kbuffer pass:[*]_kbuf_, void pass:[*]_subbuffer_); int *kbuffer_subbuffer_size*(struct kbuffer pass:[*]_kbuf); int *kbuffer_start_of_data*(struct kbuffer pass:[*]_kbuf_); +void pass:[*]*kbuffer_subbuffer*(struct kbuffer pass:[*]_kbuf); -- DESCRIPTION @@ -79,6 +81,10 @@ on the sub-buffer. It does not return the size of the sub-buffer itself. The *kbuffer_start_of_data()* function returns the offset of where the actual data load of the sub-buffer begins. +The *kbuffer_subbuffer()* function returns the pointer to the currently loaded +subbuffer. That is, the last subbuffer that was loaded by *kbuffer_load_subbuffer()*. +If no subbuffer was loaded NULL is returned. + RETURN VALUE ------------ *kbuffer_alloc()* returns an allocated kbuffer descriptor or NULL on error. @@ -92,6 +98,9 @@ of the last event is located. *kbuffer_start_of_data()* returns the offset of where the data begins on the sub-buffer loaded in _kbuf_. +*kbuffer_subbuffer()* returns the last loaded subbuffer to _kbuf_ that was loaded +by *kbuffer_load_subbuffer()* or NULL if none was loaded. + EXAMPLE ------- [source,c] diff --git a/Documentation/libtraceevent.txt b/Documentation/libtraceevent.txt index 8b63982..253c9ea 100644 --- a/Documentation/libtraceevent.txt +++ b/Documentation/libtraceevent.txt @@ -185,6 +185,7 @@ kbuffer parsing: void *kbuffer_free*(struct kbuffer pass:[*]_kbuf_); int *kbuffer_load_subbuffer*(struct kbuffer pass:[*]_kbuf_, void pass:[*]_subbuffer_); int *kbuffer_subbuffer_size*(struct kbuffer pass:[*]_kbuf); + void pass:[*]*kbuffer_subbuffer*(struct kbuffer pass:[*]_kbuf); int *kbuffer_start_of_data*(struct kbuffer pass:[*]_kbuf_); unsigned long long *kbuffer_timestamp*(struct kbuffer pass:[*]_kbuf_); unsigned long long *kbuffer_subbuf_timestamp*(struct kbuffer pass:[*]_kbuf_, void pass:[*]_subbuf_); diff --git a/include/traceevent/kbuffer.h b/include/traceevent/kbuffer.h index 7086e03..624517e 100644 --- a/include/traceevent/kbuffer.h +++ b/include/traceevent/kbuffer.h @@ -52,6 +52,7 @@ 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_subbuffer(struct kbuffer *kbuf); void kbuffer_set_old_format(struct kbuffer *kbuf); int kbuffer_start_of_data(struct kbuffer *kbuf); diff --git a/src/kbuffer-parse.c b/src/kbuffer-parse.c index b117094..b218d1f 100644 --- a/src/kbuffer-parse.c +++ b/src/kbuffer-parse.c @@ -748,6 +748,17 @@ int kbuffer_subbuffer_size(struct kbuffer *kbuf) } /** + * kbuffer_subbuffer - the currently loaded subbuffer + * @kbuf: The kbuffer to read from + * + * Returns the currently loaded subbuffer. + */ +void *kbuffer_subbuffer(struct kbuffer *kbuf) +{ + return kbuf->subbuffer; +} + +/** * kbuffer_curr_index - Return the index of the record * @kbuf: The kbuffer to read from * |