diff options
author | Hans Rosenfeld <hans.rosenfeld@nexenta.com> | 2014-10-22 17:32:17 +0200 |
---|---|---|
committer | Robert Mustacchi <rm@joyent.com> | 2014-11-03 09:35:49 -0800 |
commit | ca9a201c205f81e7d3779aa2571a820f07423b9f (patch) | |
tree | b29d03de8d9977712dc5147f4a885d4a5f9cd675 /usr/src/uts/common/os/printf.c | |
parent | 0b4538017e5f84a04187012fe88bb3e46f1c5f51 (diff) | |
download | illumos-gate-ca9a201c205f81e7d3779aa2571a820f07423b9f.tar.gz |
2922 dev_err() needs manpage
5272 dev_err(9F) ignores special first character of message
Reviewed by: Dan McDonald <danmcd@omniti.com>
Reviewed by: Marcel Telka <marcel@telka.sk>
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
Reviewed by: Garrett D'Amore <garrett@damore.org>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Approved by: Robert Mustacchi <rm@joyent.com>
Diffstat (limited to 'usr/src/uts/common/os/printf.c')
-rw-r--r-- | usr/src/uts/common/os/printf.c | 63 |
1 files changed, 30 insertions, 33 deletions
diff --git a/usr/src/uts/common/os/printf.c b/usr/src/uts/common/os/printf.c index d47443334f..3ef207d77b 100644 --- a/usr/src/uts/common/os/printf.c +++ b/usr/src/uts/common/os/printf.c @@ -22,7 +22,7 @@ * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * - * Copyright 2012 Nexenta Systems, Inc. All rights reserved. + * Copyright 2014 Nexenta Systems, Inc. All rights reserved. */ #include <sys/param.h> @@ -70,8 +70,8 @@ static char ce_suffix[CE_IGNORE][2] = { "", "\n", "\n", "" }; static void cprintf(const char *fmt, va_list adx, int sl, const char *prefix, - const char *suffix, void *site, int mid, int sid, int level, - zoneid_t zoneid) + const char *suffix, void *site, int mid, int sid, int level, + zoneid_t zoneid, dev_info_t *dip) { uint32_t msgid; size_t bufsize = LOG_MSGSIZE; @@ -112,6 +112,9 @@ retry: "%s: [ID %u FACILITY_AND_PRIORITY] ", mod_containing_pc(site), msgid); msgp += snprintf(msgp, bufend - msgp, prefix); + if (dip) + msgp += snprintf(msgp, bufend - msgp, "%s%d: ", + ddi_driver_name(dip), ddi_get_instance(dip)); msgp += vsnprintf(msgp, bufend - msgp, fmt, adx); msgp += snprintf(msgp, bufend - msgp, suffix); len = strlen(body); @@ -178,7 +181,7 @@ void vzprintf(zoneid_t zoneid, const char *fmt, va_list adx) { cprintf(fmt, adx, SL_CONSOLE | SL_NOTE, "", "", caller(), 0, 0, 0, - zoneid); + zoneid, NULL); } void @@ -195,7 +198,7 @@ printf(const char *fmt, ...) va_start(adx, fmt); cprintf(fmt, adx, SL_CONSOLE | SL_NOTE, "", "", caller(), 0, 0, 0, - GLOBAL_ZONEID); + GLOBAL_ZONEID, NULL); va_end(adx); } @@ -207,7 +210,7 @@ zprintf(zoneid_t zoneid, const char *fmt, ...) va_start(adx, fmt); cprintf(fmt, adx, SL_CONSOLE | SL_NOTE, "", "", caller(), 0, 0, 0, - zoneid); + zoneid, NULL); va_end(adx); } @@ -219,12 +222,12 @@ vuprintf(const char *fmt, va_list adx) /* Message the user tty, if any, and the global zone syslog */ cprintf(fmt, adx, SL_CONSOLE | SL_LOGONLY | SL_USER | SL_NOTE, - "", "", caller(), 0, 0, 0, GLOBAL_ZONEID); + "", "", caller(), 0, 0, 0, GLOBAL_ZONEID, NULL); /* Now message the local zone syslog */ if (!INGLOBALZONE(curproc)) cprintf(fmt, adxcp, SL_CONSOLE | SL_LOGONLY | SL_NOTE, - "", "", caller(), 0, 0, 0, getzoneid()); + "", "", caller(), 0, 0, 0, getzoneid(), NULL); va_end(adxcp); } @@ -242,21 +245,28 @@ uprintf(const char *fmt, ...) va_end(adx); } -void -vzcmn_err(zoneid_t zoneid, int ce, const char *fmt, va_list adx) +static void +vzdcmn_err(zoneid_t zoneid, int ce, const char *fmt, va_list adx, + dev_info_t *dip) { if (ce == CE_PANIC) vpanic(fmt, adx); if ((uint_t)ce < CE_IGNORE) cprintf(fmt, adx, ce_to_sl[ce] | SL_CONSOLE, ce_prefix[ce], ce_suffix[ce], caller(), 0, 0, 0, - zoneid); + zoneid, dip); +} + +void +vzcmn_err(zoneid_t zoneid, int ce, const char *fmt, va_list adx) +{ + vzdcmn_err(zoneid, ce, fmt, adx, NULL); } void vcmn_err(int ce, const char *fmt, va_list adx) { - vzcmn_err(GLOBAL_ZONEID, ce, fmt, adx); + vzdcmn_err(GLOBAL_ZONEID, ce, fmt, adx, NULL); } /*PRINTFLIKE2*/ @@ -266,12 +276,7 @@ cmn_err(int ce, const char *fmt, ...) va_list adx; va_start(adx, fmt); - if (ce == CE_PANIC) - vpanic(fmt, adx); - if ((uint_t)ce < CE_IGNORE) - cprintf(fmt, adx, ce_to_sl[ce] | SL_CONSOLE, - ce_prefix[ce], ce_suffix[ce], caller(), 0, 0, 0, - GLOBAL_ZONEID); + vzdcmn_err(GLOBAL_ZONEID, ce, fmt, adx, NULL); va_end(adx); } @@ -282,11 +287,7 @@ zcmn_err(zoneid_t zoneid, int ce, const char *fmt, ...) va_list adx; va_start(adx, fmt); - if (ce == CE_PANIC) - vpanic(fmt, adx); - if ((uint_t)ce < CE_IGNORE) - cprintf(fmt, adx, ce_to_sl[ce] | SL_CONSOLE, ce_prefix[ce], - ce_suffix[ce], caller(), 0, 0, 0, zoneid); + vzdcmn_err(zoneid, ce, fmt, adx, NULL); va_end(adx); } @@ -294,15 +295,11 @@ zcmn_err(zoneid_t zoneid, int ce, const char *fmt, ...) void dev_err(dev_info_t *dip, int ce, char *fmt, ...) { - va_list ap; - char buf[LOG_MSGSIZE]; - - (void) snprintf(buf, sizeof (buf), "%s%d: %s", - ddi_driver_name(dip), ddi_get_instance(dip), fmt); + va_list adx; - va_start(ap, fmt); - vcmn_err(ce, buf, ap); - va_end(ap); + va_start(adx, fmt); + vzdcmn_err(GLOBAL_ZONEID, ce, fmt, adx, dip); + va_end(adx); } int @@ -343,7 +340,7 @@ strlog(short mid, short sid, char level, ushort_t sl, char *fmt, ...) va_list adx; va_start(adx, fmt); cprintf(fmt, adx, sl, "", "", caller(), mid, sid, level, - GLOBAL_ZONEID); + GLOBAL_ZONEID, NULL); va_end(adx); } return (1); @@ -354,6 +351,6 @@ vstrlog(short mid, short sid, char level, ushort_t sl, char *fmt, va_list adx) { if (sl & log_global.lz_active) cprintf(fmt, adx, sl, "", "", caller(), mid, sid, level, - GLOBAL_ZONEID); + GLOBAL_ZONEID, NULL); return (1); } |