Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / ipxe / src / include / syslog.h
diff --git a/qemu/roms/ipxe/src/include/syslog.h b/qemu/roms/ipxe/src/include/syslog.h
new file mode 100644 (file)
index 0000000..93f32f8
--- /dev/null
@@ -0,0 +1,100 @@
+#ifndef _SYSLOG_H
+#define _SYSLOG_H
+
+/** @file
+ *
+ * System logger
+ *
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER );
+
+#include <stdarg.h>
+#include <ipxe/ansiesc.h>
+#include <config/console.h>
+
+/**
+ * @defgroup syslogpri Syslog priorities
+ *
+ * These values are chosen to match those used in the syslog network
+ * protocol (RFC 5424).
+ *
+ * @{
+ */
+
+/** Emergency: system is unusable */
+#define LOG_EMERG 0
+
+/** Alert: action must be taken immediately */
+#define LOG_ALERT 1
+
+/** Critical: critical conditions */
+#define LOG_CRIT 2
+
+/** Error: error conditions */
+#define LOG_ERR 3
+
+/** Warning: warning conditions */
+#define LOG_WARNING 4
+
+/** Notice: normal but significant conditions */
+#define LOG_NOTICE 5
+
+/** Informational: informational messages */
+#define LOG_INFO 6
+
+/** Debug: debug-level messages */
+#define LOG_DEBUG 7
+
+/** @} */
+
+/** Do not log any messages */
+#define LOG_NONE -1
+
+/** Log all messages */
+#define LOG_ALL LOG_DEBUG
+
+extern void log_vprintf ( const char *fmt, va_list args );
+
+extern void __attribute__ (( format ( printf, 1, 2 ) ))
+log_printf ( const char *fmt, ... );
+
+/** ANSI private escape sequence to set syslog priority
+ *
+ * @v priority         Priority
+ */
+#define SYSLOG_SET_PRIORITY( priority ) \
+       "\033[" #priority "p"
+
+/** ANSI private escape sequence to clear syslog priority */
+#define SYSLOG_CLEAR_PRIORITY "\033[p"
+
+/**
+ * Write message to system log
+ *
+ * @v priority         Message priority
+ * @v fmt              Format string
+ * @v ...              Arguments
+ */
+#define vsyslog( priority, fmt, args ) do {                            \
+       if ( (priority) <= LOG_LEVEL ) {                                \
+               log_vprintf ( SYSLOG_SET_PRIORITY ( priority ) fmt      \
+                             SYSLOG_CLEAR_PRIORITY, (args) );          \
+       }                                                               \
+       } while ( 0 )
+
+/**
+ * Write message to system log
+ *
+ * @v priority         Message priority
+ * @v fmt              Format string
+ * @v ...              Arguments
+ */
+#define syslog( priority, fmt, ... ) do {                              \
+       if ( (priority) <= LOG_LEVEL ) {                                \
+               log_printf ( SYSLOG_SET_PRIORITY ( priority ) fmt       \
+                            SYSLOG_CLEAR_PRIORITY, ##__VA_ARGS__ );    \
+       }                                                               \
+       } while ( 0 )
+
+#endif /* _SYSLOG_H */