xref: /csrg-svn/sys/dev/scsi/sdtrace.h (revision 63144)
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