Babeltrace 2 C API  2.0.4
Open-source trace manipulation framework
graph.h
1 #ifndef BABELTRACE2_GRAPH_GRAPH_H
2 #define BABELTRACE2_GRAPH_GRAPH_H
3 
4 /*
5  * Copyright (c) 2010-2019 EfficiOS Inc. and Linux Foundation
6  *
7  * Permission is hereby granted, free of charge, to any person obtaining a copy
8  * of this software and associated documentation files (the "Software"), to deal
9  * in the Software without restriction, including without limitation the rights
10  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11  * copies of the Software, and to permit persons to whom the Software is
12  * furnished to do so, subject to the following conditions:
13  *
14  * The above copyright notice and this permission notice shall be included in
15  * all copies or substantial portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23  * SOFTWARE.
24  */
25 
26 #ifndef __BT_IN_BABELTRACE_H
27 # error "Please include <babeltrace2/babeltrace.h> instead."
28 #endif
29 
30 #include <babeltrace2/types.h>
31 #include <babeltrace2/logging.h>
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
577 extern bt_graph *bt_graph_create(uint64_t mip_version);
578 
596  BT_GRAPH_ADD_COMPONENT_STATUS_OK = __BT_FUNC_STATUS_OK,
597 
602  BT_GRAPH_ADD_COMPONENT_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
603 
608  BT_GRAPH_ADD_COMPONENT_STATUS_ERROR = __BT_FUNC_STATUS_ERROR,
610 
618  const bt_component_class_source *component_class,
619  const char *name, const bt_value *params,
620  bt_logging_level logging_level,
621  const bt_component_source **component);
622 
698  bt_graph *graph,
699  const bt_component_class_source *component_class,
700  const char *name, const bt_value *params,
701  void *initialize_method_data, bt_logging_level logging_level,
702  const bt_component_source **component);
703 
711  const bt_component_class_filter *component_class,
712  const char *name, const bt_value *params,
713  bt_logging_level logging_level,
714  const bt_component_filter **component);
715 
791  bt_graph *graph,
792  const bt_component_class_filter *component_class,
793  const char *name, const bt_value *params,
794  void *initialize_method_data, bt_logging_level logging_level,
795  const bt_component_filter **component);
796 
804  bt_graph *graph, const bt_component_class_sink *component_class,
805  const char *name, const bt_value *params,
806  bt_logging_level logging_level,
807  const bt_component_sink **component);
808 
884  bt_graph *graph, const bt_component_class_sink *component_class,
885  const char *name, const bt_value *params,
886  void *initialize_method_data, bt_logging_level logging_level,
887  const bt_component_sink **component);
888 
907 
913 
920 
963  bt_message_iterator *message_iterator,
964  void *user_data);
965 
977 
983 
989 
995 
1002 
1059  bt_message_iterator *message_iterator,
1060  void *user_data);
1061 
1084 typedef void (*bt_graph_simple_sink_component_finalize_func)(void *user_data);
1085 
1143 bt_graph_add_simple_sink_component(bt_graph *graph, const char *name,
1147  void *user_data, const bt_component_sink **component);
1148 
1165  BT_GRAPH_CONNECT_PORTS_STATUS_OK = __BT_FUNC_STATUS_OK,
1166 
1171  BT_GRAPH_CONNECT_PORTS_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
1172 
1177  BT_GRAPH_CONNECT_PORTS_STATUS_ERROR = __BT_FUNC_STATUS_ERROR,
1179 
1234  const bt_port_output *upstream_port,
1235  const bt_port_input *downstream_port,
1236  const bt_connection **connection);
1237 
1249 typedef enum bt_graph_run_status {
1254  BT_GRAPH_RUN_STATUS_OK = __BT_FUNC_STATUS_OK,
1255 
1260  BT_GRAPH_RUN_STATUS_AGAIN = __BT_FUNC_STATUS_AGAIN,
1261 
1266  BT_GRAPH_RUN_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
1267 
1272  BT_GRAPH_RUN_STATUS_ERROR = __BT_FUNC_STATUS_ERROR,
1274 
1353 
1363  BT_GRAPH_RUN_ONCE_STATUS_OK = __BT_FUNC_STATUS_OK,
1364 
1369  BT_GRAPH_RUN_ONCE_STATUS_END = __BT_FUNC_STATUS_END,
1370 
1375  BT_GRAPH_RUN_ONCE_STATUS_AGAIN = __BT_FUNC_STATUS_AGAIN,
1376 
1381  BT_GRAPH_RUN_ONCE_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
1382 
1387  BT_GRAPH_RUN_ONCE_STATUS_ERROR = __BT_FUNC_STATUS_ERROR,
1389 
1461 
1478  BT_GRAPH_ADD_INTERRUPTER_STATUS_OK = __BT_FUNC_STATUS_OK,
1479 
1484  BT_GRAPH_ADD_INTERRUPTER_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
1486 
1534  const bt_interrupter *interrupter);
1535 
1557 
1576  BT_GRAPH_ADD_LISTENER_STATUS_OK = __BT_FUNC_STATUS_OK,
1577 
1582  BT_GRAPH_ADD_LISTENER_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
1584 
1596  BT_GRAPH_LISTENER_FUNC_STATUS_OK = __BT_FUNC_STATUS_OK,
1597 
1602  BT_GRAPH_LISTENER_FUNC_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
1603 
1608  BT_GRAPH_LISTENER_FUNC_STATUS_ERROR = __BT_FUNC_STATUS_ERROR,
1610 
1646  const bt_component_filter *component,
1647  const bt_port_input *port, void *user_data);
1648 
1683  bt_graph *graph,
1685  void *user_data, bt_listener_id *listener_id);
1686 
1722  const bt_component_sink *component,
1723  const bt_port_input *port, void *user_data);
1724 
1759  bt_graph *graph,
1761  void *user_data, bt_listener_id *listener_id);
1762 
1798  const bt_component_source *component,
1799  const bt_port_output *port, void *user_data);
1800 
1835  bt_graph *graph,
1837  void *user_data, bt_listener_id *listener_id);
1838 
1874  const bt_component_filter *component,
1875  const bt_port_output *port, void *user_data);
1876 
1911  bt_graph *graph,
1913  void *user_data, bt_listener_id *listener_id);
1914 
1937 extern void bt_graph_get_ref(const bt_graph *graph);
1938 
1954 extern void bt_graph_put_ref(const bt_graph *graph);
1955 
1970 #define BT_GRAPH_PUT_REF_AND_RESET(_graph) \
1971  do { \
1972  bt_graph_put_ref(_graph); \
1973  (_graph) = NULL; \
1974  } while (0)
1975 
2002 #define BT_GRAPH_MOVE_REF(_dst, _src) \
2003  do { \
2004  bt_graph_put_ref(_dst); \
2005  (_dst) = (_src); \
2006  (_src) = NULL; \
2007  } while (0)
2008 
2013 #ifdef __cplusplus
2014 }
2015 #endif
2016 
2017 #endif /* BABELTRACE2_GRAPH_GRAPH_H */
bt_graph_listener_func_status(* bt_graph_sink_component_input_port_added_listener_func)(const bt_component_sink *component, const bt_port_input *port, void *user_data)
User function for bt_graph_add_sink_component_input_port_added_listener().
Definition: graph.h:1721
bt_graph_add_component_status bt_graph_add_source_component(bt_graph *graph, const bt_component_class_source *component_class, const char *name, const bt_value *params, bt_logging_level logging_level, const bt_component_source **component)
Alias of bt_graph_add_source_component_with_initialize_method_data() with the initialize_method_data ...
Out of memory.
Definition: graph.h:602
struct bt_component_class_source bt_component_class_source
Source component class.
Definition: types.h:42
Success.
Definition: graph.h:1596
struct bt_component_sink bt_component_sink
Sink component.
Definition: types.h:45
bt_interrupter * bt_graph_borrow_default_interrupter(bt_graph *graph)
Borrows the default interrupter from the trace processing graph graph.
bt_graph_add_component_status bt_graph_add_filter_component(bt_graph *graph, const bt_component_class_filter *component_class, const char *name, const bt_value *params, bt_logging_level logging_level, const bt_component_filter **component)
Alias of bt_graph_add_filter_component_with_initialize_method_data() with the initialize_method_data ...
struct bt_message_iterator bt_message_iterator
Message iterator.
Definition: types.h:72
bt_graph_add_listener_status bt_graph_add_source_component_output_port_added_listener(bt_graph *graph, bt_graph_source_component_output_port_added_listener_func user_func, void *user_data, bt_listener_id *listener_id)
Adds a "source component output port added" listener to the trace processing graph graph...
Try again.
Definition: graph.h:1260
struct bt_port_input bt_port_input
Input port.
Definition: types.h:80
struct bt_component_source bt_component_source
Source component.
Definition: types.h:46
struct bt_component_class_filter bt_component_class_filter
Filter component class.
Definition: types.h:40
Success.
Definition: graph.h:1576
struct bt_port_output bt_port_output
Output port.
Definition: types.h:81
bt_graph_add_interrupter_status
Status codes for bt_graph_add_interrupter().
Definition: graph.h:1473
bt_graph_simple_sink_component_consume_func_status(* bt_graph_simple_sink_component_consume_func)(bt_message_iterator *message_iterator, void *user_data)
User consuming function for bt_graph_add_simple_sink_component().
Definition: graph.h:1058
bt_graph_connect_ports_status
Status codes for bt_graph_connect_ports().
Definition: graph.h:1160
All sink components are finished processing.
Definition: graph.h:1369
Success.
Definition: graph.h:596
bt_graph_run_status
Status codes for bt_graph_run().
Definition: graph.h:1249
bt_graph_simple_sink_component_consume_func_status
Status codes for the bt_graph_simple_sink_component_consume_func type.
Definition: graph.h:971
Try again.
Definition: graph.h:1375
bt_graph_add_component_status bt_graph_add_filter_component_with_initialize_method_data(bt_graph *graph, const bt_component_class_filter *component_class, const char *name, const bt_value *params, void *initialize_method_data, bt_logging_level logging_level, const bt_component_filter **component)
Creates a filter component from the class component_class with the initialization parameters params...
bt_graph_add_listener_status
Status codes for the bt_graph_add_*_component_*_port_added_listener() functions.
Definition: graph.h:1571
Success.
Definition: graph.h:1165
bt_graph_simple_sink_component_initialize_func_status
Status codes for the bt_graph_simple_sink_component_initialize_func type.
Definition: graph.h:901
struct bt_component_filter bt_component_filter
Filter component.
Definition: types.h:44
bt_graph_add_listener_status bt_graph_add_filter_component_output_port_added_listener(bt_graph *graph, bt_graph_filter_component_output_port_added_listener_func user_func, void *user_data, bt_listener_id *listener_id)
Adds a "filter component output port added" listener to the trace processing graph graph...
Other error.
Definition: graph.h:1272
bt_graph * bt_graph_create(uint64_t mip_version)
Creates a default, empty trace processing graph honouring version mip_version of the Message Intercha...
Other error.
Definition: graph.h:608
bt_graph_listener_func_status
Status codes for the bt_graph_*_component_*_port_added_listener_func() types.
Definition: graph.h:1591
bt_graph_add_component_status bt_graph_add_source_component_with_initialize_method_data(bt_graph *graph, const bt_component_class_source *component_class, const char *name, const bt_value *params, void *initialize_method_data, bt_logging_level logging_level, const bt_component_source **component)
Creates a source component from the class component_class with the initialization parameters params...
struct bt_interrupter bt_interrupter
Interrupter.
Definition: types.h:70
bt_graph_add_component_status bt_graph_add_sink_component_with_initialize_method_data(bt_graph *graph, const bt_component_class_sink *component_class, const char *name, const bt_value *params, void *initialize_method_data, bt_logging_level logging_level, const bt_component_sink **component)
Creates a sink component from the class component_class with the initialization parameters params...
Other error.
Definition: graph.h:1387
Success.
Definition: graph.h:1254
bt_graph_connect_ports_status bt_graph_connect_ports(bt_graph *graph, const bt_port_output *upstream_port, const bt_port_input *downstream_port, const bt_connection **connection)
Connects the output port upstream_port to the input port downstream_port within the trace processing ...
bt_graph_listener_func_status(* bt_graph_source_component_output_port_added_listener_func)(const bt_component_source *component, const bt_port_output *port, void *user_data)
User function for bt_graph_add_source_component_output_port_added_listener().
Definition: graph.h:1797
bt_graph_run_status bt_graph_run(bt_graph *graph)
Runs the trace processing graph graph, calling each sink component's consuming method in a round robi...
struct bt_value bt_value
Value.
Definition: types.h:107
bt_logging_level
Logging level enumerators.
Definition: logging.h:110
bt_graph_listener_func_status(* bt_graph_filter_component_output_port_added_listener_func)(const bt_component_filter *component, const bt_port_output *port, void *user_data)
User function for bt_graph_add_filter_component_output_port_added_listener().
Definition: graph.h:1873
Out of memory.
Definition: graph.h:1602
struct bt_component_class_sink bt_component_class_sink
Sink component class.
Definition: types.h:41
void bt_graph_put_ref(const bt_graph *graph)
Decrements the reference count of the trace processing graph graph.
struct bt_connection bt_connection
Connection.
Definition: types.h:47
bt_graph_run_once_status
Status codes for bt_graph_run().
Definition: graph.h:1358
bt_graph_add_component_status
Status codes for the bt_graph_add_*_component*() functions.
Definition: graph.h:591
bt_graph_add_component_status bt_graph_add_simple_sink_component(bt_graph *graph, const char *name, bt_graph_simple_sink_component_initialize_func initialize_func, bt_graph_simple_sink_component_consume_func consume_func, bt_graph_simple_sink_component_finalize_func finalize_func, void *user_data, const bt_component_sink **component)
Creates a simple sink component, adds it to the trace processing graph graph with the name name...
Other error.
Definition: graph.h:1177
bt_graph_listener_func_status(* bt_graph_filter_component_input_port_added_listener_func)(const bt_component_filter *component, const bt_port_input *port, void *user_data)
User function for bt_graph_add_filter_component_input_port_added_listener().
Definition: graph.h:1645
Out of memory.
Definition: graph.h:1266
Success.
Definition: graph.h:1363
uint64_t bt_listener_id
Numeric ID which identifies a user listener function.
Definition: types.h:150
Out of memory.
Definition: graph.h:1381
End of processing.
Definition: graph.h:982
bt_graph_run_once_status bt_graph_run_once(bt_graph *graph)
Calls the consuming method of the next non-ended sink component to make consume within the trace proc...
void(* bt_graph_simple_sink_component_finalize_func)(void *user_data)
User finalization function for bt_graph_add_simple_sink_component().
Definition: graph.h:1084
struct bt_graph bt_graph
Trace processing graph.
Definition: types.h:64
bt_graph_add_interrupter_status bt_graph_add_interrupter(bt_graph *graph, const bt_interrupter *interrupter)
Adds the interrupter interrupter to all the current and future sink components and message iterators ...
bt_graph_add_component_status bt_graph_add_sink_component(bt_graph *graph, const bt_component_class_sink *component_class, const char *name, const bt_value *params, bt_logging_level logging_level, const bt_component_sink **component)
Alias of bt_graph_add_sink_component_with_initialize_method_data() with the initialize_method_data pa...
Out of memory.
Definition: graph.h:1484
void bt_graph_get_ref(const bt_graph *graph)
Increments the reference count of the trace processing graph graph.
bt_graph_add_listener_status bt_graph_add_sink_component_input_port_added_listener(bt_graph *graph, bt_graph_sink_component_input_port_added_listener_func user_func, void *user_data, bt_listener_id *listener_id)
Adds a "sink component input port added" listener to the trace processing graph graph.
Out of memory.
Definition: graph.h:1171
bt_graph_add_listener_status bt_graph_add_filter_component_input_port_added_listener(bt_graph *graph, bt_graph_filter_component_input_port_added_listener_func user_func, void *user_data, bt_listener_id *listener_id)
Adds a "filter component input port added" listener to the trace processing graph graph...
bt_graph_simple_sink_component_initialize_func_status(* bt_graph_simple_sink_component_initialize_func)(bt_message_iterator *message_iterator, void *user_data)
User initialization function for bt_graph_add_simple_sink_component().
Definition: graph.h:962
Other error.
Definition: graph.h:1608
Out of memory.
Definition: graph.h:1582
Success.
Definition: graph.h:1478