Printing binary data in embedded C
Martin Hunt
hunt@redhat.com
Tue Jan 1 21:10:00 GMT 2008
On Fri, 2007-12-21 at 23:50 -0500, Perry Cheng wrote:
> I've been trying to convert some of my existing scripts from printing
> ascii data to binary data to improve probe speed. I've stated using the
> %b modifier via _stp_printf with success. However, my data naturally
> comes in as a char[] of known length and printing it one word at a time
> with %4b doesn't seem like the best way. On the other hand, I can't use a
> bulk function like _stp_print since it interprets the buffer as a C string
> and will misinterpret my binary 0's as a string terminator. Looking at
> the implementation of _stp_print, it's clear that this is an easy feature
> to add.
>
> Is there an existing function that I have missed or is there a simple
> workaround?
Yes. _stp_reserve_bytes() reserves space in the output buffer. Then you
can memcpy into it.
ptr = _stp_reserve_bytes(len);
memcpy(ptr, data, len);
> If not, how fragile is it for me to clone _stp_print and then
> replace the call to strlen with the my buffer length?
That would be equivalent but might break in the future if we change the
internals.
Martin
More information about the Systemtap
mailing list