xref: /dflybsd-src/share/man/man9/kprintf.9 (revision d0c8ddbdde4ecb78cfe5ff54d15cbb9a65434b3d)
12bda9807SSascha Wildner.\"
22bda9807SSascha Wildner.\" Copyright (c) 2001 Andrew R. Reiter
32bda9807SSascha Wildner.\" Copyright (c) 2004 Joerg Wunsch
42bda9807SSascha Wildner.\" All rights reserved.
52bda9807SSascha Wildner.\"
62bda9807SSascha Wildner.\" Redistribution and use in source and binary forms, with or without
72bda9807SSascha Wildner.\" modification, are permitted provided that the following conditions
82bda9807SSascha Wildner.\" are met:
92bda9807SSascha Wildner.\" 1. Redistributions of source code must retain the above copyright
102bda9807SSascha Wildner.\"    notice, this list of conditions and the following disclaimer.
112bda9807SSascha Wildner.\" 2. Redistributions in binary form must reproduce the above copyright
122bda9807SSascha Wildner.\"    notice, this list of conditions and the following disclaimer in the
132bda9807SSascha Wildner.\"    documentation and/or other materials provided with the distribution.
142bda9807SSascha Wildner.\"
152bda9807SSascha Wildner.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
162bda9807SSascha Wildner.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
172bda9807SSascha Wildner.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
182bda9807SSascha Wildner.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
192bda9807SSascha Wildner.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
202bda9807SSascha Wildner.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
212bda9807SSascha Wildner.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
222bda9807SSascha Wildner.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
232bda9807SSascha Wildner.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
242bda9807SSascha Wildner.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
252bda9807SSascha Wildner.\" SUCH DAMAGE.
262bda9807SSascha Wildner.\"
272bda9807SSascha Wildner.\" $FreeBSD: src/share/man/man9/printf.9,v 1.8 2006/09/08 14:05:03 ru Exp $
28*d0c8ddbdSSascha Wildner.\" $DragonFly: src/share/man/man9/kprintf.9,v 1.3 2007/08/01 21:39:29 swildner Exp $
292bda9807SSascha Wildner.\"
302bda9807SSascha Wildner.Dd January 1, 2007
312bda9807SSascha Wildner.Dt KPRINTF 9
322bda9807SSascha Wildner.Os
332bda9807SSascha Wildner.Sh NAME
342bda9807SSascha Wildner.Nm kprintf ,
352bda9807SSascha Wildner.Nm ksprintf ,
362bda9807SSascha Wildner.Nm ksnprintf ,
372bda9807SSascha Wildner.Nm kvprintf ,
382bda9807SSascha Wildner.Nm kvsprintf ,
392bda9807SSascha Wildner.Nm kvsnprintf ,
402bda9807SSascha Wildner.Nm tprintf ,
412bda9807SSascha Wildner.Nm uprintf ,
422bda9807SSascha Wildner.Nm log
432bda9807SSascha Wildner.Nd formatted output conversion
442bda9807SSascha Wildner.Sh SYNOPSIS
452bda9807SSascha Wildner.In sys/types.h
462bda9807SSascha Wildner.In sys/systm.h
472bda9807SSascha Wildner.Ft int
482bda9807SSascha Wildner.Fn kprintf "const char *format" ...
492bda9807SSascha Wildner.Ft int
502bda9807SSascha Wildner.Fn ksprintf "char *str" "const char *format" ...
512bda9807SSascha Wildner.Ft int
522bda9807SSascha Wildner.Fn ksnprintf "char *str" "size_t size" "const char *format" ...
532bda9807SSascha Wildner.Ft int
542bda9807SSascha Wildner.Fn kvprintf "const char *format" "__va_list ap"
552bda9807SSascha Wildner.Ft int
562bda9807SSascha Wildner.Fn kvsprintf "char *str" "const char *format" "__va_list ap"
572bda9807SSascha Wildner.Ft int
582bda9807SSascha Wildner.Fn kvsnprintf "char *str" "size_t size" "const char *format" "__va_list ap"
59*d0c8ddbdSSascha Wildner.Ft int
602bda9807SSascha Wildner.Fn tprintf "struct proc *p" "int pri" "const char *format" ...
612bda9807SSascha Wildner.Ft int
622bda9807SSascha Wildner.Fn uprintf "const char *format" ...
632bda9807SSascha Wildner.In sys/syslog.h
64*d0c8ddbdSSascha Wildner.Ft int
652bda9807SSascha Wildner.Fn log "int pri" "const char *format" ...
662bda9807SSascha Wildner.Sh DESCRIPTION
672bda9807SSascha WildnerThe
682bda9807SSascha Wildner.Nm
692bda9807SSascha Wildnerfamily of functions are similar to the
702bda9807SSascha Wildner.Xr printf 3
712bda9807SSascha Wildnerfamily of functions.
722bda9807SSascha WildnerThe different functions each use a different output stream.
732bda9807SSascha WildnerThe
742bda9807SSascha Wildner.Fn uprintf
752bda9807SSascha Wildnerfunction outputs to the current process' controlling tty, while
762bda9807SSascha Wildner.Fn kprintf ,
772bda9807SSascha Wildner.Fn ksprintf ,
782bda9807SSascha Wildner.Fn ksnprintf ,
792bda9807SSascha Wildner.Fn kvprintf ,
802bda9807SSascha Wildner.Fn kvsprintf
812bda9807SSascha Wildnerand
822bda9807SSascha Wildner.Fn kvsnprintf
832bda9807SSascha Wildnerwrite to the console as well as to the logging facility.
842bda9807SSascha WildnerThe
852bda9807SSascha Wildner.Fn tprintf
862bda9807SSascha Wildnerfunction outputs to the tty associated with the process
872bda9807SSascha Wildner.Fa p
882bda9807SSascha Wildnerand the logging facility if
892bda9807SSascha Wildner.Fa pri
902bda9807SSascha Wildneris not \-1.
912bda9807SSascha WildnerThe
922bda9807SSascha Wildner.Fn log
932bda9807SSascha Wildnerfunction sends the message to the kernel logging facility, using
942bda9807SSascha Wildnerthe log level as indicated by
952bda9807SSascha Wildner.Fa pri .
962bda9807SSascha Wildner.Pp
972bda9807SSascha WildnerEach of these related functions use the
982bda9807SSascha Wildner.Fa format ,
992bda9807SSascha Wildner.Fa str ,
1002bda9807SSascha Wildner.Fa size
1012bda9807SSascha Wildnerand
1022bda9807SSascha Wildner.Fa va
1032bda9807SSascha Wildnerparameters in the same manner as
1042bda9807SSascha Wildner.Xr printf 3 .
1052bda9807SSascha WildnerHowever, the
1062bda9807SSascha Wildner.Nm
1072bda9807SSascha Wildnerfunctions add two other conversion specifiers to
1082bda9807SSascha Wildner.Fa format :
1092bda9807SSascha Wildner.Pp
1102bda9807SSascha WildnerThe
1112bda9807SSascha Wildner.Cm \&%b
1122bda9807SSascha Wildneridentifier expects two arguments: an
1132bda9807SSascha Wildner.Vt int
1142bda9807SSascha Wildnerand a
1152bda9807SSascha Wildner.Vt "char *" .
1162bda9807SSascha WildnerThese are used as a register value and a print mask for decoding bitmasks.
1172bda9807SSascha WildnerThe print mask is made up of two parts: the base and the
1182bda9807SSascha Wildnerarguments.
1192bda9807SSascha WildnerThe base value is the output base expressed as an integer value;
1202bda9807SSascha Wildnerfor example, \e10 gives octal and \e20 gives hexadecimal.
1212bda9807SSascha WildnerThe arguments are made up of a sequence of bit identifiers.
1222bda9807SSascha WildnerEach bit identifier begins with an integer value which is the number of the
1232bda9807SSascha Wildnerbit (starting from 1) this identifier describes.
1242bda9807SSascha WildnerThe rest of the identifier is a string of characters containing the name of
1252bda9807SSascha Wildnerthe bit.
1262bda9807SSascha WildnerThe string is terminated by either the bit number at the start of the next
1272bda9807SSascha Wildnerbit identifier or
1282bda9807SSascha Wildner.Dv NUL
1292bda9807SSascha Wildnerfor the last bit identifier.
1302bda9807SSascha Wildner.Pp
1312bda9807SSascha WildnerThe
1322bda9807SSascha Wildner.Cm \&%D
1332bda9807SSascha Wildneridentifier is meant to assist in hexdumps.
1342bda9807SSascha WildnerIt requires two arguments: a
1352bda9807SSascha Wildner.Vt "u_char *"
1362bda9807SSascha Wildnerpointer and a
1372bda9807SSascha Wildner.Vt "char *"
1382bda9807SSascha Wildnerstring.
1392bda9807SSascha WildnerThe memory pointed to be the pointer is output in hexadecimal one byte at
1402bda9807SSascha Wildnera time.
1412bda9807SSascha WildnerThe string is used as a delimiter between individual bytes.
1422bda9807SSascha WildnerIf present, a width directive will specify the number of bytes to display.
1432bda9807SSascha WildnerBy default, 16 bytes of data are output.
1442bda9807SSascha Wildner.Pp
1452bda9807SSascha WildnerThe
1462bda9807SSascha Wildner.Fn log
1472bda9807SSascha Wildnerfunction uses
1482bda9807SSascha Wildner.Xr syslog 3
1492bda9807SSascha Wildnerlevel values
1502bda9807SSascha Wildner.Dv LOG_DEBUG
1512bda9807SSascha Wildnerthrough
1522bda9807SSascha Wildner.Dv LOG_EMERG
1532bda9807SSascha Wildnerfor its
1542bda9807SSascha Wildner.Fa pri
1552bda9807SSascha Wildnerparameter (mistakenly called
1562bda9807SSascha Wildner.Sq priority
1572bda9807SSascha Wildnerhere).
1582bda9807SSascha WildnerAlternatively, if a
1592bda9807SSascha Wildner.Fa pri
1602bda9807SSascha Wildnerof \-1 is given, the message will be appended to the last log message
1612bda9807SSascha Wildnerstarted by a previous call to
1622bda9807SSascha Wildner.Fn log .
1632bda9807SSascha WildnerAs these messages are generated by the kernel itself, the facility will
1642bda9807SSascha Wildneralways be
1652bda9807SSascha Wildner.Dv LOG_KERN .
1662bda9807SSascha Wildner.Sh RETURN VALUES
1672bda9807SSascha WildnerThe
1682bda9807SSascha Wildner.Fn kprintf ,
1692bda9807SSascha Wildner.Fn ksprintf ,
1702bda9807SSascha Wildner.Fn ksnprintf ,
1712bda9807SSascha Wildner.Fn kvprintf ,
1722bda9807SSascha Wildner.Fn kvsprintf ,
1732bda9807SSascha Wildner.Fn kvsnprintf ,
1742bda9807SSascha Wildner.Fn tprintf ,
175*d0c8ddbdSSascha Wildner.Fn uprintf ,
1762bda9807SSascha Wildnerand
177*d0c8ddbdSSascha Wildner.Fn log
1782bda9807SSascha Wildnerfunctions return the number of characters displayed.
1792bda9807SSascha Wildner.Sh EXAMPLES
1802bda9807SSascha WildnerThis example demonstrates the use of the
1812bda9807SSascha Wildner.Cm \&%b
1822bda9807SSascha Wildnerand
1832bda9807SSascha Wildner.Cm \&%D
1842bda9807SSascha Wildnerconversion specifiers.
1852bda9807SSascha WildnerThe function
1862bda9807SSascha Wildner.Bd -literal -offset indent
1872bda9807SSascha Wildnervoid
1882bda9807SSascha Wildnerkprintf_test(void)
1892bda9807SSascha Wildner{
1902bda9807SSascha Wildner
1912bda9807SSascha Wildner	kprintf("reg=%b\en", 3, "\e10\e2BITTWO\e1BITONE\en");
1922bda9807SSascha Wildner	kprintf("out: %4D\en", "AAAA", ":");
1932bda9807SSascha Wildner}
1942bda9807SSascha Wildner.Ed
1952bda9807SSascha Wildner.Pp
1962bda9807SSascha Wildnerwill produce the following output:
1972bda9807SSascha Wildner.Bd -literal -offset indent
1982bda9807SSascha Wildnerreg=3<BITTWO,BITONE>
1992bda9807SSascha Wildnerout: 41:41:41:41
2002bda9807SSascha Wildner.Ed
2012bda9807SSascha Wildner.Pp
2022bda9807SSascha WildnerThe call
2032bda9807SSascha Wildner.Bd -literal -offset indent
2042bda9807SSascha Wildnerlog(LOG_DEBUG, "%s%d: been there.\en", sc->sc_name, sc->sc_unit);
2052bda9807SSascha Wildner.Ed
2062bda9807SSascha Wildner.Pp
2072bda9807SSascha Wildnerwill add the appropriate debug message at priority
2082bda9807SSascha Wildner.Dq Li kern.debug
2092bda9807SSascha Wildnerto the system log.
2102bda9807SSascha Wildner.Sh SEE ALSO
2112bda9807SSascha Wildner.Xr printf 3 ,
2122bda9807SSascha Wildner.Xr syslog 3
213