Fix: lttng_this_cpu_ptr wrapper for kernel 3.19+
[lttng-modules.git] / lttng-abi.c
index 6dc59aed5c58465380c49980646236de03a2f94d..381a73904dfe60e6e6d0a8bc66a0cecf5fd65bf8 100644 (file)
@@ -151,6 +151,13 @@ void lttng_abi_tracer_version(struct lttng_kernel_tracer_version *v)
        v->patchlevel = LTTNG_MODULES_PATCHLEVEL_VERSION;
 }
 
+static
+void lttng_abi_tracer_abi_version(struct lttng_kernel_tracer_abi_version *v)
+{
+       v->major = LTTNG_MODULES_ABI_MAJOR_VERSION;
+       v->minor = LTTNG_MODULES_ABI_MINOR_VERSION;
+}
+
 static
 long lttng_abi_add_context(struct file *file,
        struct lttng_kernel_context *context_param,
@@ -208,6 +215,8 @@ long lttng_abi_add_context(struct file *file,
  *             Returns a file descriptor listing available tracepoints
  *     LTTNG_KERNEL_WAIT_QUIESCENT
  *             Returns after all previously running probes have completed
+ *     LTTNG_KERNEL_TRACER_ABI_VERSION
+ *             Returns the LTTng kernel tracer ABI version
  *
  * The returned session will be deleted when its file descriptor is closed.
  */
@@ -241,7 +250,19 @@ long lttng_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
                        (struct lttng_kernel_tracer_version __user *) arg;
 
                lttng_abi_tracer_version(&version);
-               
+
+               if (copy_to_user(uversion, &version, sizeof(version)))
+                       return -EFAULT;
+               return 0;
+       }
+       case LTTNG_KERNEL_TRACER_ABI_VERSION:
+       {
+               struct lttng_kernel_tracer_abi_version version;
+               struct lttng_kernel_tracer_abi_version *uversion =
+                       (struct lttng_kernel_tracer_abi_version __user *) arg;
+
+               lttng_abi_tracer_abi_version(&version);
+
                if (copy_to_user(uversion, &version, sizeof(version)))
                        return -EFAULT;
                return 0;
@@ -249,6 +270,8 @@ long lttng_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
        case LTTNG_KERNEL_OLD_TRACEPOINT_LIST:
        case LTTNG_KERNEL_TRACEPOINT_LIST:
                return lttng_abi_tracepoint_list();
+       case LTTNG_KERNEL_SYSCALL_LIST:
+               return lttng_abi_syscall_list();
        case LTTNG_KERNEL_OLD_WAIT_QUIESCENT:
        case LTTNG_KERNEL_WAIT_QUIESCENT:
                synchronize_trace();
@@ -929,14 +952,15 @@ int lttng_abi_create_event(struct file *channel_file,
                if (ret)
                        goto fd_error;
                event_fd = 0;
-               if (event_param->u.syscall.disable) {
-                       ret = lttng_syscall_filter_disable(channel,
+               if (event_param->u.syscall.enable) {
+                       ret = lttng_syscall_filter_enable(channel,
                                event_param->name[0] == '\0' ?
                                        NULL : event_param->name);
                        if (ret)
                                goto fd_error;
+
                } else {
-                       ret = lttng_syscall_filter_enable(channel,
+                       ret = lttng_syscall_filter_disable(channel,
                                event_param->name[0] == '\0' ?
                                        NULL : event_param->name);
                        if (ret)
@@ -1130,6 +1154,9 @@ old_ctx_end:
        case LTTNG_KERNEL_OLD_DISABLE:
        case LTTNG_KERNEL_DISABLE:
                return lttng_channel_disable(channel);
+       case LTTNG_KERNEL_SYSCALL_MASK:
+               return lttng_channel_syscall_mask(channel,
+                       (struct lttng_kernel_syscall_mask __user *) arg);
        default:
                return -ENOIOCTLCMD;
        }
This page took 0.023667 seconds and 4 git commands to generate.