Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / ipxe / src / include / syslog.h
1 #ifndef _SYSLOG_H
2 #define _SYSLOG_H
3
4 /** @file
5  *
6  * System logger
7  *
8  */
9
10 FILE_LICENCE ( GPL2_OR_LATER );
11
12 #include <stdarg.h>
13 #include <ipxe/ansiesc.h>
14 #include <config/console.h>
15
16 /**
17  * @defgroup syslogpri Syslog priorities
18  *
19  * These values are chosen to match those used in the syslog network
20  * protocol (RFC 5424).
21  *
22  * @{
23  */
24
25 /** Emergency: system is unusable */
26 #define LOG_EMERG 0
27
28 /** Alert: action must be taken immediately */
29 #define LOG_ALERT 1
30
31 /** Critical: critical conditions */
32 #define LOG_CRIT 2
33
34 /** Error: error conditions */
35 #define LOG_ERR 3
36
37 /** Warning: warning conditions */
38 #define LOG_WARNING 4
39
40 /** Notice: normal but significant conditions */
41 #define LOG_NOTICE 5
42
43 /** Informational: informational messages */
44 #define LOG_INFO 6
45
46 /** Debug: debug-level messages */
47 #define LOG_DEBUG 7
48
49 /** @} */
50
51 /** Do not log any messages */
52 #define LOG_NONE -1
53
54 /** Log all messages */
55 #define LOG_ALL LOG_DEBUG
56
57 extern void log_vprintf ( const char *fmt, va_list args );
58
59 extern void __attribute__ (( format ( printf, 1, 2 ) ))
60 log_printf ( const char *fmt, ... );
61
62 /** ANSI private escape sequence to set syslog priority
63  *
64  * @v priority          Priority
65  */
66 #define SYSLOG_SET_PRIORITY( priority ) \
67         "\033[" #priority "p"
68
69 /** ANSI private escape sequence to clear syslog priority */
70 #define SYSLOG_CLEAR_PRIORITY "\033[p"
71
72 /**
73  * Write message to system log
74  *
75  * @v priority          Message priority
76  * @v fmt               Format string
77  * @v ...               Arguments
78  */
79 #define vsyslog( priority, fmt, args ) do {                             \
80         if ( (priority) <= LOG_LEVEL ) {                                \
81                 log_vprintf ( SYSLOG_SET_PRIORITY ( priority ) fmt      \
82                               SYSLOG_CLEAR_PRIORITY, (args) );          \
83         }                                                               \
84         } while ( 0 )
85
86 /**
87  * Write message to system log
88  *
89  * @v priority          Message priority
90  * @v fmt               Format string
91  * @v ...               Arguments
92  */
93 #define syslog( priority, fmt, ... ) do {                               \
94         if ( (priority) <= LOG_LEVEL ) {                                \
95                 log_printf ( SYSLOG_SET_PRIORITY ( priority ) fmt       \
96                              SYSLOG_CLEAR_PRIORITY, ##__VA_ARGS__ );    \
97         }                                                               \
98         } while ( 0 )
99
100 #endif /* _SYSLOG_H */