#ifndef _DEV_USB_USBHIST_H_
#define _DEV_USB_USBHIST_H_
#if defined(_KERNEL_OPT)
#include "opt_usb.h"
#endif
#if defined(USBHIST_PRINT) && !defined(KERNHIST_PRINT)
#define KERNHIST_PRINT 1
#endif
#include <sys/kernhist.h>
#ifdef USB_DEBUG
extern int usbdebug;
#define USBHIST_DECL(NAME) KERNHIST_DECL(NAME)
#define USBHIST_DEFINE(NAME) KERNHIST_DEFINE(NAME)
#define USBHIST_INIT(NAME,N) KERNHIST_INIT(NAME,N)
#define USBHIST_LINK_STATIC(NAME) KERNHIST_LINK_STATIC(NAME)
#define USBHIST_LOGN(NAME,N,FMT,A,B,C,D) do { \
if ((NAME) >= (N)) { \
KERNHIST_LOG(usbhist,FMT,A,B,C,D); \
} \
} while (0)
#define USBHIST_LOGM(NAME,N,FMT,A,B,C,D) do { \
if ((NAME) & (N)) { \
KERNHIST_LOG(usbhist,FMT,A,B,C,D); \
} \
} while (0)
#define USBHIST_LOG(NAME,FMT,A,B,C,D) USBHIST_LOGN(NAME,1,FMT,A,B,C,D)
#define USBHIST_CALLED(NAME) do { \
if ((NAME) != 0) { \
KERNHIST_CALLED(usbhist); \
} \
} while (0)
#define USBHIST_CALLARGS(NAME,FMT,A,B,C,D) do { \
if ((NAME) != 0) { \
KERNHIST_CALLARGS(usbhist,FMT,A,B,C,D); \
} \
} while (0)
#define USBHIST_CALLARGSN(NAME,N,FMT,A,B,C,D) do { \
if ((NAME) >= (N)) { \
KERNHIST_CALLARGS(usbhist,FMT,A,B,C,D); \
} \
} while (0)
#define USBHIST_FUNC() KERNHIST_FUNC(__func__)
USBHIST_DECL(usbhist);
#else
#define USBHIST_DECL(NAME)
#define USBHIST_DEFINE(NAME)
#define USBHIST_INIT(NAME,N)
#define USBHIST_LINK_STATIC(NAME)
#define USBHIST_LOGN(N,NAME,FMT,A,B,C,D) do { } while(0)
#define USBHIST_LOGM(N,NAME,FMT,A,B,C,D) do { } while(0)
#define USBHIST_LOG(NAME,FMT,A,B,C,D) do { } while(0)
#define USBHIST_CALLARGS(NAME,FMT,A,B,C,D)
#define USBHIST_CALLARGSN(NAME,N,FMT,A,B,C,D)
#define USBHIST_CALLED(NAME)
#define USBHIST_FUNC()
#endif
#endif