Kernel/logdebug - Cast values in relation assert print (Avoids 64-bit values confusin...
[tpg/acess2.git] / KernelLand / Kernel / include / logdebug.h
index 340dda9..f13187e 100644 (file)
 
 #include <stdarg.h>
 
+#ifndef NORETURN
+#define NORETURN       __attribute__((noreturn))
+#endif
+
 // --- Logging ---
 /**
  * \name Logging to kernel ring buffer
@@ -34,7 +38,7 @@ extern void   Log_Debug(const char *Ident, const char *Message, ...);
 extern void    Debug_KernelPanic(void);        //!< Initiate a kernel panic
 extern void    Panic(const char *Msg, ...) NORETURN;   //!< Print a panic message (initiates a kernel panic)
 extern void    Warning(const char *Msg, ...);  //!< Print a warning message
-extern void    LogF(const char *Fmt, ...);     //!< Print a log message without a trailing newline
+extern bool    LogF(const char *Fmt, ...);     //!< Print a log message without a trailing newline
 extern void    LogFV(const char *Fmt, va_list Args);   //!< va_list non-newline log message
 extern void    Log(const char *Fmt, ...);      //!< Print a log message
 extern void    Debug(const char *Fmt, ...);    //!< Print a debug message (doesn't go to KTerm)
@@ -43,7 +47,9 @@ extern void   Debug_Enter(const char *FuncName, const char *ArgTypes, ...);
 extern void    Debug_Log(const char *FuncName, const char *Fmt, ...);
 extern void    Debug_Leave(const char *FuncName, char RetType, ...);
 extern void    Debug_HexDump(const char *Header, const void *Data, size_t Length);
+
 #define UNIMPLEMENTED()        Warning("'%s' unimplemented", __func__)
+#define TODO(fmt, ...) Panic("TODO: ", fmt ,## __VA_ARGS__)
 #if DEBUG
 # define ENTER(_types...)      Debug_Enter((char*)__func__, _types)
 # define LOG(_fmt...)  Debug_Log((char*)__func__, _fmt)
@@ -59,7 +65,7 @@ extern void   Debug_HexDump(const char *Header, const void *Data, size_t Length);
 #endif
 #if !DISABLE_ASSERTS
 # define ASSERTV(expr,msg,args...) do{if(!(expr))Panic("%s:%i - %s: Assertion '"#expr"' failed"msg,__FILE__,__LINE__,(char*)__func__,##args);}while(0)
-# define ASSERTRV(expr,rv,msg,args...) do{if(!(expr)){Warning("%s:%i: Assertion '"#expr"' failed"msg,__FILE__,__LINE__,(char*)__func__ , ##args);return rv;}}while(0)
+# define ASSERTRV(expr,rv,msg,args...) do{if(!(expr)){Warning("%s:%i - %s: Assertion '"#expr"' failed"msg,__FILE__,__LINE__,(char*)__func__ , ##args);return rv;}}while(0)
 #else
 # define ASSERTV(expr)
 # define ASSERTRV(expr)
@@ -67,8 +73,8 @@ extern void   Debug_HexDump(const char *Header, const void *Data, size_t Length);
 #define assert(expr)   ASSERTV(expr, "")
 #define ASSERT(expr)   ASSERTV(expr, "")
 #define ASSERTR(expr,rv)       ASSERTRV(expr, rv, "")
-#define ASSERTC(l,rel,r)       ASSERTV(l rel r, ": 0x%x"#rel"0x%x", l, r)
-#define ASSERTCR(l,rel,r,rv)   ASSERTRV(l rel r, rv, ": 0x%x"#rel"0x%x", l, r)
+#define ASSERTC(l,rel,r)       ASSERTV ((l) rel (r), ": 0x%x"#rel"0x%x", (Uint)l, (Uint)r)
+#define ASSERTCR(l,rel,r,rv)   ASSERTRV((l) rel (r), rv, ": 0x%x"#rel"0x%x", (Uint)l, (Uint)r)
 /**
  * \}
  */

UCC git Repository :: git.ucc.asn.au