Fix: build failure with -fno-common
[lttng-tools.git] / src / common / mi-lttng.h
index deab4e41ca786326f6437cc1761c3d6fbff3b29d..7cac7f305805531da4089f66a8e6fcb112a95bd6 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * Copyright (C) 2014 - Jonathan Rajotte <jonathan.r.julien@gmail.com>
  *                    - Olivier Cotte <olivier.cotte@polymtl.ca>
+ * Copyright (C) 2016 - 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
@@ -23,7 +24,7 @@
 
 #include <common/error.h>
 #include <common/macros.h>
-#include <common/config/config.h>
+#include <common/config/session-config.h>
 #include <lttng/lttng.h>
 
 /* Don't want to reference snapshot-internal.h here */
@@ -39,20 +40,19 @@ struct mi_writer {
  * Version information for the machine interface.
  */
 struct mi_lttng_version {
-       char version[NAME_MAX]; /* Version number of package */
+       char version[LTTNG_NAME_MAX]; /* Version number of package */
        uint32_t version_major; /* LTTng-Tools major version number */
        uint32_t version_minor; /* LTTng-Tools minor version number */
        uint32_t version_patchlevel; /* LTTng-Tools patchlevel version number */
-       char version_commit[NAME_MAX]; /* Commit hash of the current version */
-       char version_name[NAME_MAX];
-       char package_url[NAME_MAX]; /* Define to the home page for this package. */
+       char version_commit[LTTNG_NAME_MAX]; /* Commit hash of the current version */
+       char version_name[LTTNG_NAME_MAX];
+       char package_url[LTTNG_NAME_MAX]; /* Define to the home page for this package. */
 };
 
 /* Strings related to command */
 extern const char * const mi_lttng_element_command;
 extern const char * const mi_lttng_element_command_action;
 extern const char * const mi_lttng_element_command_add_context;
-extern const char * const mi_lttng_element_command_calibrate;
 extern const char * const mi_lttng_element_command_create;
 extern const char * const mi_lttng_element_command_destroy;
 extern const char * const mi_lttng_element_command_disable_channel;
@@ -61,6 +61,10 @@ extern const char * const mi_lttng_element_command_enable_channels;
 extern const char * const mi_lttng_element_command_enable_event;
 extern const char * const mi_lttng_element_command_list;
 extern const char * const mi_lttng_element_command_load;
+extern const char * const mi_lttng_element_command_metadata;
+extern const char * const mi_lttng_element_command_metadata_action;
+extern const char * const mi_lttng_element_command_regenerate;
+extern const char * const mi_lttng_element_command_regenerate_action;
 extern const char * const mi_lttng_element_command_name;
 extern const char * const mi_lttng_element_command_output;
 extern const char * const mi_lttng_element_command_save;
@@ -76,6 +80,10 @@ extern const char * const mi_lttng_element_command_success;
 extern const char * const mi_lttng_element_command_track;
 extern const char * const mi_lttng_element_command_untrack;
 extern const char * const mi_lttng_element_command_version;
+extern const char * const mi_lttng_element_command_rotate;
+extern const char * const mi_lttng_element_command_enable_rotation;
+extern const char * const mi_lttng_element_command_disable_rotation;
+extern const char * const mi_lttng_element_command_clear;
 
 /* Strings related to version command */
 extern const char * const mi_lttng_element_version;
@@ -92,17 +100,10 @@ extern const char * const mi_lttng_element_version_web;
 extern const char * const mi_lttng_element_event_field;
 extern const char * const mi_lttng_element_event_fields;
 
-/* String related to lttng_event_context */
-extern const char * const mi_lttng_context_type_perf_counter;
-extern const char * const mi_lttng_context_type_perf_cpu_counter;
-extern const char * const mi_lttng_context_type_perf_thread_counter;
-
 /* String related to lttng_event_perf_counter_ctx */
 extern const char * const mi_lttng_element_perf_counter_context;
 
 /* Strings related to pid */
-extern const char * const mi_lttng_element_pids;
-extern const char * const mi_lttng_element_pid;
 extern const char * const mi_lttng_element_pid_id;
 
 /* Strings related to save command */
@@ -110,6 +111,8 @@ extern const char * const mi_lttng_element_save;
 
 /* Strings related to load command */
 extern const char * const mi_lttng_element_load;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_load_overrides;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_load_override_url;
 
 /* General element of mi_lttng */
 extern const char * const mi_lttng_element_empty;
@@ -175,10 +178,6 @@ extern const char * const mi_lttng_loglevel_type_range;
 extern const char * const mi_lttng_loglevel_type_single;
 extern const char * const mi_lttng_loglevel_type_unknown;
 
-/* Sting related to lttng_calibrate */
-extern const char * const mi_lttng_element_calibrate;
-extern const char * const mi_lttng_element_calibrate_function;
-
 /* String related to a lttng_snapshot */
 extern const char * const mi_lttng_element_snapshot_ctrl_url;
 extern const char * const mi_lttng_element_snapshot_data_url;
@@ -187,13 +186,54 @@ extern const char * const mi_lttng_element_snapshot_n_ptr;
 extern const char * const mi_lttng_element_snapshot_session_name;
 extern const char * const mi_lttng_element_snapshots;
 
+/* String related to track/untrack command */
+extern const char * const mi_lttng_element_track_untrack_all_wildcard;
+
+LTTNG_HIDDEN extern const char * const mi_lttng_element_session_name;
+
+/* String related to rotate command */
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotate_status;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_schedule;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_schedules;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_schedule_periodic;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_schedule_periodic_time_us;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_schedule_size_threshold;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_schedule_size_threshold_bytes;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_schedule_result;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_schedule_results;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_state;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_location;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_location_local;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_location_local_absolute_path;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_location_relay;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_location_relay_host;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_location_relay_control_port;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_location_relay_data_port;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_location_relay_protocol;
+LTTNG_HIDDEN extern const char * const mi_lttng_element_rotation_location_relay_relative_path;
+
+/* String related to enum lttng_rotation_state */
+LTTNG_HIDDEN extern const char * const mi_lttng_rotation_state_str_ongoing;
+LTTNG_HIDDEN extern const char * const mi_lttng_rotation_state_str_completed;
+LTTNG_HIDDEN extern const char * const mi_lttng_rotation_state_str_expired;
+LTTNG_HIDDEN extern const char * const mi_lttng_rotation_state_str_error;
+
+/* String related to enum lttng_trace_archive_location_relay_protocol_type */
+LTTNG_HIDDEN extern const char * const mi_lttng_rotation_location_relay_protocol_str_tcp;
+
+/* String related to add-context command */
+LTTNG_HIDDEN extern const char * const mi_lttng_element_context_symbol;
+
 /* Utility string function  */
 const char *mi_lttng_loglevel_string(int value, enum lttng_domain_type domain);
 const char *mi_lttng_logleveltype_string(enum lttng_loglevel_type value);
 const char *mi_lttng_eventfieldtype_string(enum lttng_event_field_type value);
 const char *mi_lttng_domaintype_string(enum lttng_domain_type value);
 const char *mi_lttng_buffertype_string(enum lttng_buffer_type value);
-const char *mi_lttng_calibratetype_string(enum lttng_calibrate_type val);
+const char *mi_lttng_rotation_state_string(enum lttng_rotation_state value);
+const char *mi_lttng_trace_archive_location_relay_protocol_type_string(
+               enum lttng_trace_archive_location_relay_protocol_type value);
 
 /*
  * Create an instance of a machine interface writer.
@@ -555,6 +595,29 @@ int mi_lttng_event_field(struct mi_writer *writer,
  */
 int mi_lttng_event_fields_open(struct mi_writer *writer);
 
+/*
+ * Machine interface: open a trackers element.
+ *
+ * writer An instance of a machine interface writer.
+ *
+ * Returns zero if the element's value could be written.
+ * Negative values indicate an error.
+ */
+int mi_lttng_trackers_open(struct mi_writer *writer);
+
+/*
+ * Machine interface: open a id tracker element.
+ *
+ * writer An instance of a machine interface writer.
+ *
+ * Returns zero if the element's value could be written.
+ * Negative values indicate an error.
+ *
+ * Note: A targets element is also opened for each tracker definition
+ */
+int mi_lttng_id_tracker_open(
+               struct mi_writer *writer, enum lttng_tracker_type tracker_type);
+
 /*
  * Machine interface: open a PIDs element.
  *
@@ -566,7 +629,17 @@ int mi_lttng_event_fields_open(struct mi_writer *writer);
 int mi_lttng_pids_open(struct mi_writer *writer);
 
 /*
- * Machine interface of a PID.
+ * Machine interface: open a processes element.
+ *
+ * writer An instance of a machine interface writer.
+ *
+ * Returns zero if the element's value could be written.
+ * Negative values indicate an error.
+ */
+int mi_lttng_processes_open(struct mi_writer *writer);
+
+/*
+ * Machine interface of a Process.
  *
  * writer An instance of a machine interface writer.
  * pid A PID.
@@ -580,21 +653,49 @@ int mi_lttng_pids_open(struct mi_writer *writer);
  * Returns zero if the element's value could be written.
  * Negative values indicate an error.
  */
-int mi_lttng_pid(struct mi_writer *writer, pid_t pid , const char *cmdline,
+int mi_lttng_process(struct mi_writer *writer, pid_t pid , const char *name,
                int is_open);
 
 /*
- * Machine interface for struct lttng_calibrate.
+ * TODO: move pid of lttng list -u to process semantic on mi api bump
+ * Machine interface of a Process.
  *
  * writer An instance of a machine interface writer.
+ * pid A PID.
  *
- * calibrate A lttng_calibrate instance.
+ * is_open Defines whether or not the session element shall be closed.
+ *         This should be used carefully and the client
+ *         must close the pid element.
+ *         Use case: nested addition information on a domain
+ *                  ex: channel event.
  *
  * Returns zero if the element's value could be written.
  * Negative values indicate an error.
  */
-int mi_lttng_calibrate(struct mi_writer *writer,
-               struct lttng_calibrate *calibrate);
+int mi_lttng_pid(struct mi_writer *writer, pid_t pid , const char *name,
+               int is_open);
+/*
+ * Machine interface: open a targets element.
+ *
+ * writer An instance of a machine interface writer.
+ *
+ * Returns zero if the element's value could be written.
+ * Negative values indicate an error.
+ */
+int mi_lttng_targets_open(struct mi_writer *writer);
+
+/*
+ * Machine interface for track/untrack an id_target
+ *
+ * writer An instance of a machine interface writer.
+ *
+ * Returns zero if the element's value could be written.
+ * Negative values indicate an error.
+ */
+int mi_lttng_id_target(struct mi_writer *writer,
+               enum lttng_tracker_type tracker_type,
+               const struct lttng_tracker_id *id,
+               int is_open);
 
 /*
  * Machine interface of a context.
@@ -738,4 +839,67 @@ int mi_lttng_snapshot_record(struct mi_writer *writer,
                const char *current_session_name, const char *url,
                const char *cmdline_ctrl_url, const char *cmdline_data_url);
 
+/*
+ * Machine interface representation of a session rotation schedule.
+ *
+ * The machine interface serializes the provided schedule as one of the choices
+ * from 'rotation_schedule_type'.
+ *
+ * writer: An instance of a machine interface writer.
+ *
+ * schedule: An lttng rotation schedule descriptor object.
+ *
+ * Returns zero if the element's value could be written.
+ * Negative values indicate an error.
+ */
+int mi_lttng_rotation_schedule(struct mi_writer *writer,
+               const struct lttng_rotation_schedule *schedule);
+
+/*
+ * Machine interface of a session rotation schedule result.
+ * This is an element that is part of the output of the enable-rotation and
+ * disable-rotation commands.
+ *
+ * The machine interface provides the following information:
+ * - schedule: the session rotation schedule descriptor.
+ * - success: whether the sub-command succeeded.
+ *
+ * writer: An instance of a machine interface writer.
+ *
+ * schedule: An lttng rotation schedule descriptor object.
+ *
+ * success: Whether the sub-command suceeded.
+ *
+ * Returns zero if the element's value could be written.
+ * Negative values indicate an error.
+ */
+int mi_lttng_rotation_schedule_result(struct mi_writer *writer,
+               const struct lttng_rotation_schedule *schedule,
+               bool success);
+
+/*
+ * Machine interface of a session rotation result.
+ * This is an element that is part of the output of the rotate command.
+ *
+ * The machine interface provides the following information:
+ * - session_name: the session to be rotated.
+ * - state: the session rotation state.
+ * - location: the location of the completed chunk archive.
+ *
+ * writer: An instance of a machine interface writer.
+ *
+ * session_name: The session to which the rotate command applies.
+ *
+ * location: A location descriptor object.
+ *
+ * success: Whether the sub-command suceeded.
+ *
+ * Returns zero if the element's value could be written.
+ * Negative values indicate an error.
+ */
+int mi_lttng_rotate(struct mi_writer *writer,
+               const char *session_name,
+               enum lttng_rotation_state rotation_state,
+               const struct lttng_trace_archive_location *location);
+
 #endif /* _MI_LTTNG_H */
This page took 0.028225 seconds and 5 git commands to generate.