trackers: update lttng-modules tracer ABI
[lttng-tools.git] / src / common / kernel-ctl / kernel-ctl.c
index 5f25adf02dc269debabcbdad5d04729ec0d46eb3..1df6849a9c06e721f27897f86639d43b0cc83a73 100644 (file)
@@ -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);
This page took 0.024269 seconds and 5 git commands to generate.