X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fagent.h;h=b0a4fa863c3e0fca98a688bdd98d840cd25d760b;hp=b737b166a567972970282094f46dc3deef7d81f1;hb=HEAD;hpb=2106efa08d11229241a114d1d71635a02006690e diff --git a/src/bin/lttng-sessiond/agent.h b/src/bin/lttng-sessiond/agent.h deleted file mode 100644 index b737b166a..000000000 --- a/src/bin/lttng-sessiond/agent.h +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright (C) 2013 - David Goulet - * - * 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 LTTNG_SESSIOND_AGENT_H -#define LTTNG_SESSIOND_AGENT_H - -#define _GNU_SOURCE -#include - -#include -#include - -/* Agent protocol version that is verified during the agent registration. */ -#define AGENT_MAJOR_VERSION 1 -#define AGENT_MINOR_VERSION 0 - -/* - * Hash table that contains the agent app created upon registration indexed by - * socket. Global to the session daemon. - */ -extern struct lttng_ht *agent_apps_ht_by_sock; - -struct agent_ht_key { - const char *name; - int loglevel_value; -}; - -/* - * Registration message payload from an agent application. The PID is used to - * find back the corresponding UST app object so both socket can be linked. - */ -struct agent_register_msg { - /* This maps to a lttng_domain_type. */ - uint32_t domain; - uint32_t pid; - uint32_t major_version; - uint32_t minor_version; -}; - -/* - * Agent application object created after a successful registration. This - * object is linked to its associated UST app by their PID through hash table - * lookups. - */ -struct agent_app { - /* - * PID sent during registration of an agent application. - */ - pid_t pid; - - /* Domain of the application. */ - enum lttng_domain_type domain; - - /* - * AGENT TCP socket that was created upon registration. - */ - struct lttcomm_sock *sock; - - /* Initialized with the AGENT sock value. */ - struct lttng_ht_node_ulong node; -}; - -/* - * Agent event representation. - */ -struct agent_event { - /* Name of the event. */ - char name[LTTNG_SYMBOL_NAME_LEN]; - int loglevel_value; - enum lttng_loglevel_type loglevel_type; - - /* - * Tells if the event is enabled or not on the agent. - */ - unsigned int enabled:1; - - /* Hash table node of the agent domain object. */ - struct lttng_ht_node_str node; - - /* Filter associated with the event. NULL if none. */ - struct lttng_filter_bytecode *filter; - char *filter_expression; - struct lttng_event_exclusion *exclusion; -}; - -/* - * Agent object containing events enabled/disabled for it. - */ -struct agent { - /* - * This indicates if that domain is being used meaning if at least one - * event has been at some point in time added to it. This is used so when - * listing domains for a session, we can tell or not if the agent is - * actually enabled. - */ - unsigned int being_used:1; - - /* What domain this agent is. */ - enum lttng_domain_type domain; - - /* Contains event indexed by name. */ - struct lttng_ht *events; - - /* Node used for the hash table indexed by domain type. */ - struct lttng_ht_node_u64 node; -}; - -/* Allocate agent apps hash table */ -int agent_app_ht_alloc(void); -/* Clean-up agent apps hash table */ -void agent_app_ht_clean(void); - -/* Initialize an already allocated agent domain. */ -int agent_init(struct agent *agt); -struct agent *agent_create(enum lttng_domain_type domain); -void agent_destroy(struct agent *agt); -void agent_add(struct agent *agt, struct lttng_ht *ht); - -/* Agent event API. */ -struct agent_event *agent_create_event(const char *name, int loglevel, - enum lttng_loglevel_type loglevel_type, - struct lttng_filter_bytecode *filter, - char *filter_expression); -void agent_add_event(struct agent_event *event, struct agent *agt); - -struct agent_event *agent_find_event(const char *name, int loglevel, - struct agent *agt); -struct agent_event *agent_find_event_by_name(const char *name, - struct agent *agt); -void agent_delete_event(struct agent_event *event, struct agent *agt); -void agent_destroy_event(struct agent_event *event); - -/* Agent app API. */ -struct agent_app *agent_create_app(pid_t pid, enum lttng_domain_type domain, - struct lttcomm_sock *sock); -void agent_add_app(struct agent_app *app); -void agent_delete_app(struct agent_app *app); -struct agent_app *agent_find_app_by_sock(int sock); -void agent_destroy_app(struct agent_app *app); -void agent_destroy_app_by_sock(int sock); -int agent_send_registration_done(struct agent_app *app); - -/* Agent action API */ -int agent_enable_event(struct agent_event *event, - enum lttng_domain_type domain); -int agent_disable_event(struct agent_event *event, - enum lttng_domain_type domain); -void agent_update(struct agent *agt, int sock); -int agent_list_events(struct lttng_event **events, - enum lttng_domain_type domain); - -#endif /* LTTNG_SESSIOND_AGENT_H */