Subject: %b -> bitmask_snprintf()
To: None <current-users@NetBSD.ORG>
From: Jason Thorpe <thorpej@nas.nasa.gov>
List: current-users
Date: 11/12/1996 23:02:42
Just a heads-up...

I've implemented a bitmask_snprintf() function that is designed to
replace the functionality of the kernel `%b' printf() format.  Once
all of the occurrences of `%b' are eliminated, support for that
format will be removed from the kernel printf().

bitmask_snprintf() is pretty simple.. you pass it the value and
bit string (like `%b'), and a buffer and the size of that buffer (for
reentrancy).  It returns a pointer to the beginning of the buffer
so that it can be nested inside a printf() call.  Be careful when
nesting several bitmask_snprintf()s inside one call to printf(); if
you use the same buffer for all of them, you'll see the string for
the last call for all calls nested in that printf() (this should be
obvious, but I thought I'd mention it anyhow :-).  The best thing
to do in those situations is to split up the printf() into several
so that you don't gratuitously waste stack space.

Removing the non-standard formats (currently `%b' and `%:') brings
us closer to having a kernel printf() that behaves just like the
userland printf().  This is a Good Thing(tm).

I haven't quite changed all of them yet, but I'm going to try and hit
the last of them tomorrow.  There are a fair number of `%b' occurrences,
and obviously I can't test-compile all of them, so if I made any mistakes,
please let me know, and I or someone else will correct them ASAP.

Ciao.

Jason R. Thorpe                                       thorpej@nas.nasa.gov
NASA Ames Research Center                               Home: 408.866.1912
NAS: M/S 258-6                                          Work: 415.604.0935
Moffett Field, CA 94035                                Pager: 415.428.6939