Mercurial > illumos > illumos-gate
changeset 13730:bd805c3b8675
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>
author | Alexey Zaytsev <alexey.zaytsev@nexenta.com> |
---|---|
date | Mon, 18 Jun 2012 21:47:56 -0400 |
parents | 9823b670b193 |
children | 35bcb68f2175 |
files | usr/src/uts/common/os/printf.c usr/src/uts/common/sys/cmn_err.h |
diffstat | 2 files changed, 25 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/common/os/printf.c Mon Jun 18 21:47:54 2012 -0400 +++ b/usr/src/uts/common/os/printf.c Mon Jun 18 21:47:56 2012 -0400 @@ -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 @@ 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) {
--- a/usr/src/uts/common/sys/cmn_err.h Mon Jun 18 21:47:54 2012 -0400 +++ b/usr/src/uts/common/sys/cmn_err.h Mon Jun 18 21:47:56 2012 -0400 @@ -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 @@ /*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 @@ /*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 */