[ltt-dev] Traces data alignment

Jérôme Stadelmann jerome.stadelmann at heig-vd.ch
Wed Mar 25 02:16:07 EDT 2009


On mardi 24 mars 2009 14:11:31 Mathieu Desnoyers wrote:
> * Jérôme Stadelmann (jerome.stadelmann at heig-vd.ch) wrote:
> > On vendredi 20 mars 2009 15:53:55 Mathieu Desnoyers wrote:
> > > * Jérôme Stadelmann (jerome.stadelmann at heig-vd.ch) wrote:
> > > > On jeudi 19 mars 2009 18:00:01 Mathieu Desnoyers wrote:
> > > > > * Jérôme Stadelmann (jerome.stadelmann at heig-vd.ch) wrote:
> > > > > > Hi everybody,
> > > > > > 
> > > > > > I'm working on a LTTng traces parser and I'm a little bit blocked on the alignment. Can someone please explain how and where it is coded ?
> > > > > 
> > > > > The lttv lib "ltttraceread" should do that for you.
> > > >  
> > > > > > What are the roles of the alignment defined in the traces header and the one defined in the metadata file in the core_marker_id ?
> > > > > > 
> > > > > 
> > > > > They tell that a specific tracefile content is aligned or not, and if
> > > > > the content of a given event is aligned or not. You should really have
> > > > > at least a look at the ltt lib traceread reference implementation.
> > > > 
> > > > Thank you. This library helped me a lot. I see that there is an up to 2 byte alignment in the core marker id event definition. Is there the only special case ?
> > > > I've searched the uses of the ltt_align function. Are there other functions to look for ?
> > > > 
> > > 
> > > Looking at ltt_align use is a good starting point.
> > > 
> > > Can you point out to the specific package/version/file/line you refer to
> > > for the core marker id "special case" you talk about here ?
> > > 
> > 
> > I think I've understood now. The alignment in the metadata file is
> > "hardcoded" as 2 byte because the id field is the biggest value and is
> > coded as a 2 bytes value. Am I right ?
> > 
> 
> Possibly. Again, can you point out which package/version/file/line you
> refer to so I can be sure we are talking about the same piece of code ?
> Telling which file and function, with a cut and paste of the context,
> would be nice to have.
> 

in tracefile.c :

static int ltt_process_metadata_tracefile(LttTracefile *tf)
{
	.....

        case MARKER_ID_SET_MARKER_ID:
          channel_name = pos = tf->event.data;
	  pos += strlen(channel_name) + 1;
	  marker_name = pos;
          g_debug("Doing MARKER_ID_SET_MARKER_ID of marker %s.%s",
	    channel_name, marker_name);
          pos += strlen(marker_name) + 1;

          pos += ltt_align((size_t)pos, sizeof(guint16), tf->alignment);

          id = ltt_get_uint16(LTT_GET_BO(tf), pos);
          g_debug("In MARKER_ID_SET_MARKER_ID of marker %s.%s id %hu",
	  	channel_name, marker_name, id);
          pos += sizeof(guint16);
          int_size = *(guint8*)pos;
          pos += sizeof(guint8);
          long_size = *(guint8*)pos;
          pos += sizeof(guint8);
          pointer_size = *(guint8*)pos;
          pos += sizeof(guint8);
          size_t_size = *(guint8*)pos;
          pos += sizeof(guint8);
          alignment = *(guint8*)pos;
          pos += sizeof(guint8);

	.....
}

As I said, you are using an "hardcoded" up to 2 bytes alignment because you already know in this case all the fields ?

> Mathieu
> 
> > > Mathieu
> > > 
> > > > Jerome
> > > >  
> > > > > Mathieu
> > > > > 
> > > > > > Regards,
> > > > > > Jerome
> > > > > > 
> > > > > > _______________________________________________
> > > > > > ltt-dev mailing list
> > > > > > ltt-dev at lists.casi.polymtl.ca
> > > > > > http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
> > > > > > 
> > > > > 
> > > > 
> > > 
> > 
> 




More information about the lttng-dev mailing list