babeltrace.git
10 years agoFixes in babeltrace core to support non-CTF traces
Julien Desfossez [Tue, 3 Dec 2013 22:34:57 +0000 (17:34 -0500)] 
Fixes in babeltrace core to support non-CTF traces

Since we will have an effort soon to cleanup the Babeltrace plugin
mechanism, this patch adds just the bits required in Babeltrace to not
crash if a non-ctf is opened. We also add the support of net:// URIs.
That way, an input plugin can just implement the open_trace callback
and process its own input trace without requiring a CTF iterator.

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoAdd a private pointer to the ctf_stream_pos
Julien Desfossez [Tue, 3 Dec 2013 22:34:56 +0000 (17:34 -0500)] 
Add a private pointer to the ctf_stream_pos

This allows a custom packet_seek function to fetch private information
about the current stream.

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoBe more widely accepting for missing variant/enum fields
Mathieu Desnoyers [Wed, 4 Dec 2013 16:09:16 +0000 (17:09 +0100)] 
Be more widely accepting for missing variant/enum fields

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoCleanup: remove index_read (unused var)
Mathieu Desnoyers [Tue, 3 Dec 2013 16:41:16 +0000 (17:41 +0100)] 
Cleanup: remove index_read (unused var)

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoRefuse 0 integer size
Mathieu Desnoyers [Tue, 3 Dec 2013 16:13:12 +0000 (17:13 +0100)] 
Refuse 0 integer size

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix ctf-writer: possible use after free
Jérémie Galarneau [Fri, 29 Nov 2013 18:26:42 +0000 (13:26 -0500)] 
Fix ctf-writer: possible use after free

ctf_stream_pos' base_mma member must be copied from stream->pos before
updating the final packet and content sizes. The original base_mma
structure will be reallocated if the packet is resized.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix data_offset when importing the indexes
Julien Desfossez [Fri, 29 Nov 2013 22:43:39 +0000 (17:43 -0500)] 
Fix data_offset when importing the indexes

When importing an index, we don't have the data_offset and we want to
mmap the tracefile only when needed, so we introduce a new function to
only compute this information when we are going to use a new packet.

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoMerge branch 'master' into bindings/python
Mathieu Desnoyers [Fri, 29 Nov 2013 06:19:33 +0000 (07:19 +0100)] 
Merge branch 'master' into bindings/python

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoPython-bindings fix: Out of tree build fails to find babeltrace.i
Jérémie Galarneau [Thu, 28 Nov 2013 18:19:10 +0000 (13:19 -0500)] 
Python-bindings fix: Out of tree build fails to find babeltrace.i

This fixes the out of tree builds by using the appropriate top_srcdir
and top_builddir variables in the bindings' Makefile.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoTest: Validate that enumeration mapping strings are properly escaped
Jérémie Galarneau [Thu, 28 Nov 2013 20:46:41 +0000 (15:46 -0500)] 
Test: Validate that enumeration mapping strings are properly escaped

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix ctf-writer: Quote strings provided as enumeration mappings
Jérémie Galarneau [Thu, 28 Nov 2013 20:46:40 +0000 (15:46 -0500)] 
Fix ctf-writer: Quote strings provided as enumeration mappings

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: read/write mode check
Mathieu Desnoyers [Thu, 28 Nov 2013 00:00:49 +0000 (19:00 -0500)] 
Fix: read/write mode check

It's on the "prot" field, not flags. Moreover, it needs to be done with
a == / != comparison, not a mask.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoCleanup: do not duplicate code in float fix
Mathieu Desnoyers [Wed, 27 Nov 2013 19:38:53 +0000 (14:38 -0500)] 
Cleanup: do not duplicate code in float fix

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: floats should set content size in tmp definition
Mathieu Desnoyers [Wed, 27 Nov 2013 19:37:52 +0000 (14:37 -0500)] 
Fix: floats should set content size in tmp definition

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoHandle empty streams on iterator init
Julien Desfossez [Wed, 27 Nov 2013 16:40:12 +0000 (11:40 -0500)] 
Handle empty streams on iterator init

In live trace streaming, we can create an iterator with inactive
streams. This patch allows inactive streams to be considered as valid.

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoHandle packets containing only a header
Julien Desfossez [Wed, 27 Nov 2013 16:40:11 +0000 (11:40 -0500)] 
Handle packets containing only a header

In live streaming with LTTng, if we do a stop and then a destroy, we
receive a packet that contains only a header. With this patch, we will
ask for a new packet when we see this case.

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoHandle the inactive streams
Julien Desfossez [Wed, 27 Nov 2013 16:40:10 +0000 (11:40 -0500)] 
Handle the inactive streams

When content_size == 0, just set the timestamp_end of the packet and
reinsert the stream in the heap.
This is required to handle the beacons of inactivity generated in
LTTng live trace streaming.

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: test content size vs headers len
Mathieu Desnoyers [Wed, 27 Nov 2013 09:50:54 +0000 (04:50 -0500)] 
Fix: test content size vs headers len

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: check packet index len
Mathieu Desnoyers [Wed, 27 Nov 2013 09:26:53 +0000 (04:26 -0500)] 
Fix: check packet index len

Found by coverity:

** CID 1132646:  Untrusted value as argument  (TAINTED_SCALAR)
/formats/ctf/ctf.c: 1715 in import_stream_packet_inde)

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: uncheck null pointer
Mathieu Desnoyers [Wed, 27 Nov 2013 09:22:54 +0000 (04:22 -0500)] 
Fix: uncheck null pointer

Found by coverity:

** CID 1132647:  Dereference null return value  (NULL_RETURNS)
/formats/ctf/ctf.c: 1852 in ctf_open_file_stream_read()

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: test for less than 1 byte packets
Mathieu Desnoyers [Wed, 27 Nov 2013 09:07:08 +0000 (04:07 -0500)] 
Fix: test for less than 1 byte packets

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: reversed logic in packet vs content size
Mathieu Desnoyers [Wed, 27 Nov 2013 08:38:23 +0000 (03:38 -0500)] 
Fix: reversed logic in packet vs content size

As described in CTF section 5.2

"If the packet size field is missing, the whole stream only contains a
single packet. If the content size field is missing, the packet is
filled (no padding). The content and packet sizes include all headers."

Here is the correct semantic:

* Content size and packet size are available:

  Packet is filled with data up to content size, and then with padding
  up to packet size.

* Content size available, no packet size field:

  The stream has a single packet. It is filled up to content size, and
  the rest is padding.

* Packet size available, no content size field:

  Packet filled completely, no padding.

Fixes #683

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: clarify end of packet error
Mathieu Desnoyers [Wed, 27 Nov 2013 08:32:06 +0000 (03:32 -0500)] 
Fix: clarify end of packet error

Fixes #686

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: string packet boundary handling, bits vs bytes
Mathieu Desnoyers [Wed, 27 Nov 2013 08:28:45 +0000 (03:28 -0500)] 
Fix: string packet boundary handling, bits vs bytes

Fixes #684

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: add stricter checks on packet boundaries
Mathieu Desnoyers [Wed, 27 Nov 2013 08:19:31 +0000 (03:19 -0500)] 
Fix: add stricter checks on packet boundaries

Fixes #699

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoParse CTF indexes
Julien Desfossez [Tue, 26 Nov 2013 17:08:06 +0000 (12:08 -0500)] 
Parse CTF indexes

If a trace file has an associated index (same filename and .idx suffix
in the "index" folder), we open it and use it instead of generating
the index at open.
The index folder is not mandatory and can be destroyed without any
problem.

To use with LTTng, make sure you have lttng-tools commit :
50adc26400482c07210afcda8ef1d3322f75871d
Mon Nov 25 15:32:38 2013 -0500
Rename LTTng index in CTF index

Versions between commit 309167d2a6f59d0c8cbf64eb23ba912cdea76a34 and
this commit have a different index format that will never be merged in
Babeltrace, so if you have traces recorded between this period of
time, just remove the index directory.

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoCleanup: fix typo
Mathieu Desnoyers [Tue, 26 Nov 2013 18:11:21 +0000 (13:11 -0500)] 
Cleanup: fix typo

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: fail when reading 0 byte event
Mathieu Desnoyers [Tue, 26 Nov 2013 17:36:28 +0000 (12:36 -0500)] 
Fix: fail when reading 0 byte event

Rather than looping forever.

Fixes #685

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoPython-bindings fix: outdated dist target babeltrace.i
Jérémie Galarneau [Sat, 23 Nov 2013 21:30:59 +0000 (16:30 -0500)] 
Python-bindings fix: outdated dist target babeltrace.i

This fixes the dist target for the python bindings. The
python-complements.h/.c files must be distributed, but not installed,
in order to build the python bindings.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoPython-bindings: Refactor the CTFWriter API
Jérémie Galarneau [Fri, 22 Nov 2013 05:02:33 +0000 (00:02 -0500)] 
Python-bindings: Refactor the CTFWriter API

Refactor the CTFWriter API to be more in line with the reader
modifications.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoFix: bt_ctf_field_generic_validate should return < 0 on error
Jérémie Galarneau [Fri, 22 Nov 2013 04:46:37 +0000 (23:46 -0500)] 
Fix: bt_ctf_field_generic_validate should return < 0 on error

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoFix: Take the iterator's end position into account
Jérémie Galarneau [Fri, 22 Nov 2013 01:19:25 +0000 (20:19 -0500)] 
Fix: Take the iterator's end position into account

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoFix: Use the bt_iter_set_pos function to set the begin_pos
Jérémie Galarneau [Thu, 21 Nov 2013 23:07:20 +0000 (18:07 -0500)] 
Fix: Use the bt_iter_set_pos function to set the begin_pos

The current implementation of bt_iter_init asserts on begin_pos
that are not BT_SEEK_BEGIN. This uses the iterator set_pos function
to achieve the intended behavior.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoPython-bindings: Move declaration bindings out of the _Definition class
Jérémie Galarneau [Thu, 21 Nov 2013 20:45:50 +0000 (15:45 -0500)] 
Python-bindings: Move declaration bindings out of the _Definition class

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoPython-bindings: Refactor the FieldDecl and EventDecl classes
Jérémie Galarneau [Thu, 21 Nov 2013 03:15:43 +0000 (22:15 -0500)] 
Python-bindings: Refactor the FieldDecl and EventDecl classes

Renamed the FieldDecl and EventDecl classes to FieldDeclaration and
EventDeclaration. Getters are now exposed as properties.

Fixed an out of bounds array access.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoPython-bindings: Move the _scopes array out of the Event class
Jérémie Galarneau [Thu, 21 Nov 2013 02:33:16 +0000 (21:33 -0500)] 
Python-bindings: Move the _scopes array out of the Event class

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoPython-bindings: Refactor the Event class
Jérémie Galarneau [Thu, 21 Nov 2013 01:35:51 +0000 (20:35 -0500)] 
Python-bindings: Refactor the Event class

The Event class now implements the collections.Mapping interface and
provides properties where appropriate.

The Definition class is now private and renamed to _Definition.

The examples are modified to take these changes into account.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoPython-bindings: Refactor the TraceHandle class to use properties
Jérémie Galarneau [Wed, 20 Nov 2013 06:09:31 +0000 (01:09 -0500)] 
Python-bindings: Refactor the TraceHandle class to use properties

TraceHandle now exposes properties instead of getters. It also keeps
a reference to its parent TraceCollection.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoPython-bindings: Refactor the Context class
Jérémie Galarneau [Wed, 20 Nov 2013 05:28:05 +0000 (00:28 -0500)] 
Python-bindings: Refactor the Context class

The context class is now called TraceCollection and provides generator
functions to iterate over the traces' events. This makes it possible to
get rid of the Iterator, IterPos and File classes.

The examples are adapted to match the changes.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoTest ctf-writer: Verify that enumerations are validated before use
Jérémie Galarneau [Mon, 18 Nov 2013 04:23:30 +0000 (23:23 -0500)] 
Test ctf-writer: Verify that enumerations are validated before use

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix ctf-writer: Reject enumerations containing no mappings
Jérémie Galarneau [Mon, 18 Nov 2013 04:23:03 +0000 (23:23 -0500)] 
Fix ctf-writer: Reject enumerations containing no mappings

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix lint warnings
Jérémie Galarneau [Fri, 15 Nov 2013 00:40:57 +0000 (19:40 -0500)] 
Fix lint warnings

** CID 1125105: Unchecked close() return value
formats/ctf/writer/stream.c: 521

** CID 1124085: Use after free
formats/ctf/writer/event-fields.c: 1128

** CID 1124088: Dereference before null check
formats/ctf/writer/stream.c: 371

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoExpose text arrays the same way as regular arrays
Jérémie Galarneau [Tue, 12 Nov 2013 21:22:10 +0000 (16:22 -0500)] 
Expose text arrays the same way as regular arrays

Store the content of text arrays both in the "elems" array and in a
string. While it does duplicate the data, this makes it possible to
access arrays containing UTF-8 or ASCII data the same way as regular
arrays.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoDon't generate Python bindings by default
Jérémie Galarneau [Wed, 25 Sep 2013 18:21:47 +0000 (14:21 -0400)] 
Don't generate Python bindings by default

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoAdd a usage example for the CTF Writer Python bindings
Jérémie Galarneau [Wed, 25 Sep 2013 00:51:13 +0000 (20:51 -0400)] 
Add a usage example for the CTF Writer Python bindings

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoAdd CTF Writer Python bindings
Jérémie Galarneau [Tue, 17 Sep 2013 22:34:25 +0000 (18:34 -0400)] 
Add CTF Writer Python bindings

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoRename the ctf class to CTFReader
Jérémie Galarneau [Tue, 17 Sep 2013 15:47:07 +0000 (11:47 -0400)] 
Rename the ctf class to CTFReader

This prevents name collisions with the upcoming CTFWriter classes.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoFix: Python bindings array access functions write out of bounds
Jérémie Galarneau [Mon, 16 Sep 2013 23:59:00 +0000 (19:59 -0400)] 
Fix: Python bindings array access functions write out of bounds

The array access functions in the Python complements are writing
past the last element to add a NULL pointer and then using it from the
Python code to detect the end of the array. This may cause stability
issues.

This changes the functions to return multiple values (array and length)
in Python using SWIG's built-in OUTPUT typemaps.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoAdd support for structure fields in the Python bindings
Jérémie Galarneau [Fri, 13 Sep 2013 19:39:39 +0000 (15:39 -0400)] 
Add support for structure fields in the Python bindings

get_value() returns a dictionary when the field is a structure.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoAdd support for variant fields in the Python bindings
Jérémie Galarneau [Fri, 13 Sep 2013 01:37:21 +0000 (21:37 -0400)] 
Add support for variant fields in the Python bindings

get_value() now returns the variant's selected field's value
when called on a variant.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoAdd support for floating point fields in the Python bindings
Jérémie Galarneau [Fri, 13 Sep 2013 21:35:41 +0000 (17:35 -0400)] 
Add support for floating point fields in the Python bindings

get_value() now returns a floating point field's value.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoFix: Use of functions not provided by glib 2.22
Jérémie Galarneau [Mon, 11 Nov 2013 16:16:41 +0000 (11:16 -0500)] 
Fix: Use of functions not provided by glib 2.22

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: Throw a FieldError exception when get_value() fails
Jérémie Galarneau [Fri, 13 Sep 2013 21:32:58 +0000 (17:32 -0400)] 
Fix: Throw a FieldError exception when get_value() fails

Throw an exception whenever bt_ctf_field_get_error() reports an error.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoRemove Python 2 specific examples
Jérémie Galarneau [Mon, 19 Aug 2013 19:48:12 +0000 (15:48 -0400)] 
Remove Python 2 specific examples

These examples rely on the cairoplot module which is not compatible with
Python 3.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoAdd a python bindings sequence test
Xiaona Han [Fri, 2 Aug 2013 21:42:32 +0000 (05:42 +0800)] 
Add a python bindings sequence test

This example is meant to test whether we can get a sequence's values in
the python binding well or not. It is used in conjunction with the
sequence test in the dir tests/ctf-traces/succeed/sequence.

Signed-off-by: Xiaona Han <xiaonahappy13@163.com>
Acked-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoSupport for the sequence type
Xiaona Han [Fri, 26 Jul 2013 10:32:36 +0000 (18:32 +0800)] 
Support for the sequence type

Add support for getting a sequence's value in the python binding.

Signed-off-by: Xiaona Han <xiaonahappy13@163.com>
Acked-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoAdd a generic get_value() implementation
Xiaona Han [Fri, 26 Jul 2013 10:32:36 +0000 (18:32 +0800)] 
Add a generic get_value() implementation

Use get_value to get a field's value. Currently it does not support
compound types. Also it does not support floating point, since getting
a float's value is not implemented in babeltrace now.

Edit by Jérémie Galarneau: Arrays' value should not be returned using
get_char_array(). Implemented get_array_element_at() which returns a
Definition object corresponding to the array's element.

Exposed the bt_array_index function in the Python bindings

Signed-off-by: Xiaona Han <xiaonahappy13@163.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoSupport getting the value of enums
Xiaona Han [Fri, 26 Jul 2013 09:48:02 +0000 (17:48 +0800)] 
Support getting the value of enums

Use 'get_enum_str' to get the string matching the current enumeration.

Signed-off-by: Xiaona Han <xiaonahappy13@163.com>
Acked-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoRemove the unnecessary underscore prefix
Xiaona Han [Fri, 26 Jul 2013 08:07:43 +0000 (16:07 +0800)] 
Remove the unnecessary underscore prefix

When getting the fields of an event by name, it is not necessary
to add an underscore prefix. This removes the underscore prefix of
the field names in the examples.

Signed-off-by: Xiaona Han <xiaonahappy13@163.com>
Acked-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoReturn event fields by field name
Xiaona Han [Thu, 25 Jul 2013 23:56:04 +0000 (07:56 +0800)] 
Return event fields by field name

Since a field may be present both in an event and its stream's scope,
this returns a list which contains all the fields by the name. The
examples are also changed to match this new API.

Signed-off-by: Xiaona Han <xiaonahappy13@163.com>
Acked-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 years agoMerge branch 'master' into bindings/python
Jérémie Galarneau [Tue, 12 Nov 2013 16:23:52 +0000 (11:23 -0500)] 
Merge branch 'master' into bindings/python

10 years agoctf writer BSD compatibily: remove O_DIRECTORY
Mathieu Desnoyers [Wed, 6 Nov 2013 19:52:59 +0000 (14:52 -0500)] 
ctf writer BSD compatibily: remove O_DIRECTORY

Not strictly needed, especially since we are creating the directory
ourself.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix ctf writer lints
Mathieu Desnoyers [Sat, 2 Nov 2013 02:52:06 +0000 (22:52 -0400)] 
Fix ctf writer lints

Coverity found:

**CHECKED_RETURN
formats/ctf/writer/writer.c
**bt_ctf_writer_destroy()

**CHECKED_RETURN
formats/ctf/writer/stream.c
**bt_ctf_stream_destroy()

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agolinter fix: comparison of fd >= 0
Mathieu Desnoyers [Sat, 2 Nov 2013 02:50:35 +0000 (22:50 -0400)] 
linter fix: comparison of fd >= 0

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agotest ctf writer: fix lints
Mathieu Desnoyers [Thu, 31 Oct 2013 20:52:42 +0000 (16:52 -0400)] 
test ctf writer: fix lints

Coverity found the following defects:

** CID 1124096: Null pointer dereference (FORWARD_NULL)
/tests/lib/test_ctf_writer.c: 140

** CID 1124095: Dereference after null check (FORWARD_NULL)
/tests/lib/test_ctf_writer.c: 139

** CID 1124094: Dereference after null check (FORWARD_NULL)
/tests/lib/test_ctf_writer.c: 211

** CID 1124093: Argument cannot be negative (NEGATIVE_RETURNS)
/tests/lib/test_ctf_writer.c: 144

** CID 1124092: Argument cannot be negative (NEGATIVE_RETURNS)
/tests/lib/test_ctf_writer.c: 144

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoctf-writer: fix linter defects
Mathieu Desnoyers [Thu, 31 Oct 2013 19:04:01 +0000 (15:04 -0400)] 
ctf-writer: fix linter defects

Coverity found the following defects:

** CID 1124098: Unchecked return value (CHECKED_RETURN)
/formats/ctf/writer/event-types.c: 200

** CID 1124097: Unchecked return value (CHECKED_RETURN)
/formats/ctf/writer/writer.c: 376

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoctf-writer: Coding style fix
Mathieu Desnoyers [Thu, 31 Oct 2013 19:02:38 +0000 (15:02 -0400)] 
ctf-writer: Coding style fix

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoTests: Add a CTF Writer test
Jérémie Galarneau [Wed, 16 Oct 2013 18:35:02 +0000 (14:35 -0400)] 
Tests: Add a CTF Writer test

The test will be ran as part of the "tests" test plan.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Reviewed-by: Christian Babeux <christian.babeux@efficios.com>
Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoAdd CTF Writer implementation
Jérémie Galarneau [Wed, 16 Oct 2013 18:35:01 +0000 (14:35 -0400)] 
Add CTF Writer implementation

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Reviewed-by: Christian Babeux <christian.babeux@efficios.com>
Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoAdd public CTF Writer API headers
Jérémie Galarneau [Wed, 16 Oct 2013 18:35:00 +0000 (14:35 -0400)] 
Add public CTF Writer API headers

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Reviewed-by: Christian Babeux <christian.babeux@efficios.com>
Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: Don't create a new packet if ctf_move_pos() seeks out of a packet
Jérémie Galarneau [Tue, 15 Oct 2013 17:23:46 +0000 (13:23 -0400)] 
Fix: Don't create a new packet if ctf_move_pos() seeks out of a packet

This change ensures that ctf_move_pos() does not create a new packet
when ctf_move_pos() moves out of the current packet's bounds. The next
call to ctf_pos_access_ok() will report EFAULT which can then be
handled appropriately by the caller.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: Uninitialized ctf_stream_pos structure in ctf_float_write()
Jérémie Galarneau [Tue, 15 Oct 2013 17:23:33 +0000 (13:23 -0400)] 
Fix: Uninitialized ctf_stream_pos structure in ctf_float_write()

This structure is passed to _ctf_float_copy() which uses the
uninitialized mmap_offset and offset values to read the source
floating point value.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: Use the packet's final size when mmap-ing the next packet
Jérémie Galarneau [Tue, 15 Oct 2013 17:23:18 +0000 (13:23 -0400)] 
Fix: Use the packet's final size when mmap-ing the next packet

ctf_packet_seek() assumed that a packet would be of fixed size
"WRITE_PACKET_LEN" when seeking to the next packet in write mode.
This ensures that the real size used.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: Close traces on context destruction
Jérémie Galarneau [Thu, 10 Oct 2013 16:08:30 +0000 (12:08 -0400)] 
Fix: Close traces on context destruction

bt_trace_handle_destroy is called on destruction of the trace_handle
hash table's elements. This function only frees the trace handle,
leaving the input traces open.

This fix sets remove_trace_handle as the value_destroy_func ensuring
that the format's close_trace function is called before the trace_handle
is destroyed.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agogcc warning fix: -Wextra
Mathieu Desnoyers [Tue, 8 Oct 2013 21:33:55 +0000 (17:33 -0400)] 
gcc warning fix: -Wextra

For the "ordered comparison of pointer with integer zero" warning, fix
this by comparing (type) -1 against (type) 0 instead of just 0, so if
"type" is a pointer type, this pointer type will be applied to the right
operand too, thus fixing the warning.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoDeclare enum type to use from C++
Francis Giraldeau [Fri, 13 Sep 2013 20:19:20 +0000 (16:19 -0400)] 
Declare enum type to use from C++

Anonymous enum can't be referenced from C++. to fix this issue, declare enum
bt_iter_pos_type and use this type in struct bt_iter_pos.

Signed-off-by: Francis Giraldeau <francis.giraldeau@gmail.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: test_seek should only output one TAP plan
Christian Babeux [Mon, 26 Aug 2013 18:15:14 +0000 (14:15 -0400)] 
Fix: test_seek should only output one TAP plan

On critical failure paths, the test_seek test was outputting multiple
TAP plans, which according to the specification [1] is invalid. This
causes parsing issues on very strict TAP parsers.

[1] - http://podwiki.hexten.net/TAP/TAP.html?page=TAP

Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoRevert "Add missing declaration of ssize_t as unsigned long for SWIG"
Mathieu Desnoyers [Mon, 26 Aug 2013 17:46:54 +0000 (13:46 -0400)] 
Revert "Add missing declaration of ssize_t as unsigned long for SWIG"

This reverts commit 515d3e63070e76440856bb9a123e9b3fb82d5fb5.

Jeremie pointed out that he recommended _not_ to merge this patch.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoAdd missing declaration of ssize_t as unsigned long for SWIG
Amit Margalit [Tue, 20 Aug 2013 07:41:30 +0000 (10:41 +0300)] 
Add missing declaration of ssize_t as unsigned long for SWIG

The file babeltrace.i.in contains a declaration of bt_get_int_len()
returning ssize_t, which SWIG does not recognize as an integer (perhaps
only in some cases).

Add a typedef to generate correct code.

Acked-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Amit Margalit <amitm@il.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix (python): use of braces in format strings
Amit Margalit [Tue, 20 Aug 2013 06:30:38 +0000 (09:30 +0300)] 
Fix (python): use of braces in format strings

Using braces in format strings without specifying a number (e.g. "The
number {} is incorrect".format(some_variable)) is available since Python
2.7, and older Python 2.6 required a number, zero-based (e.g. "The
number {0} is incorrect").

This patch adds these numbers for the sake of older systems.

Acked-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Amit Margalit <amitm@il.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoAdd missing call to _bt_ctf_get_decl_from_def() when calling _bt_ctf_get_int_len().
Amit Margalit [Tue, 20 Aug 2013 06:29:02 +0000 (09:29 +0300)] 
Add missing call to _bt_ctf_get_decl_from_def() when calling _bt_ctf_get_int_len().

The python code that call _bt_ctf_get_int_len() fails to wrap self._d
with the call to _bt_ctf_get_decl_from_def.

Acked-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Amit Margalit <amitm@il.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoMerge branch 'master' into bindings/python
Mathieu Desnoyers [Mon, 26 Aug 2013 17:34:48 +0000 (13:34 -0400)] 
Merge branch 'master' into bindings/python

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: test_seek static linking
Mathieu Desnoyers [Mon, 26 Aug 2013 17:28:13 +0000 (13:28 -0400)] 
Fix: test_seek static linking

./configure --disable-shared --enable-static
make
make check

The make check fails for test_seek.

Fix this by ensuring that test_seek has a dependency on libbabeltrace
and libbabeltrace-ctf. This is a temporary work-around until we improve
our plugin handling.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoTests: fix string octal encoding
Mathieu Desnoyers [Fri, 23 Aug 2013 21:50:31 +0000 (17:50 -0400)] 
Tests: fix string octal encoding

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoAdd missing Makefile.am
Mathieu Desnoyers [Thu, 22 Aug 2013 18:37:38 +0000 (14:37 -0400)] 
Add missing Makefile.am

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agomake check VPATH build
Mathieu Desnoyers [Thu, 22 Aug 2013 17:48:36 +0000 (13:48 -0400)] 
make check VPATH build

Copy scripts to builddir if VPATH build is detected.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoAdd missing test files to make dist
Mathieu Desnoyers [Thu, 22 Aug 2013 17:15:44 +0000 (13:15 -0400)] 
Add missing test files to make dist

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoTests: Use Perl prove as the testsuite runner
Christian Babeux [Thu, 22 Aug 2013 17:02:31 +0000 (13:02 -0400)] 
Tests: Use Perl prove as the testsuite runner

This commit modify the make check target to run Perl prove as the
testsuite runner.

$ cd babeltrace/tests
$ ./run.sh tests

One can also run tests manually using prove:

$ prove --exec '' path/to/test

    OR

$ prove --exec '' - < testlist

Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoTests: Add trace reading test with babeltrace bin
Christian Babeux [Thu, 22 Aug 2013 17:01:48 +0000 (13:01 -0400)] 
Tests: Add trace reading test with babeltrace bin

This test uses the sample traces found in tests/ctf-traces and the
babeltrace cli tool to parse them. The traces found in
ctf-traces/succeed should return a successful exit code and those in
ctf-traces/fail should return a failure exit code.

Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoTests: Split lib tests in multiple standalone test scripts
Christian Babeux [Thu, 22 Aug 2013 17:00:48 +0000 (13:00 -0400)] 
Tests: Split lib tests in multiple standalone test scripts

Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoTests: Rename tests under lib with tests naming convention
Christian Babeux [Thu, 22 Aug 2013 17:00:11 +0000 (13:00 -0400)] 
Tests: Rename tests under lib with tests naming convention

Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoTests: Move TAP helpers to tests/utils/tap
Christian Babeux [Thu, 22 Aug 2013 16:59:24 +0000 (12:59 -0400)] 
Tests: Move TAP helpers to tests/utils/tap

tests/utils/tap/tap.{h,c}:
For use in C tests. You can link against libtap with the usual automake
mechanisms.

New TAP helper:

tests/utils/tap/tap.sh:
For use in shell scripts tests. Source the script
(e.g. source "tests/utils/tap/tap.sh") to use the relevants TAP
functions.

Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix ctf_clock_declaration_visit returning an error when reading a boolean
Jérémie Galarneau [Thu, 22 Aug 2013 16:46:46 +0000 (12:46 -0400)] 
Fix ctf_clock_declaration_visit returning an error when reading a boolean

The ret variable is used to read the "absolute" field's value and was
not reset to zero, thus returning an error whenever that value was TRUE.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix CTF parser hang with bison 3.0
Mathieu Desnoyers [Fri, 16 Aug 2013 15:15:27 +0000 (11:15 -0400)] 
Fix CTF parser hang with bison 3.0

Replace deprecated YYLEX_PARAM with %lex-param

See http://article.gmane.org/gmane.org.fsf.announce/2006 for details.

Tested with bison 2.5 and bison 3.0.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoAdd missing lex/bison generated files to make clean
Mathieu Desnoyers [Fri, 16 Aug 2013 14:45:50 +0000 (10:45 -0400)] 
Add missing lex/bison generated files to make clean

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoPut the libbabeltrace-ctf specific parts of babeltrace.pc into a babeltrace-ctf.pc...
Yannick Brosseau [Thu, 15 Aug 2013 22:10:44 +0000 (18:10 -0400)] 
Put the libbabeltrace-ctf specific parts of babeltrace.pc into a babeltrace-ctf.pc file

On some distributions libbabeltrace and libbabeltrace-ctf are packaged
into separate packages. This means they should have their own pkg-config
file.

The babeltrace-ctf.pc file requires the babeltrace.pc one.

With this change, to have the ctf support in libbabeltrace a pkg-config
user will need to specify the babeltrace-ctf package. To compile and
link with only the base libbabeltrace, the package babeltrace would be
used.

Fixes #550

Signed-off-by: Yannick Brosseau <yannick.brosseau@gmail.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoTest for presence of bison and flex when building from git
Yannick Brosseau [Thu, 15 Aug 2013 20:21:28 +0000 (16:21 -0400)] 
Test for presence of bison and flex when building from git

Fixes #74

Signed-off-by: Yannick Brosseau <yannick.brosseau@gmail.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoFix: Unchecked asprintf/vasprintf return values
Jérémie Galarneau [Fri, 12 Jul 2013 17:08:54 +0000 (13:08 -0400)] 
Fix: Unchecked asprintf/vasprintf return values

strp·may·be·modified·even·in·case·of·failure·according·to·the
ASPRINTF(3) man page.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoMissing NULL pointer init in tap.c
Mathieu Desnoyers [Fri, 12 Jul 2013 15:45:09 +0000 (11:45 -0400)] 
Missing NULL pointer init in tap.c

Could lead to free() of unitialized pointer.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 years agoAdd bt_unregister_format function support
Xiaona Han [Mon, 8 Jul 2013 23:40:32 +0000 (19:40 -0400)] 
Add bt_unregister_format function support

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
This page took 0.04159 seconds and 4 git commands to generate.