X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fkernel-ctl%2Fkernel-ctl.c;h=6a256fefd00fa06b107c61aff78ea09151e63627;hp=839a8600e2a3a94ca3eab38b03863138225758fa;hb=f22dd89135f6b1749cd75735f04e3cb309da12c1;hpb=b812e5ca9073ddac9cf8db747eb6cf9bea78b85a diff --git a/src/common/kernel-ctl/kernel-ctl.c b/src/common/kernel-ctl/kernel-ctl.c index 839a8600e..6a256fefd 100644 --- a/src/common/kernel-ctl/kernel-ctl.c +++ b/src/common/kernel-ctl/kernel-ctl.c @@ -89,10 +89,12 @@ int kernctl_create_session(int fd) /* open the metadata global channel */ int kernctl_open_metadata(int fd, struct lttng_channel_attr *chops) { - struct lttng_kernel_old_channel old_channel; struct lttng_kernel_channel channel; if (lttng_kernel_use_old_abi) { + struct lttng_kernel_old_channel old_channel; + + memset(&old_channel, 0, sizeof(old_channel)); old_channel.overwrite = chops->overwrite; old_channel.subbuf_size = chops->subbuf_size; old_channel.num_subbuf = chops->num_subbuf; @@ -111,6 +113,7 @@ int kernctl_open_metadata(int fd, struct lttng_channel_attr *chops) &old_channel); } + memset(&channel, 0, sizeof(channel)); channel.overwrite = chops->overwrite; channel.subbuf_size = chops->subbuf_size; channel.num_subbuf = chops->num_subbuf; @@ -246,6 +249,7 @@ int kernctl_create_event(int fd, struct lttng_kernel_event *ev) if (lttng_kernel_use_old_abi) { struct lttng_kernel_old_event old_event; + memset(&old_event, 0, sizeof(old_event)); memcpy(old_event.name, ev->name, sizeof(old_event.name)); old_event.instrumentation = ev->instrumentation; switch (ev->instrumentation) { @@ -283,6 +287,7 @@ int kernctl_add_context(int fd, struct lttng_kernel_context *ctx) if (lttng_kernel_use_old_abi) { struct lttng_kernel_old_context old_ctx; + memset(&old_ctx, 0, sizeof(old_ctx)); old_ctx.ctx = ctx->ctx; /* only type that uses the union */ if (ctx->ctx == LTTNG_KERNEL_CONTEXT_PERF_CPU_COUNTER) { @@ -403,6 +408,11 @@ int kernctl_buffer_flush(int fd) return LTTNG_IOCTL_CHECK(fd, RING_BUFFER_FLUSH); } +int kernctl_buffer_flush_empty(int fd) +{ + return LTTNG_IOCTL_CHECK(fd, RING_BUFFER_FLUSH_EMPTY); +} + /* returns the version of the metadata. */ int kernctl_get_metadata_version(int fd, uint64_t *version) { @@ -470,6 +480,16 @@ int kernctl_snapshot(int fd) return LTTNG_IOCTL_CHECK(fd, RING_BUFFER_SNAPSHOT); } +/* + * Get a snapshot of the current ring buffer producer and consumer positions, + * regardless of whether or not the two positions are contained within the + * same sub-buffer. + */ +int kernctl_snapshot_sample_positions(int fd) +{ + return LTTNG_IOCTL_CHECK(fd, RING_BUFFER_SNAPSHOT_SAMPLE_POSITIONS); +} + /* Get the consumer position (iteration start) */ int kernctl_snapshot_get_consumed(int fd, unsigned long *pos) {