1/*
2 * Copyright 2009, Michael Lotz, mmlr@mlotz.ch.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef ATA_TRACING_H
6#define ATA_TRACING_H
7
8#include <tracing.h>
9
10#define ATA_TRACE_START			0x00
11#define ATA_TRACE_FLUSH			0x01
12#define	ATA_TRACE_SYSLOG		0x02
13#define ATA_TRACE_FLUSH_SYSLOG	0x03
14
15#if ATA_TRACING
16#define TRACE(x...)				{ \
17									ata_trace_printf(ATA_TRACE_START, \
18										"ata%s: ", _DebugContext()); \
19									ata_trace_printf(ATA_TRACE_FLUSH, x); \
20								}
21#define TRACE_FUNCTION(x...)	{ \
22									ata_trace_printf(ATA_TRACE_START, \
23										"ata%s: %s: ", _DebugContext(), \
24										__FUNCTION__); \
25									ata_trace_printf(ATA_TRACE_FLUSH, x); \
26								}
27#else
28#define TRACE(x...)				/* nothing */
29#define TRACE_FUNCTION(x...)	/* nothing */
30#endif
31
32#define TRACE_ALWAYS(x...)		{ \
33									ata_trace_printf(ATA_TRACE_START, \
34										"ata%s: ", _DebugContext()); \
35									ata_trace_printf(ATA_TRACE_FLUSH_SYSLOG, x); \
36								}
37#define TRACE_ERROR(x...)		{ \
38									ata_trace_printf(ATA_TRACE_START, \
39										"ata%s error: ", _DebugContext()); \
40									ata_trace_printf(ATA_TRACE_FLUSH_SYSLOG, x); \
41								}
42
43void ata_trace_printf(uint32 flags, const char *format, ...);
44
45inline const char *
46_DebugContext()
47{
48	return "";
49}
50
51#endif // ATA_TRACING_H
52