1/*
2 * Copyright 2019, Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Augustin Cavalier <waddlesplash>
7 */
8#ifndef __NVME_LOG_H__
9#define __NVME_LOG_H__
10
11#include <stdint.h>
12#include <stdarg.h>
13
14
15void nvme_log(enum nvme_log_level level, const char *format, ...)
16	__attribute__((format(printf, 2, 3)));
17void nvme_vlog(enum nvme_log_level level, const char *format, va_list ap)
18	__attribute__((format(printf,2,0)));
19
20
21#define nvme_emerg(format, args...)		\
22	nvme_log(NVME_LOG_EMERG,		\
23		"libnvme (FATAL): " format,	\
24		## args)
25
26#define nvme_alert(format, args...)		\
27	nvme_log(NVME_LOG_ALERT,		\
28		"libnvme (ALERT): " format,	\
29		## args)
30
31#define nvme_crit(format, args...)		\
32	nvme_log(NVME_LOG_CRIT,			\
33		"libnvme (CRITICAL): " format,	\
34		## args)
35
36#define nvme_err(format, args...)		\
37	nvme_log(NVME_LOG_ERR,			\
38		"libnvme (ERROR): " format,	\
39		## args)
40
41#define nvme_warning(format, args...)		\
42	nvme_log(NVME_LOG_WARNING,		\
43		"libnvme (WARNING): " format,	\
44		## args)
45
46#ifdef TRACE_NVME
47#define nvme_notice(format, args...)	\
48	nvme_log(NVME_LOG_NOTICE,	\
49		"libnvme: " format,	\
50		## args)
51
52#define nvme_info(format, args...)	\
53	nvme_log(NVME_LOG_INFO,		\
54		"libnvme: " format,	\
55		## args)
56
57#define nvme_debug(format, args...)	\
58	nvme_log(NVME_LOG_DEBUG,	\
59		"libnvme: " format,	\
60		## args)
61#else
62#define nvme_notice(format, args...)
63#define nvme_info(format, args...)
64#define nvme_debug(format, args...)
65#endif
66
67
68#endif /* __NVME_LOG_H__ */
69