hw: no assert checks by default, enable opt-in

fix #528
This commit is contained in:
Martin Stein
2013-09-06 10:29:06 +02:00
committed by Norman Feske
parent 3070af9194
commit 2223e72c7f

View File

@ -17,19 +17,31 @@
/* Genode includes */ /* Genode includes */
#include <base/printf.h> #include <base/printf.h>
enum { CHECK_ASSERTIONS = 0 };
/** /**
* Assert a condition * Make an assertion
* *
* \param expression Expression that must be true * \param expression statement that must be true
*
* Use this macro as if it could always be empty as well.
* I.e. it should not be used with expressions that are relevant
* to the protection against another, untrusted PD or expressions
* that contain mandatory function calls! A good rule of thumb
* is to use it only for the protection of a component against
* a PD-local interface misuse that can't be avoided due to language
* constraints (e.g. inaccuracy of integer ranges).
*/ */
#define assert(expression) \ #define assert(expression) \
do { \ do { \
if (CHECK_ASSERTIONS) { \
if (!(expression)) { \ if (!(expression)) { \
PERR("Assertion failed: "#expression""); \ PERR("Assertion failed: "#expression""); \
PERR(" File: %s:%d", __FILE__, __LINE__); \ PERR(" File: %s:%d", __FILE__, __LINE__); \
PERR(" Function: %s", __PRETTY_FUNCTION__); \ PERR(" Function: %s", __PRETTY_FUNCTION__); \
while (1) ; \ while (1) ; \
} \ } \
} \
} while (0) ; } while (0) ;
#endif /* _CORE__INCLUDE__ASSERT_H_ */ #endif /* _CORE__INCLUDE__ASSERT_H_ */