From mboxrd@z Thu Jan 1 00:00:00 1970 From: jerome.stadelmann@heig-vd.ch (=?iso-8859-1?q?J=E9r=F4me_Stadelmann?=) Date: Wed, 25 Mar 2009 07:16:07 +0100 Subject: [ltt-dev] Traces data alignment In-Reply-To: <20090324131131.GB24346@Krystal> References: <200903191606.35831.jerome.stadelmann@heig-vd.ch> <200903240934.37456.jerome.stadelmann@heig-vd.ch> <20090324131131.GB24346@Krystal> Message-ID: <200903250716.07621.jerome.stadelmann@heig-vd.ch> 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 > > > > > > > > > > > > > > > > > > > > >