SoW-2019-0002: Dynamic Snapshot
[lttng-tools.git] / src / bin / lttng-sessiond / notification-thread-commands.h
index b8cb2779ffc97ec6f51d32cd80dbc3102feb262f..f0e857fae3f7d785bec815d26347154d971977a3 100644 (file)
@@ -1,18 +1,8 @@
 /*
- * Copyright (C) 2017 Jérémie Galarneau <jeremie.galarneau@efficios.com>
+ * Copyright (C) 2017 Jérémie Galarneau <jeremie.galarneau@efficios.com>
  *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License, version 2 only, as
- * published by the Free Software Foundation.
+ * SPDX-License-Identifier: GPL-2.0-only
  *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 51
- * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #ifndef NOTIFICATION_THREAD_COMMANDS_H
@@ -25,6 +15,7 @@
 #include "notification-thread-internal.h"
 #include "notification-thread-events.h"
 #include <common/waiter.h>
+#include <stdbool.h>
 
 struct notification_thread_data;
 struct lttng_trigger;
@@ -36,6 +27,10 @@ enum notification_thread_command_type {
        NOTIFICATION_COMMAND_TYPE_REMOVE_CHANNEL,
        NOTIFICATION_COMMAND_TYPE_SESSION_ROTATION_ONGOING,
        NOTIFICATION_COMMAND_TYPE_SESSION_ROTATION_COMPLETED,
+       NOTIFICATION_COMMAND_TYPE_ADD_APPLICATION,
+       NOTIFICATION_COMMAND_TYPE_REMOVE_APPLICATION,
+       NOTIFICATION_COMMAND_TYPE_GET_TOKENS,
+       NOTIFICATION_COMMAND_TYPE_LIST_TRIGGERS,
        NOTIFICATION_COMMAND_TYPE_QUIT,
 };
 
@@ -72,11 +67,32 @@ struct notification_thread_command {
                        uint64_t trace_archive_chunk_id;
                        struct lttng_trace_archive_location *location;
                } session_rotation;
+               /* Add/Remove application */
+               struct {
+                       int read_side_trigger_event_application_pipe;
+               } application;
+               /* List triggers */
+               struct {
+                       /* Credential */
+                       uid_t uid;
+                       gid_t gid;
+               } list_triggers;
+
        } parameters;
 
+       union {
+               struct {
+                       struct lttng_triggers *triggers;
+               } get_tokens;
+               struct {
+                       struct lttng_triggers *triggers;
+               } list_triggers;
+       } reply;
+
        /* lttng_waiter on which to wait for command reply (optional). */
        struct lttng_waiter reply_waiter;
        enum lttng_error_code reply_code;
+       bool is_async;
 };
 
 enum lttng_error_code notification_thread_command_register_trigger(
@@ -109,6 +125,28 @@ enum lttng_error_code notification_thread_command_session_rotation_completed(
                uint64_t trace_archive_chunk_id,
                struct lttng_trace_archive_location *location);
 
+enum lttng_error_code notification_thread_command_add_application(
+               struct notification_thread_handle *handle,
+               struct lttng_pipe *trigger_event_application_pipe);
+
+enum lttng_error_code notification_thread_command_remove_application(
+               struct notification_thread_handle *handle,
+               struct lttng_pipe *trigger_event_application_pipe);
+
+/* Must hold the notification_trigger_tokens_ht_lock to protect against
+ * insertion removal of triggers TODO: is it the case even with refcounting? */
+/* todo find a better way....*/
+enum lttng_error_code notification_thread_command_get_tokens(
+               struct notification_thread_handle *handle,
+               struct lttng_triggers **triggers);
+
+/* TODO: for now we borrow with no refcount the trigger. THIS IS DANGEROUS */
+enum lttng_error_code notification_thread_command_list_triggers(
+               struct notification_thread_handle *handle,
+               uid_t uid,
+               gid_t gid,
+               struct lttng_triggers **triggers);
+
 void notification_thread_command_quit(
                struct notification_thread_handle *handle);
 
This page took 0.025762 seconds and 5 git commands to generate.