154882Storek /* 2*63144Sbostic * Copyright (c) 1992, 1993 3*63144Sbostic * The Regents of the University of California. All rights reserved. 454882Storek * 554882Storek * This software was developed by the Computer Systems Engineering group 654882Storek * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and 754882Storek * contributed to Berkeley. 854882Storek * 955559Storek * All advertising materials mentioning features or use of this software 1055559Storek * must display the following acknowledgement: 1155559Storek * This product includes software developed by the University of 1255559Storek * California, Lawrence Berkeley Laboratories. 1355559Storek * 1454882Storek * %sccs.include.redist.c% 1554882Storek * 16*63144Sbostic * @(#)sdtrace.h 8.1 (Berkeley) 06/10/93 1754882Storek * 1857759Storek * from: $Header: sdtrace.h,v 1.6 92/12/02 03:53:47 torek Exp $ (LBL) 1954882Storek */ 2054882Storek 2154882Storek /* 2254882Storek * SCSI disk command tracing 2354882Storek */ 2454882Storek 2554882Storek #if defined(SDTRACE) || !defined(KERNEL) 2654882Storek struct sdtrace { 2754882Storek struct timeval time; /* timestamp */ 2854882Storek u_int block; /* disk block */ 2954882Storek u_int bcount; /* # bytes transferred */ 3054882Storek u_char tcode; /* trace code */ 3154882Storek u_char target; /* target number */ 3254882Storek u_char unit; /* unit number on target */ 3354882Storek u_char read; /* read operation */ 3454882Storek }; 3554882Storek 3654882Storek #define T_START 0x01 3754882Storek #define T_MKCDB 0x02 3854882Storek #define T_INTR 0x03 3954882Storek #endif 4054882Storek 4154882Storek #ifdef SDTRACE 4254882Storek /* Allow kernel config to override number of entries */ 4354882Storek #ifndef NSDOPBUF 4454882Storek #define NSDOPBUF 1024 4554882Storek #endif 4654882Storek 4754882Storek struct sdtrace sdopbuf[NSDOPBUF]; 4854882Storek struct sdtrace *sdopptr = sdopbuf; 4954882Storek int nsdopbuf = NSDOPBUF; /* for sdtrace */ 5054882Storek u_long sdopcnt; 5154882Storek 5254882Storek #define SD_TRACE(code, sc, bp) { \ 5354882Storek if (++sdopptr >= &sdopbuf[NSDOPBUF]) \ 5454882Storek sdopptr = sdopbuf; \ 5554882Storek microtime(&sdopptr->time); \ 5654882Storek sdopptr->tcode = code; \ 5754882Storek sdopptr->read = bp->b_flags & B_READ; \ 5854882Storek sdopptr->block = bp->b_blkno; \ 5954882Storek sdopptr->bcount = bp->b_bcount; \ 6054882Storek sdopptr->target = sc->sc_unit.u_targ; \ 6154882Storek sdopptr->unit = sc->sc_unit.u_unit; \ 6254882Storek ++sdopcnt; \ 6354882Storek } 6454882Storek #else 6554882Storek #define SD_TRACE(code, sc, bp) { } 6654882Storek #endif 67