Backport: trackers: update lttng-modules tracer ABI
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 4 Jul 2018 20:15:07 +0000 (16:15 -0400)
committerJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Fri, 21 Sep 2018 04:00:52 +0000 (00:00 -0400)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
src/common/kernel-ctl/kernel-ctl.c
src/common/kernel-ctl/kernel-ctl.h
src/common/kernel-ctl/kernel-ioctl.h
src/common/lttng-kernel.h

index bc52c3e5dd1ba593d8c23e5569f2d5497c1c50d1..be9d412612631e45c684ff571d8b7dd4e3a61f4e 100644 (file)
@@ -228,6 +228,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);
index 97b3128d322f222200d4fe7e390dad63d0c9e7dc..8c0ff49e00533dc65f5228556cb0292297c5bbc5 100644 (file)
@@ -64,6 +64,10 @@ int kernctl_track_pid(int fd, int pid);
 int kernctl_untrack_pid(int fd, int pid);
 int kernctl_list_tracker_pids(int fd);
 
+int kernctl_track_id(int fd, enum lttng_tracker_type tracker_type, int id);
+int kernctl_untrack_id(int fd, enum lttng_tracker_type tracker_type, int id);
+int kernctl_list_tracker_ids(int fd, enum lttng_tracker_type tracker_type);
+
 int kernctl_session_regenerate_metadata(int fd);
 int kernctl_session_regenerate_statedump(int fd);
 
index 070357cc6827fc19d820689960e50aa4c63a9dd7..8aebc1b8b0bf91d408a495043c5b681fb3182a75 100644 (file)
 #define LTTNG_KERNEL_SESSION_METADATA_REGEN    _IO(0xF6, 0x59)
 /* 0x5A and 0x5B are reserved for a future ABI-breaking cleanup. */
 #define LTTNG_KERNEL_SESSION_STATEDUMP         _IO(0xF6, 0x5C)
+#define LTTNG_KERNEL_SESSION_LIST_TRACKER_IDS  \
+       _IOR(0xF6, 0x5D, struct lttng_kernel_tracker_args)
+#define LTTNG_KERNEL_SESSION_TRACK_ID          \
+       _IOR(0xF6, 0x5E, struct lttng_kernel_tracker_args)
+#define LTTNG_KERNEL_SESSION_UNTRACK_ID                \
+       _IOR(0xF6, 0x5F, struct lttng_kernel_tracker_args)
 
 /* Channel FD ioctl */
 #define LTTNG_KERNEL_STREAM                    _IO(0xF6, 0x62)
index 8d87539a47ac25b05a8e86d239422a1af8a81dc2..55e7f0102a879f0ba66d3b39c0a3bf8e889c47a3 100644 (file)
@@ -157,4 +157,20 @@ struct lttng_kernel_filter_bytecode {
        char data[0];
 } LTTNG_PACKED;
 
+enum lttng_kernel_tracker_type {
+       LTTNG_KERNEL_TRACKER_UNKNOWN            = -1,
+
+       LTTNG_KERNEL_TRACKER_PID                = 0,
+       LTTNG_KERNEL_TRACKER_VPID               = 1,
+       LTTNG_KERNEL_TRACKER_UID                = 2,
+       LTTNG_KERNEL_TRACKER_VUID               = 3,
+       LTTNG_KERNEL_TRACKER_GID                = 4,
+       LTTNG_KERNEL_TRACKER_VGID               = 5,
+};
+
+struct lttng_kernel_tracker_args {
+       enum lttng_kernel_tracker_type type;
+       int32_t id;
+};
+
 #endif /* _LTTNG_KERNEL_H */
This page took 0.030341 seconds and 5 git commands to generate.