bitmask_snprintf(9) - NetBSD Manual Pages

Command: Section: Arch: Collection:  
BITMASK_SNPRINTF(9)          NetBSD Kernel Manual          BITMASK_SNPRINTF(9)


NAME
bitmask_snprintf - bitmask output conversion
SYNOPSIS
#include <sys/systm.h> void bitmask_snprintf(u_quad_t val, const char *fmt, char *buf, size_t buflen);
DESCRIPTION
The bitmask_snprintf() function formats a bitmask into a mnemonic form suitable for printing. This conversion is useful for decoding bit fields in device registers. It formats the integer val into the buffer buf, of size buflen, using a specified radix and an interpretation of the bits within that integer as though they were flags. The decoding directive string fmt describes how the bitfield is to be in- terpreted and displayed. The first character of fmt is a binary charac- ter representation of the output numeral base in which the bitfield will be printed before it is decoded. Recognized radix values (in C escape- character format) are \10 (octal), \12 (decimal), and \20 (hexadecimal). The remaining characters in fmt are interpreted as a list of bit-posi- tion-description pairs. A bit-position-description pair begins with a binary character value that represents the position of the bit being de- scribed. A bit position value of one describes the least significant bit. Whereas a position value of 32 (octal 40, hexadecimal 20, the ASCII space character) describes the most significant bit. The remaining characters in a bit-position-description pair are the char- acters to print should the bit being described be set. Description strings are delimited by the next bit position value character encoun- tered (distinguishable by its value being <= 32), or the end of the de- coding directive string itself.
RETURN VALUES
The bitmask_snprintf() function returns the buffer buf. The returned string is always NULL-terminated.
EXAMPLES
Two examples of the old formatting style: bitmask_snprintf(3, "\10\2BITTWO\1BITONE", buf, buflen) => "3<BITTWO,BITONE>" bitmask_snprintf(0xe860, "\20\x10NOTBOOT\x0fFPP\x0eSDVMA\x0cVIDEO" "\x0bLORES\x0aFPA\x09DIAG\x07CACHE" "\x06IOCACHE\x05LOOPBACK\x04DBGCACHE", buf, buflen) => "e860<NOTBOOT,FPP,SDVMA,VIDEO,CACHE,IOCACHE>"
ERRORS
If the buffer buf is too small to hold the formatted output, bitmask_snprintf() will still return the buffer, containing a truncated string.
SEE ALSO
printf(9)
CODE REFERENCES
sys/kern/subr_prf.c
HISTORY
The bitmask_snprintf() function was originally implemented as a non-stan- dard %b format string for the kernel printf() function in NetBSD 1.5 and earlier releases.
BUGS
bitmask_snprintf() supports a new extended form of formatting string, which is not yet described here. NetBSD 1.6 July 28, 2000 2
Powered by man-cgi (2024-03-20). Maintained for NetBSD by Kimmo Suominen. Based on man-cgi by Panagiotis Christias.