X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fnotification-thread-commands.h;fp=src%2Fbin%2Flttng-sessiond%2Fnotification-thread-commands.h;h=fc7e90bcb95ecf319c89e6bd8979602eddaac0ef;hp=0000000000000000000000000000000000000000;hb=ab0ee2ca29394fa28284b94cc3c598960660404f;hpb=427392b43cfe21d440808494f87564fc0224dd70 diff --git a/src/bin/lttng-sessiond/notification-thread-commands.h b/src/bin/lttng-sessiond/notification-thread-commands.h new file mode 100644 index 000000000..fc7e90bcb --- /dev/null +++ b/src/bin/lttng-sessiond/notification-thread-commands.h @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2017 - Jérémie Galarneau + * + * 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. + * + * 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 +#define NOTIFICATION_THREAD_COMMANDS_H + +#include +#include +#include +#include "notification-thread.h" + +struct notification_thread_data; +struct lttng_trigger; + +enum notification_thread_command_type { + NOTIFICATION_COMMAND_TYPE_REGISTER_TRIGGER, + NOTIFICATION_COMMAND_TYPE_UNREGISTER_TRIGGER, + NOTIFICATION_COMMAND_TYPE_ADD_CHANNEL, + NOTIFICATION_COMMAND_TYPE_REMOVE_CHANNEL, + NOTIFICATION_COMMAND_TYPE_QUIT, +}; + +struct channel_key { + uint64_t key; + enum lttng_domain_type domain; +}; + +struct channel_info { + struct channel_key key; + char *session_name; + uid_t uid; + gid_t gid; + char *channel_name; + uint64_t capacity; + struct cds_lfht_node channels_ht_node; +}; + +struct notification_thread_command { + struct cds_list_head cmd_list_node; + + enum notification_thread_command_type type; + union { + /* Register/Unregister trigger. */ + struct lttng_trigger *trigger; + /* Add channel. */ + struct channel_info add_channel; + /* Remove channel. */ + struct { + uint64_t key; + enum lttng_domain_type domain; + } remove_channel; + } parameters; + + /* Futex on which to wait for command reply (optional). */ + int32_t reply_futex; + enum lttng_error_code reply_code; +}; + +enum lttng_error_code notification_thread_command_register_trigger( + struct notification_thread_handle *handle, + struct lttng_trigger *trigger); + +enum lttng_error_code notification_thread_command_unregister_trigger( + struct notification_thread_handle *handle, + struct lttng_trigger *trigger); + +enum lttng_error_code notification_thread_command_add_channel( + struct notification_thread_handle *handle, + char *session_name, uid_t uid, gid_t gid, + char *channel_name, uint64_t key, + enum lttng_domain_type domain, uint64_t capacity); + +enum lttng_error_code notification_thread_command_remove_channel( + struct notification_thread_handle *handle, + uint64_t key, enum lttng_domain_type domain); + +void notification_thread_command_quit( + struct notification_thread_handle *handle); + +#endif /* NOTIFICATION_THREAD_COMMANDS_H */