diff options
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); } |