On 18/06/2019 13:44, Ravindra Kumar Meena wrote:
> Creating the metadata is one of the first actions a plugin
must do
>
> Okay.
>
> I sent you one metadata file which had 1160 events. So should I
add the
> rtems 512 events in metadata?
At the moment a detailed description of individual events is not
necessary. We have to get the basics in place first. So for now an 10
bit event number is enough.
in recorddata.h I can see that out of 32 bits 10 bits are reserved for
event and 22 bits are reserved for time of the event.
With event number you mean 10 bits reserved for events?
Yes.
>
> The problem I am facing here is how to relate the metadata file with
> rtems event record item?
This depends on what you want to do. It seems the babeltrace plugin
is a
bit too complex to write at the moment. Maybe we should start with
something simpler.
The record client in your rtems-tools repository does the following:
target --> TCP stream with struct rtems_record_items -> client ->
conversion -> human readable text
Okay
We should turn this into:
target --> TCP stream with struct rtems_record_items -> client ->
conversion ->
Okay up to this everything is working fine .
CTF (metadata + event stream) -> files -> babeltrace ->
human readable text
We have to deal with this.
So the first thing we have to figure out is how babeltrace reads an
arbitrary CTF session (metadata + event stream).
The next thing is to look at and modify print_item() in
misc/record/record-main.c. In this function you get one client_item
after another.
typedef struct client_item {
union {
SLIST_ENTRY( client_item ) free_node;
RB_ENTRY( client_item ) active_node;
};
uint64_t ns;
uint32_t cpu;
rtems_record_event event;
uint64_t data;
uint64_t counter;
} client_item;
We are only interested in ns, cpu, event and data. So just convert
this to
typedef struct {
uint64_t ns;
uint32_t cpu;
rtems_record_event event;
uint64_t data;
} ctf_event;
If we are removing SLIST_ENTRY( client_item ) and RB_ENTRY( client_item
) then we will also have to remove it's SLIST_HEAD(), RB_HEAD() etc.
What do you mean with "remove it's SLIST_HEAD(), RB_HEAD() etc."?
In print_item() you get a client_item which contains also implementation
details of the client (the nodes and the counter). These members are not
relevant for the converted event stream.
and append this item into a file (the event stream file). For this
ctf_event you need a TSDL metadata. Save this metadata file.
I have tried babeltrace example [1]. The babeltrace was using generated
metadata file.
We can also try barectf. It just needs yaml file which generated c code.
Why do we need additional tools here? Is it not sufficient to generate
the metadata in plain text format and save the event stream as binary data?
Import the metadata and event stream in babeltrace and let it print a
human readable form.
Does this look like something you can do?
Okay. I will try. This was very much helpful but I think babeltrace will
definitely need generated metadata file.
[1] https://lists.rtems.org/pipermail/devel/2019-May/025921.html
The metadata is a part of CTF, so everyone consuming CTF data needs it.
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.hu...@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel