From 964ccb604969040d317340d83706d6a6a06d3b3a Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Mon, 8 Aug 2011 13:58:29 -0400 Subject: [PATCH] Cleanup libkernelctl API Signed-off-by: Mathieu Desnoyers --- libkernelctl/libkernelctl.c | 134 ++++++++++++++++++++---------------- libkernelctl/libkernelctl.h | 50 +++++++++----- 2 files changed, 108 insertions(+), 76 deletions(-) diff --git a/libkernelctl/libkernelctl.c b/libkernelctl/libkernelctl.c index 78b256347..47d749778 100644 --- a/libkernelctl/libkernelctl.c +++ b/libkernelctl/libkernelctl.c @@ -22,14 +22,15 @@ #include "kernel-ioctl.h" #include "libkernelctl.h" -int kernctl_add_context(int fd, struct lttng_kernel_context *ctx) +int kernctl_create_session(int fd) { - return ioctl(fd, LTTNG_KERNEL_CONTEXT, ctx); + return ioctl(fd, LTTNG_KERNEL_SESSION); } -int kernctl_buffer_flush(int fd) +/* open the metadata global channel */ +int kernctl_open_metadata(int fd, struct lttng_channel_attr *chops) { - return ioctl(fd, RING_BUFFER_FLUSH); + return ioctl(fd, LTTNG_KERNEL_METADATA, chops); } int kernctl_create_channel(int fd, struct lttng_channel_attr *chops) @@ -37,21 +38,22 @@ int kernctl_create_channel(int fd, struct lttng_channel_attr *chops) return ioctl(fd, LTTNG_KERNEL_CHANNEL, chops); } -int kernctl_create_event(int fd, struct lttng_kernel_event *ev) +int kernctl_create_stream(int fd) { - return ioctl(fd, LTTNG_KERNEL_EVENT, ev); + return ioctl(fd, LTTNG_KERNEL_STREAM); } -int kernctl_create_session(int fd) +int kernctl_create_event(int fd, struct lttng_kernel_event *ev) { - return ioctl(fd, LTTNG_KERNEL_SESSION); + return ioctl(fd, LTTNG_KERNEL_EVENT, ev); } -int kernctl_create_stream(int fd) +int kernctl_add_context(int fd, struct lttng_kernel_context *ctx) { - return ioctl(fd, LTTNG_KERNEL_STREAM); + return ioctl(fd, LTTNG_KERNEL_CONTEXT, ctx); } + /* Enable event, channel and session ioctl */ int kernctl_enable(int fd) { @@ -64,28 +66,75 @@ int kernctl_disable(int fd) return ioctl(fd, LTTNG_KERNEL_DISABLE); } -/* returns the maximum size for sub-buffers. */ -int kernctl_get_max_subbuf_size(int fd, unsigned long *len) +int kernctl_start_session(int fd) { - return ioctl(fd, RING_BUFFER_GET_MAX_SUBBUF_SIZE, len); + return ioctl(fd, LTTNG_KERNEL_SESSION_START); +} + +int kernctl_stop_session(int fd) +{ + return ioctl(fd, LTTNG_KERNEL_SESSION_STOP); } + +int kernctl_tracepoint_list(int fd) +{ + return ioctl(fd, LTTNG_KERNEL_TRACEPOINT_LIST); +} + +int kernctl_tracer_version(int fd, struct lttng_kernel_tracer_version *v) +{ + return ioctl(fd, LTTNG_KERNEL_TRACER_VERSION, v); +} + +int kernctl_wait_quiescent(int fd) +{ + return ioctl(fd, LTTNG_KERNEL_WAIT_QUIESCENT); +} + +int kernctl_calibrate(int fd, struct lttng_kernel_calibrate *calibrate) +{ + return ioctl(fd, LTTNG_KERNEL_CALIBRATE, calibrate); +} + + +int kernctl_buffer_flush(int fd) +{ + return ioctl(fd, RING_BUFFER_FLUSH); +} + + +/* Buffer operations */ + +/* For mmap mode, readable without "get" operation */ + /* returns the length to mmap. */ int kernctl_get_mmap_len(int fd, unsigned long *len) { return ioctl(fd, RING_BUFFER_GET_MMAP_LEN, len); } +/* returns the maximum size for sub-buffers. */ +int kernctl_get_max_subbuf_size(int fd, unsigned long *len) +{ + return ioctl(fd, RING_BUFFER_GET_MAX_SUBBUF_SIZE, len); +} + +/* + * For mmap mode, operate on the current packet (between get/put or + * get_next/put_next). + */ + /* returns the offset of the subbuffer belonging to the mmap reader. */ int kernctl_get_mmap_read_offset(int fd, unsigned long *off) { return ioctl(fd, RING_BUFFER_GET_MMAP_READ_OFFSET, off); } -/* Get exclusive read access to the next sub-buffer that can be read. */ -int kernctl_get_next_subbuf(int fd) +/* returns the size of the current sub-buffer, without padding (for mmap). */ +int kernctl_get_subbuf_size(int fd, unsigned long *len) { - return ioctl(fd, RING_BUFFER_GET_NEXT_SUBBUF); + return ioctl(fd, RING_BUFFER_GET_SUBBUF_SIZE, len); } /* returns the size of the current sub-buffer, without padding (for mmap). */ @@ -94,23 +143,12 @@ int kernctl_get_padded_subbuf_size(int fd, unsigned long *len) return ioctl(fd, RING_BUFFER_GET_PADDED_SUBBUF_SIZE, len); } -/* Get exclusive read access to the specified sub-buffer position */ -int kernctl_get_subbuf(int fd, unsigned long *len) -{ - return ioctl(fd, RING_BUFFER_GET_SUBBUF, len); -} - -/* returns the size of the current sub-buffer, without padding (for mmap). */ -int kernctl_get_subbuf_size(int fd, unsigned long *len) +/* Get exclusive read access to the next sub-buffer that can be read. */ +int kernctl_get_next_subbuf(int fd) { - return ioctl(fd, RING_BUFFER_GET_SUBBUF_SIZE, len); + return ioctl(fd, RING_BUFFER_GET_NEXT_SUBBUF); } -/* open the metadata global channel */ -int kernctl_open_metadata(int fd, struct lttng_channel_attr *chops) -{ - return ioctl(fd, LTTNG_KERNEL_METADATA, chops); -} /* Release exclusive sub-buffer access, move consumer forward. */ int kernctl_put_next_subbuf(int fd) @@ -118,11 +156,7 @@ int kernctl_put_next_subbuf(int fd) return ioctl(fd, RING_BUFFER_PUT_NEXT_SUBBUF); } -/* Release exclusive sub-buffer access */ -int kernctl_put_subbuf(int fd) -{ - return ioctl(fd, RING_BUFFER_PUT_SUBBUF); -} +/* snapshot */ /* Get a snapshot of the current ring buffer producer and consumer positions */ int kernctl_snapshot(int fd) @@ -142,32 +176,14 @@ int kernctl_snapshot_get_produced(int fd, unsigned long *pos) return ioctl(fd, RING_BUFFER_SNAPSHOT_GET_PRODUCED, pos); } -int kernctl_start_session(int fd) -{ - return ioctl(fd, LTTNG_KERNEL_SESSION_START); -} - -int kernctl_stop_session(int fd) -{ - return ioctl(fd, LTTNG_KERNEL_SESSION_STOP); -} - -int kernctl_tracepoint_list(int fd) -{ - return ioctl(fd, LTTNG_KERNEL_TRACEPOINT_LIST); -} - -int kernctl_tracer_version(int fd, struct lttng_kernel_tracer_version *v) -{ - return ioctl(fd, LTTNG_KERNEL_TRACER_VERSION, v); -} - -int kernctl_wait_quiescent(int fd) +/* Get exclusive read access to the specified sub-buffer position */ +int kernctl_get_subbuf(int fd, unsigned long *len) { - return ioctl(fd, LTTNG_KERNEL_WAIT_QUIESCENT); + return ioctl(fd, RING_BUFFER_GET_SUBBUF, len); } -int kernctl_calibrate(int fd, struct lttng_kernel_calibrate *calibrate) +/* Release exclusive sub-buffer access */ +int kernctl_put_subbuf(int fd) { - return ioctl(fd, LTTNG_KERNEL_CALIBRATE, calibrate); + return ioctl(fd, RING_BUFFER_PUT_SUBBUF); } diff --git a/libkernelctl/libkernelctl.h b/libkernelctl/libkernelctl.h index 026f58d21..783f1258d 100644 --- a/libkernelctl/libkernelctl.h +++ b/libkernelctl/libkernelctl.h @@ -24,32 +24,48 @@ #include "lttng-kernel.h" -int kernctl_add_context(int fd, struct lttng_kernel_context *ctx); -int kernctl_buffer_flush(int fd); +int kernctl_create_session(int fd); +int kernctl_open_metadata(int fd, struct lttng_channel_attr *chops); int kernctl_create_channel(int fd, struct lttng_channel_attr *chops); +int kernctl_create_stream(int fd); int kernctl_create_event(int fd, struct lttng_kernel_event *ev); +int kernctl_add_context(int fd, struct lttng_kernel_context *ctx); + int kernctl_enable(int fd); int kernctl_disable(int fd); -int kernctl_create_session(int fd); -int kernctl_create_stream(int fd); -int kernctl_get_max_subbuf_size(int fd, unsigned long *len); -int kernctl_get_mmap_len(int fd, unsigned long *len); -int kernctl_get_mmap_read_offset(int fd, unsigned long *len); -int kernctl_get_next_subbuf(int fd); -int kernctl_get_padded_subbuf_size(int fd, unsigned long *len); -int kernctl_get_subbuf(int fd, unsigned long *len); -int kernctl_get_subbuf_size(int fd, unsigned long *len); -int kernctl_open_metadata(int fd, struct lttng_channel_attr *chops); -int kernctl_put_next_subbuf(int fd); -int kernctl_put_subbuf(int fd); -int kernctl_snapshot(int fd); -int kernctl_snapshot_get_consumed(int fd, unsigned long *len); -int kernctl_snapshot_get_produced(int fd, unsigned long *len); int kernctl_start_session(int fd); int kernctl_stop_session(int fd); + int kernctl_tracepoint_list(int fd); int kernctl_tracer_version(int fd, struct lttng_kernel_tracer_version *v); int kernctl_wait_quiescent(int fd); int kernctl_calibrate(int fd, struct lttng_kernel_calibrate *calibrate); + +/* Buffer operations */ + +/* For mmap mode, readable without "get" operation */ +int kernctl_get_mmap_len(int fd, unsigned long *len); +int kernctl_get_max_subbuf_size(int fd, unsigned long *len); + +/* + * For mmap mode, operate on the current packet (between get/put or + * get_next/put_next). + */ +int kernctl_get_mmap_read_offset(int fd, unsigned long *len); +int kernctl_get_subbuf_size(int fd, unsigned long *len); +int kernctl_get_padded_subbuf_size(int fd, unsigned long *len); + +int kernctl_get_next_subbuf(int fd); +int kernctl_put_next_subbuf(int fd); + +/* snapshot */ +int kernctl_snapshot(int fd); +int kernctl_snapshot_get_consumed(int fd, unsigned long *pos); +int kernctl_snapshot_get_produced(int fd, unsigned long *pos); +int kernctl_get_subbuf(int fd, unsigned long *pos); +int kernctl_put_subbuf(int fd); + +int kernctl_buffer_flush(int fd); + #endif /* _LTT_LIBKERNELCTL_H */ -- 2.34.1