diff options
author | Alexey Zaytsev <alexey.zaytsev@nexenta.com> | 2012-06-18 21:47:56 -0400 |
---|---|---|
committer | Alexey Zaytsev <alexey.zaytsev@nexenta.com> | 2012-06-18 21:47:56 -0400 |
commit | b3a7691da42408392718e2d2dbae9efa7fed49d3 (patch) | |
tree | 918f203bcd4b79ad0d06f5b1e37d2246f1d715a1 /usr/src/uts | |
parent | 9d75dfda4910937c194437c3e1e45ca07c889ee5 (diff) | |
download | illumos-joyent-b3a7691da42408392718e2d2dbae9efa7fed49d3.tar.gz |
1910 Implement a generic dev_err
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Garrett D'Amore <garrett@damore.org>
Approved by: Dan McDonald <danmcd@nexenta.com>
Diffstat (limited to 'usr/src/uts')
-rw-r--r-- | usr/src/uts/common/os/printf.c | 18 | ||||
-rw-r--r-- | usr/src/uts/common/sys/cmn_err.h | 21 |
2 files changed, 25 insertions, 14 deletions
diff --git a/usr/src/uts/common/os/printf.c b/usr/src/uts/common/os/printf.c index 1caedb33b6..c9e1524de0 100644 --- a/usr/src/uts/common/os/printf.c +++ b/usr/src/uts/common/os/printf.c @@ -21,6 +21,8 @@ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. + * + * Copyright 2012 Nexenta Systems, Inc. All rights reserved. */ #include <sys/param.h> @@ -48,6 +50,7 @@ #include <sys/panic.h> #include <sys/spl.h> #include <sys/zone.h> +#include <sys/sunddi.h> /* * In some debugging situations it's useful to log all messages to panicbuf, @@ -287,6 +290,21 @@ zcmn_err(zoneid_t zoneid, int ce, const char *fmt, ...) va_end(adx); } +/*PRINTFLIKE3*/ +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_start(ap, fmt); + vcmn_err(ce, buf, ap); + va_end(ap); +} + int assfail(const char *a, const char *f, int l) { diff --git a/usr/src/uts/common/sys/cmn_err.h b/usr/src/uts/common/sys/cmn_err.h index e710d8e5c3..736c77b9dc 100644 --- a/usr/src/uts/common/sys/cmn_err.h +++ b/usr/src/uts/common/sys/cmn_err.h @@ -26,17 +26,19 @@ /* * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. + * + * Copyright 2012 Nexenta Systems, Inc. All rights reserved. */ #ifndef _SYS_CMN_ERR_H #define _SYS_CMN_ERR_H -#pragma ident "%Z%%M% %I% %E% SMI" - #if defined(_KERNEL) && !defined(_ASM) #include <sys/va_list.h> #endif +#include <sys/dditypes.h> + #ifdef __cplusplus extern "C" { #endif @@ -56,47 +58,40 @@ extern "C" { /*PRINTFLIKE2*/ extern void cmn_err(int, const char *, ...) __KPRINTFLIKE(2); -#pragma rarely_called(cmn_err) extern void vzcmn_err(zoneid_t, int, const char *, __va_list) __KVPRINTFLIKE(3); -#pragma rarely_called(vzcmn_err) + +extern void dev_err(dev_info_t *, int, char *, ...) + __KPRINTFLIKE(3); extern void vcmn_err(int, const char *, __va_list) __KVPRINTFLIKE(2); -#pragma rarely_called(vcmn_err) /*PRINTFLIKE3*/ extern void zcmn_err(zoneid_t, int, const char *, ...) __KPRINTFLIKE(3); -#pragma rarely_called(zcmn_err) /*PRINTFLIKE1*/ extern void printf(const char *, ...) __KPRINTFLIKE(1); -#pragma rarely_called(printf) extern void vzprintf(zoneid_t, const char *, __va_list) __KVPRINTFLIKE(2); -#pragma rarely_called(vzprintf) /*PRINTFLIKE2*/ extern void zprintf(zoneid_t, const char *, ...) __KPRINTFLIKE(2); -#pragma rarely_called(zprintf) extern void vprintf(const char *, __va_list) __KVPRINTFLIKE(1); -#pragma rarely_called(vprintf) /*PRINTFLIKE1*/ extern void uprintf(const char *, ...) __KPRINTFLIKE(1); -#pragma rarely_called(uprintf) extern void vuprintf(const char *, __va_list) __KVPRINTFLIKE(1); -#pragma rarely_called(vuprintf) /*PRINTFLIKE3*/ extern size_t snprintf(char *, size_t, const char *, ...) @@ -112,11 +107,9 @@ extern char *vsprintf(char *, const char *, __va_list) /*PRINTFLIKE1*/ extern void panic(const char *, ...) __KPRINTFLIKE(1) __NORETURN; -#pragma rarely_called(panic) extern void vpanic(const char *, __va_list) __KVPRINTFLIKE(1) __NORETURN; -#pragma rarely_called(vpanic) #endif /* _KERNEL */ #endif /* !_ASM */ |