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