X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fkernel-ctl%2Fkernel-ctl.c;h=1df6849a9c06e721f27897f86639d43b0cc83a73;hp=14d96b5778ba36a1d05c2c44608c4b36f3668955;hb=d01c0e5606d656a1118348f693b3593554b1e58f;hpb=e04b2181d2d91179ab11f461d481830fd88afaa1 diff --git a/src/common/kernel-ctl/kernel-ctl.c b/src/common/kernel-ctl/kernel-ctl.c index 14d96b577..1df6849a9 100644 --- a/src/common/kernel-ctl/kernel-ctl.c +++ b/src/common/kernel-ctl/kernel-ctl.c @@ -230,6 +230,67 @@ int kernctl_list_tracker_pids(int fd) return LTTNG_IOCTL_NO_CHECK(fd, LTTNG_KERNEL_SESSION_LIST_TRACKER_PIDS); } +static enum lttng_kernel_tracker_type get_kernel_tracker_type( + enum lttng_tracker_type type) +{ + switch (type) { + case LTTNG_TRACKER_PID: + return LTTNG_KERNEL_TRACKER_PID; + case LTTNG_TRACKER_VPID: + return LTTNG_KERNEL_TRACKER_VPID; + case LTTNG_TRACKER_UID: + return LTTNG_KERNEL_TRACKER_UID; + case LTTNG_TRACKER_VUID: + return LTTNG_KERNEL_TRACKER_VUID; + case LTTNG_TRACKER_GID: + return LTTNG_KERNEL_TRACKER_GID; + case LTTNG_TRACKER_VGID: + return LTTNG_KERNEL_TRACKER_VGID; + default: + return LTTNG_KERNEL_TRACKER_UNKNOWN; + } +} + +int kernctl_track_id(int fd, enum lttng_tracker_type tracker_type, int id) +{ + struct lttng_kernel_tracker_args args; + + args.id = id; + args.type = get_kernel_tracker_type(tracker_type); + if (args.type == LTTNG_KERNEL_TRACKER_UNKNOWN) { + errno = EINVAL; + return -1; + } + return LTTNG_IOCTL_CHECK(fd, LTTNG_KERNEL_SESSION_TRACK_ID, &args); +} + +int kernctl_untrack_id(int fd, enum lttng_tracker_type tracker_type, int id) +{ + struct lttng_kernel_tracker_args args; + + args.id = id; + args.type = get_kernel_tracker_type(tracker_type); + if (args.type == LTTNG_KERNEL_TRACKER_UNKNOWN) { + errno = EINVAL; + return -1; + } + return LTTNG_IOCTL_CHECK(fd, LTTNG_KERNEL_SESSION_UNTRACK_ID, &args); +} + +int kernctl_list_tracker_ids(int fd, enum lttng_tracker_type tracker_type) +{ + struct lttng_kernel_tracker_args args; + + args.id = -1; + args.type = get_kernel_tracker_type(tracker_type); + if (args.type == LTTNG_KERNEL_TRACKER_UNKNOWN) { + errno = EINVAL; + return -1; + } + return LTTNG_IOCTL_NO_CHECK( + fd, LTTNG_KERNEL_SESSION_LIST_TRACKER_IDS, &args); +} + int kernctl_session_regenerate_metadata(int fd) { return LTTNG_IOCTL_CHECK(fd, LTTNG_KERNEL_SESSION_METADATA_REGEN); @@ -453,6 +514,11 @@ int kernctl_buffer_flush_empty(int fd) return LTTNG_IOCTL_CHECK(fd, RING_BUFFER_FLUSH_EMPTY); } +int kernctl_buffer_clear(int fd) +{ + return LTTNG_IOCTL_CHECK(fd, RING_BUFFER_CLEAR); +} + /* returns the version of the metadata. */ int kernctl_get_metadata_version(int fd, uint64_t *version) {