Commit cc9c2cc5 authored by Bernhard Heinloth's avatar Bernhard Heinloth
Browse files

Überarbeitung der Zusicherungen, um die Gefahr von (frustrierenden)...

Überarbeitung der Zusicherungen, um die Gefahr von (frustrierenden) wechselseitigen Abhängigkeiten in der Klasse CGA_Screen zu minimieren
parent 46247762
#include "assert.h"
#include "debug/output.h"
#include "device/cgastr.h"
#include "machine/cpu.h"
[[noreturn]] void assertion_failed(const char * exp, const char * func, const char * file, int line){
DBG << "Assertion '" << exp << "' failed (" << func << " @ " << file
<< ":" << line << ") - CPU stopped." << endl;
CPU::die();
while(1);
}
......@@ -44,16 +44,23 @@
#define assert(EXP) \
do { \
if (__builtin_expect(!(EXP), 0)) { \
DBG << "Assertion '" << STRINGIFY(EXP) << "' failed (" << __func__ \
<< " @ " << __FILE__ << ":" << __LINE__ << ") - CPU stopped." \
<< endl; \
CPU::die(); \
while(1); \
assertion_failed(STRINGIFY(EXP), __func__, __FILE__, __LINE__); \
} \
} while(0)
// Includes am Ende, damit die Makros auch darin verwendet werden könnten
#include "debug/output.h"
#include "machine/cpu.h"
/*! \brief Behandeln einer fehlgeschlagenen Zusicherung
*
* Die Funktion gibt eine Nachricht mit weiteren Information zur
* fehlgeschlagenen Zusicherung aus und stoppt den CPU Kern.
*
* \note Diese Funktion sollte nicht direkt, sonder ausschließlich
* vom Makro `assert` aufgerufen werden!
*
* \param exp Fehlgeschlagener Ausdruck
* \param func Name der Funktion, in der die Zusicherung fehlschlug
* \param file Name der Datei, in der die Zusicherung steht
* \param line Zeile in der Datei, in der die Zusicherung steht
*/
[[noreturn]] void assertion_failed(const char * exp, const char * func, const char * file, int line);
#endif
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment