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 $ 282bda9807SSascha Wildner.\" 29e9223b63SSascha Wildner.Dd December 21, 2012 302bda9807SSascha Wildner.Dt KPRINTF 9 312bda9807SSascha Wildner.Os 322bda9807SSascha Wildner.Sh NAME 332bda9807SSascha Wildner.Nm kprintf , 342bda9807SSascha Wildner.Nm ksprintf , 352bda9807SSascha Wildner.Nm ksnprintf , 362bda9807SSascha Wildner.Nm kvprintf , 372bda9807SSascha Wildner.Nm kvsprintf , 382bda9807SSascha Wildner.Nm kvsnprintf , 391c989a23SSascha Wildner.Nm krateprintf , 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" 591c989a23SSascha Wildner.Ft void 601c989a23SSascha Wildner.Fn krateprintf "struct krate *rate" "const char *format" ... 61d0c8ddbdSSascha Wildner.Ft int 622bda9807SSascha Wildner.Fn tprintf "struct proc *p" "int pri" "const char *format" ... 632bda9807SSascha Wildner.Ft int 642bda9807SSascha Wildner.Fn uprintf "const char *format" ... 652bda9807SSascha Wildner.In sys/syslog.h 66d0c8ddbdSSascha Wildner.Ft int 672bda9807SSascha Wildner.Fn log "int pri" "const char *format" ... 682bda9807SSascha Wildner.Sh DESCRIPTION 692bda9807SSascha WildnerThe 702bda9807SSascha Wildner.Nm 712bda9807SSascha Wildnerfamily of functions are similar to the 722bda9807SSascha Wildner.Xr printf 3 732bda9807SSascha Wildnerfamily of functions. 742bda9807SSascha WildnerThe different functions each use a different output stream. 752bda9807SSascha WildnerThe 762bda9807SSascha Wildner.Fn uprintf 772bda9807SSascha Wildnerfunction outputs to the current process' controlling tty, while 782bda9807SSascha Wildner.Fn kprintf , 792bda9807SSascha Wildner.Fn ksprintf , 802bda9807SSascha Wildner.Fn ksnprintf , 812bda9807SSascha Wildner.Fn kvprintf , 822bda9807SSascha Wildner.Fn kvsprintf 832bda9807SSascha Wildnerand 842bda9807SSascha Wildner.Fn kvsnprintf 852bda9807SSascha Wildnerwrite to the console as well as to the logging facility. 862bda9807SSascha WildnerThe 872bda9807SSascha Wildner.Fn tprintf 882bda9807SSascha Wildnerfunction outputs to the tty associated with the process 892bda9807SSascha Wildner.Fa p 902bda9807SSascha Wildnerand the logging facility if 912bda9807SSascha Wildner.Fa pri 922bda9807SSascha Wildneris not \-1. 932bda9807SSascha WildnerThe 942bda9807SSascha Wildner.Fn log 952bda9807SSascha Wildnerfunction sends the message to the kernel logging facility, using 962bda9807SSascha Wildnerthe log level as indicated by 972bda9807SSascha Wildner.Fa pri . 982bda9807SSascha Wildner.Pp 992bda9807SSascha WildnerEach of these related functions use the 1002bda9807SSascha Wildner.Fa format , 1012bda9807SSascha Wildner.Fa str , 1022bda9807SSascha Wildner.Fa size 1032bda9807SSascha Wildnerand 1042bda9807SSascha Wildner.Fa va 1052bda9807SSascha Wildnerparameters in the same manner as 1062bda9807SSascha Wildner.Xr printf 3 . 1072bda9807SSascha WildnerHowever, the 1082bda9807SSascha Wildner.Nm 109e9223b63SSascha Wildnerfunctions add another conversion specifier to 1102bda9807SSascha Wildner.Fa format : 1112bda9807SSascha Wildner.Pp 1122bda9807SSascha WildnerThe 1132bda9807SSascha Wildner.Cm \&%b 1142bda9807SSascha Wildneridentifier expects two arguments: an 1152bda9807SSascha Wildner.Vt int 1162bda9807SSascha Wildnerand a 1172bda9807SSascha Wildner.Vt "char *" . 1182bda9807SSascha WildnerThese are used as a register value and a print mask for decoding bitmasks. 1192bda9807SSascha WildnerThe print mask is made up of two parts: the base and the 1202bda9807SSascha Wildnerarguments. 1212bda9807SSascha WildnerThe base value is the output base expressed as an integer value; 1222bda9807SSascha Wildnerfor example, \e10 gives octal and \e20 gives hexadecimal. 1232bda9807SSascha WildnerThe arguments are made up of a sequence of bit identifiers. 1242bda9807SSascha WildnerEach bit identifier begins with an integer value which is the number of the 1252bda9807SSascha Wildnerbit (starting from 1) this identifier describes. 1262bda9807SSascha WildnerThe rest of the identifier is a string of characters containing the name of 1272bda9807SSascha Wildnerthe bit. 1282bda9807SSascha WildnerThe string is terminated by either the bit number at the start of the next 1292bda9807SSascha Wildnerbit identifier or 1302bda9807SSascha Wildner.Dv NUL 1312bda9807SSascha Wildnerfor the last bit identifier. 1322bda9807SSascha Wildner.Pp 1332bda9807SSascha WildnerThe 1342bda9807SSascha Wildner.Fn log 1352bda9807SSascha Wildnerfunction uses 1362bda9807SSascha Wildner.Xr syslog 3 1372bda9807SSascha Wildnerlevel values 1382bda9807SSascha Wildner.Dv LOG_DEBUG 1392bda9807SSascha Wildnerthrough 1402bda9807SSascha Wildner.Dv LOG_EMERG 1412bda9807SSascha Wildnerfor its 1422bda9807SSascha Wildner.Fa pri 1432bda9807SSascha Wildnerparameter (mistakenly called 1442bda9807SSascha Wildner.Sq priority 1452bda9807SSascha Wildnerhere). 1462bda9807SSascha WildnerAlternatively, if a 1472bda9807SSascha Wildner.Fa pri 1482bda9807SSascha Wildnerof \-1 is given, the message will be appended to the last log message 1492bda9807SSascha Wildnerstarted by a previous call to 1502bda9807SSascha Wildner.Fn log . 1512bda9807SSascha WildnerAs these messages are generated by the kernel itself, the facility will 1522bda9807SSascha Wildneralways be 1532bda9807SSascha Wildner.Dv LOG_KERN . 1541c989a23SSascha Wildner.Pp 1551c989a23SSascha WildnerThe 1561c989a23SSascha Wildner.Fn krateprintf 1571c989a23SSascha Wildnerfunction is a rate controlled version of 1581c989a23SSascha Wildner.Fn kprintf . 1591c989a23SSascha WildnerThe 160d8ca90a6SSascha Wildner.Fa freq 161d8ca90a6SSascha Wildnermember of the 1621c989a23SSascha Wildner.Vt struct krate 1631c989a23SSascha Wildnerpointed to by 1641c989a23SSascha Wildner.Fa rate 1651c989a23SSascha Wildnermust be initialized with the desired reporting frequency. 166d8ca90a6SSascha WildnerA 167d8ca90a6SSascha Wildner.Fa freq 168d8ca90a6SSascha Wildnerof 0 will result in no output. 169d8ca90a6SSascha WildnerInitializing 170d8ca90a6SSascha Wildner.Fa count 171d8ca90a6SSascha Wildnerto a negative value allows an initial burst. 1722bda9807SSascha Wildner.Sh RETURN VALUES 1732bda9807SSascha WildnerThe 1742bda9807SSascha Wildner.Fn kprintf , 1752bda9807SSascha Wildner.Fn ksprintf , 1762bda9807SSascha Wildner.Fn ksnprintf , 1772bda9807SSascha Wildner.Fn kvprintf , 1782bda9807SSascha Wildner.Fn kvsprintf , 1792bda9807SSascha Wildner.Fn kvsnprintf , 1802bda9807SSascha Wildner.Fn tprintf , 181d0c8ddbdSSascha Wildner.Fn uprintf , 1822bda9807SSascha Wildnerand 183d0c8ddbdSSascha Wildner.Fn log 1842bda9807SSascha Wildnerfunctions return the number of characters displayed. 1852bda9807SSascha Wildner.Sh EXAMPLES 1862bda9807SSascha WildnerThis example demonstrates the use of the 1872bda9807SSascha Wildner.Cm \&%b 188*490d5310SSascha Wildnerconversion specifier. 1892bda9807SSascha WildnerThe function 1902bda9807SSascha Wildner.Bd -literal -offset indent 1912bda9807SSascha Wildnervoid 1922bda9807SSascha Wildnerkprintf_test(void) 1932bda9807SSascha Wildner{ 1942bda9807SSascha Wildner 1952bda9807SSascha Wildner kprintf("reg=%b\en", 3, "\e10\e2BITTWO\e1BITONE\en"); 1962bda9807SSascha Wildner} 1972bda9807SSascha Wildner.Ed 1982bda9807SSascha Wildner.Pp 1992bda9807SSascha Wildnerwill produce the following output: 2002bda9807SSascha Wildner.Bd -literal -offset indent 2012bda9807SSascha Wildnerreg=3<BITTWO,BITONE> 2022bda9807SSascha Wildner.Ed 2032bda9807SSascha Wildner.Pp 2042bda9807SSascha WildnerThe call 2052bda9807SSascha Wildner.Bd -literal -offset indent 2062bda9807SSascha Wildnerlog(LOG_DEBUG, "%s%d: been there.\en", sc->sc_name, sc->sc_unit); 2072bda9807SSascha Wildner.Ed 2082bda9807SSascha Wildner.Pp 2092bda9807SSascha Wildnerwill add the appropriate debug message at priority 2102bda9807SSascha Wildner.Dq Li kern.debug 2112bda9807SSascha Wildnerto the system log. 2122bda9807SSascha Wildner.Sh SEE ALSO 2132bda9807SSascha Wildner.Xr printf 3 , 2142bda9807SSascha Wildner.Xr syslog 3 215