Messages in this thread | | | Date | Wed, 24 Sep 2008 17:17:52 -0400 (EDT) | From | Steven Rostedt <> | Subject | Re: [RFC PATCH 1/3] Unified trace buffer |
| |
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
| |