1*d914a3c1Smrg /* $NetBSD: usbhist.h,v 1.8 2021/12/11 19:24:21 mrg Exp $ */ 27c2a9a09Sskrll 37c2a9a09Sskrll /* 47c2a9a09Sskrll * Copyright (c) 2012 Matthew R. Green 57c2a9a09Sskrll * All rights reserved. 67c2a9a09Sskrll * 77c2a9a09Sskrll * Redistribution and use in source and binary forms, with or without 87c2a9a09Sskrll * modification, are permitted provided that the following conditions 97c2a9a09Sskrll * are met: 107c2a9a09Sskrll * 1. Redistributions of source code must retain the above copyright 117c2a9a09Sskrll * notice, this list of conditions and the following disclaimer. 127c2a9a09Sskrll * 2. Redistributions in binary form must reproduce the above copyright 137c2a9a09Sskrll * notice, this list of conditions and the following disclaimer in the 147c2a9a09Sskrll * documentation and/or other materials provided with the distribution. 157c2a9a09Sskrll * 167c2a9a09Sskrll * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 177c2a9a09Sskrll * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 187c2a9a09Sskrll * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 197c2a9a09Sskrll * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 207c2a9a09Sskrll * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 217c2a9a09Sskrll * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 227c2a9a09Sskrll * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 237c2a9a09Sskrll * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 247c2a9a09Sskrll * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 257c2a9a09Sskrll * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 267c2a9a09Sskrll * SUCH DAMAGE. 277c2a9a09Sskrll */ 287c2a9a09Sskrll 297c2a9a09Sskrll #ifndef _DEV_USB_USBHIST_H_ 307c2a9a09Sskrll #define _DEV_USB_USBHIST_H_ 317c2a9a09Sskrll 327c2a9a09Sskrll #if defined(_KERNEL_OPT) 337c2a9a09Sskrll #include "opt_usb.h" 347c2a9a09Sskrll #endif 357c2a9a09Sskrll 367c2a9a09Sskrll /* 377c2a9a09Sskrll * Make USBHIST_PRINT force on KERNHIST_PRINT for at least USBHIST_* usage. 387c2a9a09Sskrll */ 397c2a9a09Sskrll #if defined(USBHIST_PRINT) && !defined(KERNHIST_PRINT) 407c2a9a09Sskrll #define KERNHIST_PRINT 1 417c2a9a09Sskrll #endif 427c2a9a09Sskrll 437c2a9a09Sskrll #include <sys/kernhist.h> 447c2a9a09Sskrll 454810df2dSmrg #ifdef USB_DEBUG 467c2a9a09Sskrll 477c2a9a09Sskrll extern int usbdebug; 487c2a9a09Sskrll 497c2a9a09Sskrll #define USBHIST_DECL(NAME) KERNHIST_DECL(NAME) 507c2a9a09Sskrll #define USBHIST_DEFINE(NAME) KERNHIST_DEFINE(NAME) 517c2a9a09Sskrll #define USBHIST_INIT(NAME,N) KERNHIST_INIT(NAME,N) 52d5d53603Sskrll #define USBHIST_LINK_STATIC(NAME) KERNHIST_LINK_STATIC(NAME) 537c2a9a09Sskrll #define USBHIST_LOGN(NAME,N,FMT,A,B,C,D) do { \ 547c2a9a09Sskrll if ((NAME) >= (N)) { \ 557c2a9a09Sskrll KERNHIST_LOG(usbhist,FMT,A,B,C,D); \ 567c2a9a09Sskrll } \ 577c2a9a09Sskrll } while (0) 584e8e6643Sskrll #define USBHIST_LOGM(NAME,N,FMT,A,B,C,D) do { \ 594e8e6643Sskrll if ((NAME) & (N)) { \ 604e8e6643Sskrll KERNHIST_LOG(usbhist,FMT,A,B,C,D); \ 614e8e6643Sskrll } \ 624e8e6643Sskrll } while (0) 637c2a9a09Sskrll #define USBHIST_LOG(NAME,FMT,A,B,C,D) USBHIST_LOGN(NAME,1,FMT,A,B,C,D) 647c2a9a09Sskrll #define USBHIST_CALLED(NAME) do { \ 657c2a9a09Sskrll if ((NAME) != 0) { \ 667c2a9a09Sskrll KERNHIST_CALLED(usbhist); \ 677c2a9a09Sskrll } \ 687c2a9a09Sskrll } while (0) 699e463835Smrg #define USBHIST_CALLARGS(NAME,FMT,A,B,C,D) do { \ 709e463835Smrg if ((NAME) != 0) { \ 719e463835Smrg KERNHIST_CALLARGS(usbhist,FMT,A,B,C,D); \ 729e463835Smrg } \ 739e463835Smrg } while (0) 74de0a3ab5Smrg #define USBHIST_CALLARGSN(NAME,N,FMT,A,B,C,D) do { \ 75de0a3ab5Smrg if ((NAME) >= (N)) { \ 76de0a3ab5Smrg KERNHIST_CALLARGS(usbhist,FMT,A,B,C,D); \ 77de0a3ab5Smrg } \ 78de0a3ab5Smrg } while (0) 797c2a9a09Sskrll #define USBHIST_FUNC() KERNHIST_FUNC(__func__) 807c2a9a09Sskrll 817c2a9a09Sskrll USBHIST_DECL(usbhist); 827c2a9a09Sskrll 837c2a9a09Sskrll #else 847c2a9a09Sskrll 857c2a9a09Sskrll #define USBHIST_DECL(NAME) 867c2a9a09Sskrll #define USBHIST_DEFINE(NAME) 877c2a9a09Sskrll #define USBHIST_INIT(NAME,N) 88d5d53603Sskrll #define USBHIST_LINK_STATIC(NAME) 897c2a9a09Sskrll #define USBHIST_LOGN(N,NAME,FMT,A,B,C,D) do { } while(0) 904e8e6643Sskrll #define USBHIST_LOGM(N,NAME,FMT,A,B,C,D) do { } while(0) 917c2a9a09Sskrll #define USBHIST_LOG(NAME,FMT,A,B,C,D) do { } while(0) 929e463835Smrg #define USBHIST_CALLARGS(NAME,FMT,A,B,C,D) 93de0a3ab5Smrg #define USBHIST_CALLARGSN(NAME,N,FMT,A,B,C,D) 947c2a9a09Sskrll #define USBHIST_CALLED(NAME) 957c2a9a09Sskrll #define USBHIST_FUNC() 967c2a9a09Sskrll 977c2a9a09Sskrll #endif 987c2a9a09Sskrll 997c2a9a09Sskrll #endif /* _DEV_USBUSB_HIST_H_ */ 100