-
Notifications
You must be signed in to change notification settings - Fork 62
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
lib: make packets and packet messages optional, disabled by default
This patch makes it optional for the streams of a given stream class to support the concept of packets, much like the support for discarded events and discarded packets is already optional. Packets exist to support trace formats which group events into packets, all the packet's events sharing the same packet context information. CTF is currently the single input format which needs the packet concept. Other, more simple sources (existing and future) which do not need the packet concept need, before this patch, to create at least one and, for each stream, to emit the packet beginning and packet end messages at the right locations within the message flow. This makes this part of the API cumbersome and unnecessary. With this patch, a message iterator can simply emit: 1. Stream beginning message 2. Event messages 3. Stream end message API changes =========== When you create a stream class with bt_stream_class_create() or bt_stream_class_create_with_id(), the created stream class does NOT support packets by default. This is to make the initial stream class's configuration as simple as possible. This means that: * You cannot create packet objects from the instances of this stream class (bt_packet_create()). * You cannot create packet beginning and packet end messages for the instances of this stream class because you don't have any packet object (bt_message_packet_beginning_create(), bt_message_packet_beginning_create_with_default_clock_snapshot(), bt_message_packet_end_create(), and bt_message_packet_end_create_with_default_clock_snapshot()). * The stream class cannot support discarded packets (bt_stream_class_set_supports_discarded_packets()). * The stream class cannot have a packet context field class (bt_stream_class_set_packet_context_field_class()). * You cannot create a detached packet context field from this stream class (bt_packet_context_field_create()). * You cannot create an event message with a packet object (bt_message_event_create() and bt_message_event_create_with_default_clock_snapshot(); more about this below). To make a stream class support packets, you need to call bt_stream_class_set_supports_packets(). This is also where you specify whether or not the stream class's stream packets have a beginning and/or an end default clock snapshot from now on. You can use bt_stream_class_supports_packets() to know if a given stream class supports packets. The functions bt_message_event_create() and bt_message_event_create_with_default_clock_snapshot() are renamed to bt_message_event_create_with_packet() and bt_message_event_create_with_packet_and_default_clock_snapshot(). The functions bt_message_event_create() and bt_message_event_create_with_default_clock_snapshot() now accept a `const bt_stream *` parameter to associate the event to a stream. You can borrow the stream to which an event is associated with bt_event_borrow_stream_const(), however it was created. bt_event_borrow_packet_const() returns `NULL` if the event's stream class does not support packets. When a stream class supports packets, it is required that you emit the packet beginning and packet end messages at the correct locations within an iterator's message flow for a given instance of this stream class. When a stream class does not support packets, it is required that you do not create packet beginning and packet end messages for the instances of this stream class. Plugin changes ============== `src.ctf.fs` and `src.ctf.lttng-live`: The message iterators always create stream classes supporting packets. `sink.ctf.fs`: The component requires that packets are supported if a stream class also supports discarded events. This is because the way to indicate discarded events in CTF 1.8 is with packet contexts. When packets are not supported for a given stream, the component creates "artificial" packets. I chose to make it create packets of about 4 MiB. This could become configurable in the future. `flt.lttng-utils.debug-info`: The message iterator copies whether or not the stream class supports packets. `src.text.dmesg`: The message iterator does not emit packet beginning and end messages anymore. `sink.text.details`: The component prints whether or not a given stream class supports packets. The component only prints the "packets have beginning default clock snapshot" and "packets have end default clock snapshot" stream class properties if packets are supported to reduce textual noise. Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com> Change-Id: I79a8063b4a85140004789d024364cf37ef076c45 Reviewed-on: https://review.lttng.org/c/babeltrace/+/1656 Reviewed-by: Simon Marchi <simon.marchi@efficios.com> Tested-by: jenkins <jenkins@lttng.org>
- Loading branch information
Showing
46 changed files
with
554 additions
and
298 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.