Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F132639812
D6247.id16422.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
7 KB
Referenced Files
None
Subscribers
None
D6247.id16422.diff
View Options
Index: head/sys/conf/NOTES
===================================================================
--- head/sys/conf/NOTES
+++ head/sys/conf/NOTES
@@ -3061,3 +3061,6 @@
# zlib I/O stream support
# This enables support for compressed core dumps.
options GZIO
+
+# BHND(4) drivers
+options BHND_LOGLEVEL # Logging threshold level
\ No newline at end of file
Index: head/sys/conf/options
===================================================================
--- head/sys/conf/options
+++ head/sys/conf/options
@@ -979,3 +979,6 @@
# Intel em(4) driver
EM_MULTIQUEUE opt_em.h
+
+# BHND(4) driver
+BHND_LOGLEVEL opt_global.h
Index: head/sys/dev/bhnd/bhnd.h
===================================================================
--- head/sys/dev/bhnd/bhnd.h
+++ head/sys/dev/bhnd/bhnd.h
@@ -39,6 +39,7 @@
#include "bhnd_ids.h"
#include "bhnd_types.h"
+#include "bhnd_debug.h"
#include "bhnd_bus_if.h"
extern devclass_t bhnd_devclass;
Index: head/sys/dev/bhnd/bhnd_debug.h
===================================================================
--- head/sys/dev/bhnd/bhnd_debug.h
+++ head/sys/dev/bhnd/bhnd_debug.h
@@ -0,0 +1,192 @@
+/*-
+ * Copyright (c) 2016 Michael Zhilin <mizhka@gmail.com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer,
+ * without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+ * redistribution must be conditioned upon including a substantially
+ * similar Disclaimer requirement for further binary redistribution.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGES.
+ */
+
+/* $FreeBSD$ */
+
+/*
+ * This file provides set of macros for logging:
+ * - BHND_<LEVEL> and
+ * - BHND_<LEVEL>_DEV
+ * where LEVEL = {ERROR,WARN,INFO,DEBUG}
+ *
+ * BHND_<LEVEL> macros is proxies to printf call and accept same parameters,
+ * for instance:
+ * BHND_INFO("register %d has value %d", reg, val);
+ *
+ * BHND_<LEVEL>_DEV macros is proxies to device_printf call and accept
+ * same parameters, for instance:
+ * BHND_INFO_DEV(dev, "register %d has value %d", reg, val);
+ *
+ * All macros contains newline char at the end of each call
+ *
+ * ERROR, WARN, INFO messages are printed only if:
+ * - log message level is lower than BHND_LOGGING (logging threshold)
+ *
+ * DEBUG, TRACE messages are printed only if:
+ * - bootverbose and
+ * - log message level is lower than BHND_LOGGING (logging threshold)
+ *
+ * In addition, for debugging purpose log message contains information about
+ * file name and line number if BHND_LOGGING is more than BHND_INFO_LEVEL
+ *
+ * NOTE: macros starting with underscore (_) are private and should be not used
+ *
+ * To override logging (for instance, force tracing), you can use:
+ * - "options BHND_LOGLEVEL=BHND_TRACE_LEVEL" in kernel configuration
+ * - "#define BHND_LOGGING BHND_TRACE_LEVEL" in source code file
+ *
+ * NOTE: kernel config option doesn't override log level defined on file level,
+ * so try to avoid "#define BHND_LOGGING"
+ */
+
+#ifndef _BHND_BHND_DEBUG_H_
+#define _BHND_BHND_DEBUG_H_
+
+#include <sys/systm.h>
+
+#include "opt_global.h"
+
+#define BHND_ERROR_LEVEL 0x00
+#define BHND_ERROR_MSG "ERROR"
+#define BHND_WARN_LEVEL 0x10
+#define BHND_WARN_MSG "!WARN"
+#define BHND_INFO_LEVEL 0x20
+#define BHND_INFO_MSG " info"
+#define BHND_DEBUG_LEVEL 0x30
+#define BHND_DEBUG_MSG "debug"
+#define BHND_TRACE_LEVEL 0x40
+#define BHND_TRACE_MSG "trace"
+
+#if !(defined(BHND_LOGGING))
+#if !(defined(BHND_LOGLEVEL))
+/* By default logging will print only INFO+ message*/
+#define BHND_LOGGING BHND_INFO_LEVEL
+#else /* defined(BHND_LOGLEVEL) */
+/* Kernel configuration specifies logging level */
+#define BHND_LOGGING BHND_LOGLEVEL
+#endif /* !(defined(BHND_LOGLEVEL)) */
+#endif /* !(defined(BHND_LOGGING)) */
+
+#if BHND_LOGGING > BHND_INFO_LEVEL
+#define _BHND_PRINT(fn, level, fmt, ...) \
+ do { \
+ if (level##LEVEL < BHND_DEBUG_LEVEL || bootverbose) \
+ fn "[BHND " level##MSG "] %s:%d => " fmt "\n", \
+ __func__, __LINE__, ## __VA_ARGS__); \
+ } while(0);
+#else /* BHND_LOGGING <= BHND_INFO_LEVEL */
+#define _BHND_PRINT(fn, level, fmt, ...) \
+ do { \
+ if (level##LEVEL < BHND_DEBUG_LEVEL || bootverbose) \
+ fn "bhnd: " fmt "\n", ## __VA_ARGS__); \
+ } while(0);
+#endif /* BHND_LOGGING > BHND_INFO_LEVEL */
+
+
+#define _BHND_RAWPRINTFN printf(
+#define _BHND_DEVPRINTFN(dev) device_printf(dev,
+
+#define _BHND_LOGPRINT(level, fmt, ...) \
+ _BHND_PRINT(_BHND_RAWPRINTFN, level, fmt, ## __VA_ARGS__)
+#define _BHND_DEVPRINT(dev, level, fmt, ...) \
+ _BHND_PRINT(_BHND_DEVPRINTFN(dev), level, fmt, ## __VA_ARGS__)
+
+#define BHND_ERROR(fmt, ...) \
+ _BHND_LOGPRINT(BHND_ERROR_, fmt, ## __VA_ARGS__);
+#define BHND_ERROR_DEV(dev, fmt, ...) \
+ _BHND_DEVPRINT(dev, BHND_ERROR_, fmt, ## __VA_ARGS__)
+
+#if BHND_LOGGING >= BHND_WARN_LEVEL
+#define BHND_WARN(fmt, ...) \
+ _BHND_LOGPRINT(BHND_WARN_, fmt, ## __VA_ARGS__)
+#define BHND_WARN_DEV(dev, fmt, ...) \
+ _BHND_DEVPRINT(dev, BHND_WARN_, fmt, ## __VA_ARGS__)
+
+#if BHND_LOGGING >= BHND_INFO_LEVEL
+#define BHND_INFO(fmt, ...) \
+ _BHND_LOGPRINT(BHND_INFO_, fmt, ## __VA_ARGS__)
+#define BHND_INFO_DEV(dev, fmt, ...) \
+ _BHND_DEVPRINT(dev, BHND_INFO_, fmt, ## __VA_ARGS__)
+
+#if BHND_LOGGING >= BHND_DEBUG_LEVEL
+#define BHND_DEBUG(fmt, ...) \
+ _BHND_LOGPRINT(BHND_DEBUG_, fmt, ## __VA_ARGS__)
+#define BHND_DEBUG_DEV(dev, fmt, ...) \
+ _BHND_DEVPRINT(dev, BHND_DEBUG_, fmt, ## __VA_ARGS__)
+
+#if BHND_LOGGING >= BHND_TRACE_LEVEL
+#define BHND_TRACE(fmt, ...) \
+ _BHND_LOGPRINT(BHND_TRACE_, fmt, ## __VA_ARGS__)
+#define BHND_TRACE_DEV(dev, fmt, ...) \
+ _BHND_DEVPRINT(dev, BHND_TRACE_, fmt, ## __VA_ARGS__)
+
+#endif /* BHND_LOGGING >= BHND_TRACE_LEVEL */
+#endif /* BHND_LOGGING >= BHND_DEBUG_LEVEL */
+#endif /* BHND_LOGGING >= BHND_INFO_LEVEL */
+#endif /* BHND_LOGGING >= BHND_WARN_LEVEL */
+
+/*
+ * Empty defines without device context
+ */
+#if !(defined(BHND_WARN))
+#define BHND_WARN(fmt, ...);
+#endif
+
+#if !(defined(BHND_INFO))
+#define BHND_INFO(fmt, ...);
+#endif
+
+#if !(defined(BHND_DEBUG))
+#define BHND_DEBUG(fmt, ...);
+#endif
+
+#if !(defined(BHND_TRACE))
+#define BHND_TRACE(fmt, ...);
+#endif
+
+/*
+ * Empty defines with device context
+ */
+#if !(defined(BHND_WARN_DEV))
+#define BHND_WARN_DEV(dev, fmt, ...);
+#endif
+
+#if !(defined(BHND_INFO_DEV))
+#define BHND_INFO_DEV(dev, fmt, ...);
+#endif
+
+#if !(defined(BHND_DEBUG_DEV))
+#define BHND_DEBUG_DEV(dev, fmt, ...);
+#endif
+
+#if !(defined(BHND_TRACE_DEV))
+#define BHND_TRACE_DEV(dev, fmt, ...);
+#endif
+
+#endif /* _BHND_BHND_DEBUG_H_ */
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Oct 19, 4:17 PM (14 h, 19 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23912013
Default Alt Text
D6247.id16422.diff (7 KB)
Attached To
Mode
D6247: [BHND] Add logging macroses
Attached
Detach File
Event Timeline
Log In to Comment