-
Notifications
You must be signed in to change notification settings - Fork 16
Writing the YAML configuration file
The barectf YAML configuration file
is the only input the barectf command-line tool needs in order to generate
the corresponding CTF metadata and C files.
To start with a concrete configuration, here's some minimal configuration:
version: '2.2'
metadata:
type-aliases:
uint16:
class: int
size: 16
trace:
byte-order: le
streams:
my_stream:
packet-context-type:
class: struct
fields:
packet_size: uint16
content_size: uint16
events:
my_event:
payload-type:
class: struct
fields:
my_field:
class: int
size: 8The version property must be set to the version string (hence the single
quotes). As features are added to barectf and to its configuration file schema,
this version will be bumped accordingly. The latest version of barectf
is 2.2.
The metadata property is where the properties and layout of the
eventual CTF trace are defined. The accepted properties of each object
are documented in the pages of this wiki. For the moment, note simply
that:
- The native (target) byte order of the trace is set to
le(little-endian) - There's one defined stream named
my_stream - The single stream has one defined event named
my_event - The single event has a structure as its payload type, with a single
8-bit unsigned integer type field named
my_field. - The stream packet context type is a structure defining the mandatory
packet_sizeandcontent_sizespecial fields as 16-bit unsigned integer types.
Running barectf with the configuration above (as a file named config.yaml):
barectf config.yaml
produces a C file (barectf.c), and its header file (barectf.h),
the latter declaring the following function:
void barectf_my_stream_trace_my_event(
struct barectf_my_stream_ctx *ctx, uint8_t p_my_field);ctx is the barectf context for the stream named my_stream (usually
initialized and provided by the barectf platform),
and p_my_field is the value of the my_event event payload's
my_field field.
It is possible to include external YAML files in the configuration file.
The available configuration file objects are:
Copyright © 2014-2016 Philippe Proulx (project license)