+++ /dev/null
-/*
- * Definition of KASSERT() macro, and other useful debug macros
- * Copyright (c) 2001, David H. Hovemeyer <daveho@cs.umd.edu>
- * $Revision: 1.1 $
- *
- * This is free software. You are permitted to use,
- * redistribute, and modify it as specified in the file "COPYING".
- */
-
-#ifndef GEEKOS_KASSERT_H
-#define GEEKOS_KASSERT_H
-
-#include <geekos/screen.h>
-
-#ifndef NDEBUG
-
-struct Kernel_Thread;
-extern struct Kernel_Thread* g_currentThread;
-
-#define KASSERT(cond) \
-do { \
- if (!(cond)) { \
- Set_Current_Attr(ATTRIB(RED, GRAY|BRIGHT)); \
- Print("Failed assertion in %s: %s at %s, line %d, RA=%lx, thread=%p\n",\
- __func__, #cond, __FILE__, __LINE__, \
- (ulong_t) __builtin_return_address(0), \
- g_currentThread); \
- while (1) \
- ; \
- } \
-} while (0)
-
-#define TODO(message) \
-do { \
- Set_Current_Attr(ATTRIB(BLUE, GRAY|BRIGHT)); \
- Print("Unimplemented feature: %s\n", (message)); \
- while (1) \
- ; \
-} while (0)
-
-/*
- * Spin for some number of iterations.
- * This is useful for slowing down things that go by too
- * quickly.
- */
-#define PAUSE(count) \
-do { \
- ulong_t i; \
- for (i = 0; i < (count); ++i) \
- ; \
-} while (0)
-
-#else
-
-/*
- * The debug macros are no-ops when NDEBUG is defined.
- */
-#define KASSERT(cond)
-#define TODO(message)
-#define PAUSE(count)
-
-#endif
-
-/*
- * Stop dead.
- * Its behavior does not depend on whether or not this
- * is a debug build.
- */
-#define STOP() while (1)
-
-/*
- * Panic function.
- */
-#define Panic(args...) \
-do { \
- Set_Current_Attr(ATTRIB(RED, GRAY|BRIGHT)); \
- Print(args); \
- while (1) ; \
-} while (0)
-
-#endif /* GEEKOS_KASSERT_H */