1 /* $OpenBSD: scsi_debug.h,v 1.23 2022/02/28 14:48:11 krw Exp $ */ 2 /* $NetBSD: scsi_debug.h,v 1.7 1996/10/12 23:23:16 christos Exp $ */ 3 4 /* 5 * Written by Julian Elischer (julian@tfs.com) 6 */ 7 #ifndef _SCSI_SCSI_DEBUG_H 8 #define _SCSI_SCSI_DEBUG_H 9 #ifdef _KERNEL 10 11 /* 12 * These are the new debug bits. (Sat Oct 2 12:46:46 WST 1993) 13 * the following DEBUG bits are defined to exist in the flags word of 14 * the scsi_link structure. 15 */ 16 #define SDEV_DB1 0x0010 /* scsi commands, errors, data */ 17 #define SDEV_DB2 0x0020 /* routine flow tracking */ 18 #define SDEV_DB3 0x0040 /* internal to routine flows */ 19 #define SDEV_DB4 0x0080 /* level 4 debugging for this dev */ 20 21 #ifdef SCSIDEBUG 22 /* targets and LUNs we want to debug */ 23 #ifndef SCSIDEBUG_BUSES 24 #define SCSIDEBUG_BUSES 0 25 #endif /* ~SCSIDBUG_BUSES */ 26 #ifndef SCSIDEBUG_TARGETS 27 #define SCSIDEBUG_TARGETS 0 28 #endif /* ~SCSIDEBUG_TARGETS */ 29 #ifndef SCSIDEBUG_LUNS 30 #define SCSIDEBUG_LUNS 0 31 #endif /* ~SCSIDEBUG_LUNS */ 32 #ifndef SCSIDEBUG_LEVEL 33 #define SCSIDEBUG_LEVEL (SDEV_DB1|SDEV_DB2) 34 #endif /* ~SCSIDEBUG_LEVEL */ 35 36 extern u_int32_t scsidebug_buses, scsidebug_targets, scsidebug_luns; 37 extern int scsidebug_level; 38 39 extern const char *flagnames[]; 40 extern const char *quirknames[]; 41 extern const char *devicetypenames[32]; 42 43 struct scsi_xfer; 44 45 void scsi_show_sense(struct scsi_xfer *); 46 void scsi_show_xs(struct scsi_xfer *); 47 void scsi_show_mem(u_char *, int); 48 void scsi_show_flags(u_int32_t, const char **); 49 void scsi_show_inquiry_header(struct scsi_inquiry_data *); 50 void scsi_show_inquiry_match(struct scsi_inquiry_data *); 51 52 /* 53 * This is the usual debug macro for use with the above bits 54 */ 55 #define SC_DEBUG(link,Level,Printstuff) do { \ 56 if ((link)->flags & (Level)) { \ 57 sc_print_addr(link); \ 58 printf Printstuff; \ 59 } \ 60 } while (0) 61 #define SC_DEBUGN(link,Level,Printstuff) do { \ 62 if ((link)->flags & (Level)) { \ 63 printf Printstuff; \ 64 } \ 65 } while (0) 66 #define SC_DEBUG_SENSE(xs) do { \ 67 scsi_show_sense(xs); \ 68 } while (0) 69 #else 70 #define SC_DEBUG(link,level,Printstuff) 71 #define SC_DEBUGN(link,level,Printstuff) 72 #define SC_DEBUG_SENSE(xs) 73 #endif /* SCSIDEBUG */ 74 75 #endif /* _KERNEL */ 76 #endif /* _SCSI_SCSI_DEBUG_H */ 77