HomePort
log.h
Go to the documentation of this file.
1 /*
2  * Copyright 2011 Aalborg University. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without modification, are
5  * permitted provided that the following conditions are met:
6  *
7  * 1. Redistributions of source code must retain the above copyright notice, this list of
8  * conditions and the following disclaimer.
9  *
10  * 2. Redistributions in binary form must reproduce the above copyright notice, this list
11  * of conditions and the following disclaimer in the documentation and/or other materials
12  * provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY Aalborg University ''AS IS'' AND ANY EXPRESS OR IMPLIED
15  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Aalborg University OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23  *
24  * The views and conclusions contained in the software and documentation are those of the
25  * authors and should not be interpreted as representing official policies, either expressed
26  */
27 
28 #ifndef HOMEPORT_LOG_H
29 #define HOMEPORT_LOG_H
30 
31 #include "hpd/hpd_types.h"
32 #include <stdarg.h>
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
38 #define HPD_LOG_MODULE "hpd"
39 
40 hpd_error_t log_logf(const char *module, hpd_log_level_t level, const char *file, int line, const char *fmt, ...);
41 hpd_error_t log_vlogf(const char *module, hpd_log_level_t level, const char *file, int line, const char *fmt, va_list vp);
42 
43 #define LOG_ERROR(FMT, ...) log_logf(HPD_LOG_MODULE, HPD_L_ERROR, __FILE__, __LINE__, (FMT), ##__VA_ARGS__)
44 #define LOG_WARN(FMT, ...) log_logf(HPD_LOG_MODULE, HPD_L_WARN , __FILE__, __LINE__, (FMT), ##__VA_ARGS__)
45 #define LOG_INFO(FMT, ...) log_logf(HPD_LOG_MODULE, HPD_L_INFO , __FILE__, __LINE__, (FMT), ##__VA_ARGS__)
46 #define LOG_DEBUG(FMT, ...) log_logf(HPD_LOG_MODULE, HPD_L_DEBUG, __FILE__, __LINE__, (FMT), ##__VA_ARGS__)
47 
48 #define LOG_RETURN(E, FMT, ...) do { LOG_DEBUG((FMT), ##__VA_ARGS__); return (E); } while(0)
49 
50 #define LOG_RETURN_E_NULL() LOG_RETURN(HPD_E_NULL, "Unexpected null pointer.")
51 #define LOG_RETURN_E_ALLOC() LOG_RETURN(HPD_E_ALLOC, "Unable to allocate memory.")
52 
53 #define LOG_RETURN_HPD_STOPPED() LOG_RETURN(HPD_E_STATE, "Cannot perform %s() while hpd is stopped.", __func__)
54 
55 #ifdef __cplusplus
56 }
57 #endif
58 
59 #endif //HOMEPORT_LOG_H
enum hpd_log_level hpd_log_level_t
Definition: hpd_types.h:169
enum hpd_error hpd_error_t
Definition: hpd_types.h:167
hpd_error_t log_vlogf(const char *module, hpd_log_level_t level, const char *file, int line, const char *fmt, va_list vp)
Definition: log.c:42
hpd_error_t log_logf(const char *module, hpd_log_level_t level, const char *file, int line, const char *fmt,...)
Definition: log.c:32