Re: [RFC PATCH 1/3] Unified trace buffer

From: Steven Rostedt
Date: Wed Sep 24 2008 - 17:18:23 EST



On Wed, 24 Sep 2008, Martin Bligh wrote:
>
> How about we just steal 5 bits from the timestamp to indicate event
> lengths up to 32 bytes, and if it's 0, that means there's a length
> field following? Also that'd mean you could use a longer length field
> and get beyond 256 bytes to 4096, without impacting most events.
>
> struct {
> u32 length:5, time_delta:27;

I think you mean this is where length == 0 ;-)

> u16 length;
> u8 buf[];
> };
>
> struct {
> u32 length:5, time_delta:27; /* where length == 0 */
> u8 buf[];
> };
>
> Obviously we could less than 5 bits, even just 1 for a flag ...
>

OK then. Since I like the idea of aligning the buffer to 8 bytes, we can
always shift the length field by 3. So...

For records 256 bytes or less, we only have:

struct {
u32 length:5, time_delta: 27;
u8 buf[];
};

For 257 bytes or more we have:

struct {
u32 length:5 (=0), time_delta: 27;
u16 large_length;
u8 buf[];
};

This is what you want?

-- Steve

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/