Jérémie Galarneau [Wed, 7 Jun 2017 20:17:35 +0000 (16:17 -0400)]
Remove dependancies on ctf.fs source component caused by former logging API
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Mon, 5 Jun 2017 18:30:16 +0000 (14:30 -0400)]
Move ctf-fs source query implementations to their own file
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 7 Jun 2017 21:51:46 +0000 (17:51 -0400)]
Fix: do not use BT_MOVE() when the destination memory could be uninitialized
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 7 Jun 2017 21:45:59 +0000 (17:45 -0400)]
Make bt_private_connection_create_notification_iterator() return a status code
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 7 Jun 2017 20:24:13 +0000 (16:24 -0400)]
Refuse to add port to component when parent graph is canceled
The objects owned by a graph should not be able to perform any useless
action. Having those constraints promise that certain contained objects
remain within certain states when the graph is canceled.
In this case, it is useless for a component to add a port, since this
port cannot be connected to another one within the same graph because
bt_graph_connect_ports() is not permitted when the graph is canceled.
We still allow ports to be removed when the graph is canceled for
symetric teardowns, for example.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 7 Jun 2017 20:12:56 +0000 (16:12 -0400)]
graph.c: do not warn when the graph is canceled during bt_graph_run()
If the graph is canceled during bt_graph_run()'s loop, do not warn: this
was intentionally done during the execution by another thread or by a
signal handler. Log a debug message and quit with the usual
BT_GRAPH_STATUS_CANCELED status.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 7 Jun 2017 19:27:09 +0000 (15:27 -0400)]
Add internal bt_component_borrow_graph()
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 7 Jun 2017 19:26:34 +0000 (15:26 -0400)]
Make bt_private_component_*_add_*_port() return a status code
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 7 Jun 2017 16:38:17 +0000 (12:38 -0400)]
Make bt_graph_connect_ports() return a status code
bt_graph_connect_ports() can fail for multiple reasons, some of which
are not errors per se, but conditions which make the connection
impossible, for example a component refuses the connection, or the graph
is canceled.
With this version, the connection is returned as an output parameter,
which can be NULL if the user is not interested in the connection object
(most common case), and the function returns a graph status code.
Two new status codes are added in order to satisfy this patch:
* BT_GRAPH_STATUS_COMPONENT_REFUSES_PORT_CONNECTION
* BT_GRAPH_STATUS_NOMEM
The first one is not considered an error, that is, the graph's user
could only _try_ to connect two components until the function returns
BT_GRAPH_STATUS_OK (and retry in case of
BT_GRAPH_STATUS_COMPONENT_REFUSES_PORT_CONNECTION).
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 7 Jun 2017 15:52:37 +0000 (11:52 -0400)]
Add bt_connection_is_ended()
Quickly indicates if a connection is ended without having to get and
puts its individual endpoint ports.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Tue, 6 Jun 2017 18:58:36 +0000 (14:58 -0400)]
plugins/ctf/common/notif-iter/notif-iter.c: add logging
Remove the logging of the payload returned by the request_bytes() medium
operation of the ctf.lttng.live CC because it is now logged after
calling this user function in the common notif-iter.c.
Make bt_ctf_field_path_string() static in its internal header instead of
BT_HIDDEN because otherwise the plugin cannot access it.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Mon, 5 Jun 2017 21:11:38 +0000 (17:11 -0400)]
fs-sink: flush open packets on destroy
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Mon, 5 Jun 2017 20:08:34 +0000 (16:08 -0400)]
Fix sink.ctf.fs: mark the trace as static on destroy
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Mon, 5 Jun 2017 19:56:24 +0000 (15:56 -0400)]
fs-sink: fix check trace completed when static is set
The input trace could be set static when all its streams are closed, so
we need to check if the trace is completed in the trace_static callback
as well.
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Mathieu Desnoyers [Mon, 5 Jun 2017 21:25:11 +0000 (17:25 -0400)]
lttng-live: populate trace name
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 5 Jun 2017 19:18:11 +0000 (15:18 -0400)]
Fix: cancel a notif. iter. finalized during its "next" method
It is possible that the user's "next" method, somehow, cancels its own
notification iterator. This can happen, for example, when the user's
method removes the port on which there's the connection from which the
notification iterator was created. In this case, said connection is
ended, and all its notification iterators are finalized.
In ensure_queue_has_notifications(), after calling the user's "next"
method, if there's no error, we check if the notification iterator is
finalized. If so, we return the BT_NOTIFICATION_ITERATOR_STATUS_CANCELED
status directly.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 5 Jun 2017 16:52:29 +0000 (12:52 -0400)]
Fix: do not allow a notif. iter. to call the user's "next" method once finalized
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 2 Jun 2017 18:11:49 +0000 (14:11 -0400)]
ir: do not try to create initial packet/event fields when opt. FT is NULL
If a trace has not packet header field type, then when creating a
packet, do not attempt to create the initial packet header field without
checking that the field type is NULL because this is a violation of
preconditions. The main side effect here is a WARN-level log message
even if the situation is normal.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Fri, 2 Jun 2017 15:12:52 +0000 (11:12 -0400)]
copy_trace: copy the trace name
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Fri, 2 Jun 2017 14:33:19 +0000 (10:33 -0400)]
fs-sink: handle trace name
Now the fs-sink uses the trace name to create the output path.
The trace name is appended after the path argument passed on the command
line.
If the resulting path exists, the plugin increments a numerical suffix
until it finds one or reaches INT_MAX.
The trace name is refused if it is ".." or contains "../".
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Fri, 2 Jun 2017 13:42:20 +0000 (09:42 -0400)]
always copy packet/content_size, they are overwritten by the lib when necessary
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Fri, 2 Jun 2017 13:37:01 +0000 (09:37 -0400)]
Fix copytrace: copy the entire payload_type
Copy payload_type directly rather than iterating on its members.
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Fri, 2 Jun 2017 13:18:31 +0000 (09:18 -0400)]
clock description is optional
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Fri, 2 Jun 2017 13:12:03 +0000 (09:12 -0400)]
move the copy of event_context in ctf_copy_event_class
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Fri, 2 Jun 2017 12:44:22 +0000 (08:44 -0400)]
Fix copytrace: packet header is optional
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Thu, 1 Jun 2017 20:09:15 +0000 (16:09 -0400)]
support adding streams on non-static traces
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Thu, 1 Jun 2017 19:49:52 +0000 (15:49 -0400)]
Remove dead code from the debug-info component class
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Thu, 1 Jun 2017 19:16:18 +0000 (15:16 -0400)]
Fix debug-info: handle event layouts of lttng-ust traces prior to 2.9
Traces produced by lttng-ust < 2.9 emitted errors on dl_open events, but
those are not errors, just missing information that we already handle.
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Thu, 1 Jun 2017 18:16:59 +0000 (14:16 -0400)]
fs-sink: fix handling static notifications
Instead of relying on a stream count, keep a state for each stream.
This allows to check that we only see each stream once and works even if
each stream is started/completed sequentially.
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Wed, 31 May 2017 19:19:22 +0000 (15:19 -0400)]
fs-sink: move stream and stream_class maps in fs_writer struct
The fs_writer struct is now responsible for those HT since they are only
relevant within the scope of a writer, not the whole component.
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Wed, 31 May 2017 18:35:54 +0000 (14:35 -0400)]
fs-sink: explicitely handle stream_begin notif
Instead of creating the new streams lazily when packets begin, this
allows to handle empty streams.
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Mon, 29 May 2017 22:30:27 +0000 (18:30 -0400)]
fs-sink: trace static handling + cleanup teardown
When a trace is static and we have seen the stream_end notification for
all the active streams, we can free the resources for handling the
trace.
This also highlighted that a few bits were missing for a clean teardown
of the plugin.
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 2 Jun 2017 17:48:13 +0000 (13:48 -0400)]
Use abort() instead of a false assertion
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 2 Jun 2017 17:26:02 +0000 (13:26 -0400)]
doc/Makefile.am: do not install internal documentation
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 2 Jun 2017 17:25:44 +0000 (13:25 -0400)]
lib/ctf-writer/writer.c: logging: change tag to `CTF-WRITER`
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Thu, 1 Jun 2017 22:31:48 +0000 (18:31 -0400)]
Add missing include of unistd.h
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 30 May 2017 19:55:15 +0000 (15:55 -0400)]
Port: use portable print format for size_t
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 30 May 2017 19:38:24 +0000 (15:38 -0400)]
Port: internal logging print format for mingw
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Fri, 9 Sep 2016 21:08:13 +0000 (21:08 +0000)]
Port: replace strerror_r() with glib g_strerror()
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Fri, 17 Feb 2017 20:11:16 +0000 (15:11 -0500)]
Port: Use g_setenv instead of setenv
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Wed, 15 Feb 2017 20:36:57 +0000 (15:36 -0500)]
Port: Plugin extension is platform specific
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Fri, 13 Jan 2017 16:43:02 +0000 (11:43 -0500)]
Port: No setuid on windows
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Fri, 13 Jan 2017 16:42:31 +0000 (11:42 -0500)]
Port: Use glib g_get_home_dir to get home dir on mingw
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Thu, 15 Sep 2016 21:19:51 +0000 (21:19 +0000)]
Port: Dummy locking of stdout on mingw in libtap
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Fri, 21 Oct 2016 16:19:05 +0000 (12:19 -0400)]
Port: Add missing includes for mingw
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Thu, 15 Sep 2016 15:18:11 +0000 (15:18 +0000)]
Port: memstream compat for mingw
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Thu, 12 Jan 2017 17:08:26 +0000 (12:08 -0500)]
Port: Use portable format string for ISO 8601 dates
The %F format string to reprensent ISO 8601 dates is specific to C99 and
not available on all platforms, use basic %Y-%m-%d to get the same
result.
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Thu, 15 Sep 2016 21:19:29 +0000 (21:19 +0000)]
Port: add missing include for stdio.h compat
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Thu, 15 Sep 2016 20:52:05 +0000 (20:52 +0000)]
Port: Add utsname.h compat for mingw
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Thu, 15 Sep 2016 18:51:45 +0000 (14:51 -0400)]
Port: Add mman.h compat for mingw
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 13 Sep 2016 16:21:33 +0000 (16:21 +0000)]
Port: Namespace tokens in ctf metadata parser/lexer
Namespace generic types as they conflict on different platforms.
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 13 Sep 2016 21:34:57 +0000 (21:34 +0000)]
Port: Add posix_fallocate compat for mingw
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Thu, 15 Sep 2016 19:47:01 +0000 (19:47 +0000)]
Port: Add timegm compat for mingw
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 13 Sep 2016 21:39:44 +0000 (21:39 +0000)]
Port: Add time.h compat for mingw
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 12 Sep 2016 20:38:25 +0000 (20:38 +0000)]
Port: Disable debug info by default on mingw
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 13 Sep 2016 20:38:17 +0000 (20:38 +0000)]
Port: win32 DLLs don't support hidden symbols
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 13 Sep 2016 20:37:26 +0000 (20:37 +0000)]
Port: Add missing byteswap compat for mingw
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Wed, 14 Sep 2016 17:45:37 +0000 (13:45 -0400)]
Port: Fix libuuid compat on mingw
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 12 Sep 2016 20:37:31 +0000 (20:37 +0000)]
Port: Add AC_USE_SYSTEM_EXTENSIONS with mingw support
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 12 Sep 2016 18:36:58 +0000 (18:36 +0000)]
Port: Add bt_common_get_page_size
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 12 Sep 2016 20:01:27 +0000 (20:01 +0000)]
Port: Use glib portable macros to convert gpointer to int
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 13 Sep 2016 15:32:00 +0000 (15:32 +0000)]
Port: use portable pointer type in bt_list_entry
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 1 Jun 2017 21:25:51 +0000 (17:25 -0400)]
Fix: test-utils-muxer.c: initialize "next" return with OK status
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 1 Jun 2017 21:05:11 +0000 (17:05 -0400)]
ir: do not create empty structure for optional scope field types
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 1 Jun 2017 21:04:03 +0000 (17:04 -0400)]
test_ctf_writer.c: set PACKET_RESIZE_TEST_LENGTH to 100000 again
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 1 Jun 2017 20:27:36 +0000 (16:27 -0400)]
utils.muxer: remove upstream notif. iter. once ended/canceled
This was not a bug, but it was a source of leak during the graph's
lifetime (upstream notification iterator does not exist anymore but
utils.muxer notification iterator keeps a structure associated to it.)
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 1 Jun 2017 20:20:09 +0000 (16:20 -0400)]
configure.ac: use $enableval in AC_ARG_ENABLE()
This allows all the following to work:
* --enable-x
* --enable-x=yes
* --enable-x=no
* --disable-x
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 31 May 2017 19:18:33 +0000 (15:18 -0400)]
doc/logging-guide.adoc: minor fixes + add "Instrument a module" section
The new "Instrument a module" function documents the steps to instrument
a new module in a standard way.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 31 May 2017 18:32:36 +0000 (14:32 -0400)]
cli: use standard logging files and macros
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 31 May 2017 17:01:36 +0000 (13:01 -0400)]
python-plugin-provider: use standard logging files and macros
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 31 May 2017 16:57:58 +0000 (12:57 -0400)]
plugins/ctf/lttng-live: use standard logging files and macros
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 31 May 2017 16:52:27 +0000 (12:52 -0400)]
plugins/ctf/common/btr: use standard logging files and macros
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 31 May 2017 16:48:52 +0000 (12:48 -0400)]
logging-internal.h: add BT_LOG_LEVEL_EXTERN_SYMBOL(), BT_LOG_INIT_LOG_LEVEL()
BT_LOG_INIT_LOG_LEVEL() defines a hidden log level symbol and a static
constructor which initializes this symbol according to the value of
a given environment variable. This macro should be used in a module-wise
dedicated logging source file, `logging.c`, as such:
#define BT_LOG_OUTPUT_LEVEL some_log_level_symbol
#include <babeltrace/logging-internal.h>
BT_LOG_INIT_LOG_LEVEL(some_log_level_symbol, "BABELTRACE_SOME_LOG_LEVEL");
BT_LOG_LEVEL_EXTERN_SYMBOL() declares this symbol as `extern`. It
should be used in a module-wise dedicated logging header, `logging.h`,
as such:
#define BT_LOG_OUTPUT_LEVEL some_log_level_symbol
#include <babeltrace/logging-internal.h>
BT_LOG_LEVEL_EXTERN_SYMBOL(some_log_level_symbol);
Any module source file which contains log statements should use the
following lines **before any #include line**:
#define BT_LOG_TAG "THE-MODULE-TAG"
#include "logging.h"
If there are subdirectories within a module, it is possible that you
need to include "../logging.h" or "../../logging.h", for example. The
rule of thumb is that no module file, except `logging.c`, should include
<babeltrace/logging-internal.h> directly.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 31 May 2017 16:34:26 +0000 (12:34 -0400)]
plugins/ctf/common/btr/btr.c: add logging
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 31 May 2017 14:42:33 +0000 (10:42 -0400)]
Logging: require modules to define BT_LOG_OUTPUT_LEVEL
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 31 May 2017 13:32:53 +0000 (09:32 -0400)]
bt_value_get_type(): not a warning if value is NULL
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 31 May 2017 00:13:37 +0000 (20:13 -0400)]
bitfield-internal.h: fix negative value shifting warnings
This patch makes _bt_unsigned_cast() shift the complement of 0 casted to
uint64_t instead of the complement of 0 casted to a possibly signed
type, which results in shifting a negative value, an undefined operation
in C.
Because we're imposing uint64_t now, the size of the type and value's
type cannot be greater than the size of uint64_t... not a considerable
worry with the current state of commercial computing. Having said that,
the new _bt_check_max_64bit() macro, a static assertion, checks that
those type sizes are not greater than the size of uint64_t at build
time.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Tue, 30 May 2017 22:47:31 +0000 (18:47 -0400)]
tests/lib: do not call bt_ctf_trace_set_native_byte_order() if not needed
It's not mandatory anymore to call bt_ctf_trace_set_native_byte_order()
on a trace object before it's frozen.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Tue, 30 May 2017 22:27:28 +0000 (18:27 -0400)]
ir: add BT_CTF_BYTE_ORDER_NONE and make it the default trace's native BO
There's a problem now where you need to explicitly set the native byte
order of a trace you create with bt_ctf_trace_create() with
bt_ctf_trace_set_native_byte_order() before the trace object is frozen,
otherwise the function which would cause the freezing fails.
Some trace formats have no byte order concept. Other properties like
alignment and binary field sizes may have no meaning either. Source
component classes which implement the decoding of those formats should
do a best effort to represent their trace's metadata using CTF IR. That
said, choosing an arbitrary trace's native byte order imposes this byte
order when a ctf.fs sink writes the trace. Here, BT_CTF_BYTE_ORDER_NONE
means that we don't care about the byte order, that it was not
meaningful when decoding the original trace, therefore you can choose
any output byte order you want.
With this patch, the initial trace's native byte order is
BT_CTF_BYTE_ORDER_NONE, and this is a valid byte order when the trace
needs to be frozen. A non-CTF writer trace cannot be used by a CTF
writer object anyway; a CTF writer always creates its own trace object.
The initial native byte order of a CTF writer trace is the machine's
byte order. You cannot set a CTF writer trace's native byte order to
BT_CTF_BYTE_ORDER_NONE. Also, you cannot set any field type's byte order
to BT_CTF_BYTE_ORDER_NONE: it's only valid for a non-CTF writer trace.
libctfcopytrace is modified to only explicitly set the CTF writer
trace's native byte order if the original trace's native byte order is
not BT_CTF_BYTE_ORDER_NONE.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Tue, 30 May 2017 00:21:46 +0000 (20:21 -0400)]
ctf plugins: prepend trace's hostname, if exists, to trace name
This makes the trace names a little more precise.
Note that as of this patch the visitor sets the trace's name just before
adding the first stream class, because after this, the trace is frozen
and we cannot set its name anymore. This is done as lately as possible
to increase our chance of having decoded the metadata's `env` block
(where the hostname is), if any. This can lead to an unnamed trace if
there's no stream classes. But if there's no stream classes, there can't
be any packet or event anyway, so there can't be any notification which
refers to this trace, so no other component should see the fact that
there's no name.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 29 May 2017 23:55:16 +0000 (19:55 -0400)]
ctf.fs source: use last path parameter's element as base for trace names
Without this patch:
Trace directory: /home/user/my-traces/trace/yes/kernel
`path` parameter: /home/user/my-traces/trace
Trace name: kernel
With this patch:
Trace directory: /home/user/my-traces/trace/yes/kernel
`path` parameter: /home/user/my-traces/trace
Trace name: trace/yes/kernel
This takes into account absolute vs. relative paths, resolves `..` and
`.`, and more. Most of the job is done by bt_common_normalize_path().
The process used to craft the trace names using the base directory as
passed by the user is really easy once all the paths are known to be
normalized.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 29 May 2017 23:13:30 +0000 (19:13 -0400)]
Docs: add informal comments to common-internal.h
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 29 May 2017 22:48:48 +0000 (18:48 -0400)]
Add bt_common_normalize_path()
This new function does a part of realpath()'s job: it resolves `..` and
`.` in the path, resolves a relative path with a custom working
directory or the current working directory, and removes consecutive
separators (`/` or `\` depending on the platform) and the last
separator. The function always returns an absolute path. The function
does NOT resolve symbolic links.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 29 May 2017 20:15:00 +0000 (16:15 -0400)]
stream.c: allow stream PC's `events_discarded` field to be set by user
If a stream packet context `events_discarded` field is set a flush time,
check if its value keeps the count monotonic, and use this value to set
the stream's current discarded events count if so. If it's not set, do
like before and set it automatically from the stream's current count.
This will make it possible for a ctf.fs sink component to write the
original `events_discarded` field without having to read it, compute
the difference with the previous value, and use
bt_ctf_stream_append_discarded_events() to change the stream's discarded
events count.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 29 May 2017 19:49:09 +0000 (15:49 -0400)]
Remove remaining old test files
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 29 May 2017 19:47:01 +0000 (15:47 -0400)]
tests/cli/Makefile.am: remove duplicate test in TESTS list
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 29 May 2017 19:45:08 +0000 (15:45 -0400)]
Fix: test_convert_args: use util.muxer's `assume-absolute-clock-classes` param
util.muxer's `force-absolute` parameter is now named
`assume-absolute-clock-classes`. Modify test to satisfy this.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 29 May 2017 19:33:55 +0000 (15:33 -0400)]
Fix: test_ir_visit.c: create valid SC PC/EH and trace packet header
Since CTF IR is more strict regarding the semantics of trace packet
header, stream class packet context and event header field types, this
test fails because the default packet context field type of a stream
class which is not created for a CTF writer object contains
`timestamp_begin` and `timestamp_end` fields which are not mapped to a
clock class.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 29 May 2017 19:27:23 +0000 (15:27 -0400)]
Fix: test_ctf_ir_ref.c: create valid SC PC/EH and trace packet header
Since CTF IR is more strict regarding the semantics of trace packet
header, stream class packet context and event header field types, this
test fails because the default packet context field type of a stream
class which is not created for a CTF writer object contains
`timestamp_begin` and `timestamp_end` fields which are not mapped to a
clock class.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 29 May 2017 18:47:52 +0000 (14:47 -0400)]
Remove warnings when using bt_plugin_create_all_from_dir()
bt_plugin_create_all_from_dir() expects an existing directory, otherwise
it fails with a WARN-level log message because it's the user's
responsibility to ensure this.
A few functions of the library and the CLI call this with nonexisting
paths, resulting in warnings under normal usage (for example, default
plugin search paths which do not exist; this is not an error nor a
warning).
This patch fixes this by testing the existence of the paths passed to
bt_plugin_create_all_from_dir() with g_file_test(), skipping (usually
with a VERBOSE-level message) when it's not the case.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 29 May 2017 18:28:30 +0000 (14:28 -0400)]
Fix: make Python plugin provider have its own log level
It cannot share libbabeltrace's log level because it's in a different
shared object itself. Because it's not using the library's global log
level, we don't initialize it with the BABELTRACE_LOGGING_GLOBAL_LEVEL,
but with its own BABELTRACE_PYTHON_PROVIDER_LOG_LEVEL.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 27 May 2017 06:55:04 +0000 (02:55 -0400)]
Add bt_log_get_level_from_env() and use it
This is a common function for all the project's modules to use the same
names (`VERBOSE`, `WARN`, `ERROR`, etc.) to set the various log levels
based on the value of a specific environment variable.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 27 May 2017 06:09:23 +0000 (02:09 -0400)]
configure.ac: add details to final report
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 27 May 2017 03:25:43 +0000 (23:25 -0400)]
python-plugin-provider/python-plugin-provider.c: add logging
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 27 May 2017 02:23:41 +0000 (22:23 -0400)]
cli: check for cancellation before running the graph, add relevant logging
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 27 May 2017 02:23:29 +0000 (22:23 -0400)]
lib/plugin/plugin-so.c: add logging
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 27 May 2017 00:51:33 +0000 (20:51 -0400)]
test_ctf_writer.c: add "trace is static" listener tests
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 27 May 2017 00:50:07 +0000 (20:50 -0400)]
Add bt_ctf_trace_add_is_static_listener() and ..._remove_is_static_listener()
See the functions's documentation for more details.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 26 May 2017 23:24:13 +0000 (19:24 -0400)]
Fix builds with built-in plugins
The recent convenience libraries are an issue for built-in plugins
because they lead to multiple definitions of the same symbols. This is
because we have to use --whole-archive when embedding the plugin
archives (.a), so the linker wants to embed all the symbols found. If
the same symbol is found twice, the linker is not happy.
For example: the `ctf` plugin's archive includes the symbols of
libbabeltrace-common.a. The CLI also includes the symbols of
libbabeltrace-common.a. When adding the `ctf` archive to the CLI with
--whole-archive, the symbols of libbabeltrace-common.a already exist in
the CLI, so we get the multiple definition error.
My solution here is to avoid adding the convenience libraries to the
individual plugins and to the library itself when BUILT_IN_PLUGINS is
true. The convenience libraries are added only one time to the CLI (in
cli/Makefile.am directly). When BUILT_IN_PLUGINS is false, it is
important to include the convenience library functions in each plugin
because they could be loaded outside the CLI, where those functions do
not exist.
There's also a fix to properly embed the Python plugin provider into the
library, and to print an error at configure time when
BUILT_IN_PYTHON_PLUGIN_SUPPORT=1 is used without
--enable-python-plugins.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 26 May 2017 20:17:06 +0000 (16:17 -0400)]
lib/plugin/plugin.c: improve log levels
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
This page took 0.041556 seconds and 4 git commands to generate.