+/*
+ * lttng_kernel_open_metadata
+ *
+ * Open metadata in the kernel tracer.
+ */
+int lttng_kernel_open_metadata(void)
+{
+ return ask_sessiond(KERNEL_OPEN_METADATA, NULL);
+}
+
+/*
+ * lttng_kernel_create_stream
+ *
+ * Create stream in the kernel tracer.
+ */
+int lttng_kernel_create_stream(void)
+{
+ return ask_sessiond(KERNEL_CREATE_STREAM, NULL);
+}
+
+/*
+ * lttng_kernel_list_events
+ *
+ * List all available events in the kernel.
+ *
+ * Return the size (bytes) of the list and set the event_list array.
+ * On error, return negative value.
+ */
+int lttng_kernel_list_events(char **event_list)
+{
+ return ask_sessiond(KERNEL_LIST_EVENTS, (void **) event_list);
+}
+
+/*
+ * lttng_kernel_start_tracing
+ *
+ * Start kernel tracing.
+ */
+int lttng_kernel_start_tracing(void)
+{
+ return ask_sessiond(KERNEL_START_TRACE, NULL);
+}
+
+/*
+ * lttng_kernel_stop_tracing
+ *
+ * Stop kernel tracing.
+ */
+int lttng_kernel_stop_tracing(void)
+{
+ return ask_sessiond(KERNEL_STOP_TRACE, NULL);
+}
+
+/*
+ * END KERNEL CONTROL
+ */
+
+/*
+ * lttng_get_readable_code
+ *
+ * Return a human readable string of code
+ */
+const char *lttng_get_readable_code(int code)
+{
+ if (code > -LTTCOMM_OK) {
+ return "Ended with errors";