From 8da0171e5ca3492cdb34422184a1c96acd0b5165 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sat, 21 May 2022 21:02:17 +0300 Subject: add status info to memory mappings + next up would probably be to start working on process/thread relationships, largely as documented. Still not entirely sure about how I want to handle fork, but I suppose I might figure it out at some point. --- include/apos/assert.h | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 include/apos/assert.h (limited to 'include/apos/assert.h') diff --git a/include/apos/assert.h b/include/apos/assert.h new file mode 100644 index 0000000..7200fd2 --- /dev/null +++ b/include/apos/assert.h @@ -0,0 +1,42 @@ +#ifndef APOS_ASSERT_H +#define APOS_ASSERT_H + +#include +#include + +/* TODO: should this exit or do something explosive like that? */ +#if !defined(DNDEBUG) +#define catastrophic_assert(x) \ + do { \ + if (x) { \ + err("catastrophic assertion failed: %s\n", QUOTE(x)); \ + while (1) \ + ; \ + } \ + } while (0); + +#define hard_assert(x, r) \ + do { \ + if (x) { \ + warn("hard assertion failed: %s\n", QUOTE(x)); \ + return r; \ + } \ + } while (0); + +#define soft_assert(x) \ + do { \ + if (x) { \ + info("soft assertion failed: %s\n", QUOTE(x)); \ + } \ + } while (0); +#else +#define catastrophic_assert(x) +#define hard_assert(x, r) +#define soft_assert(x) +#endif + +/* use when return value doesn't exist, like hard_assert(x, + * RETURN_VOID); */ +#define RETURN_VOID + +#endif /* APOS_ASSERT_H */ -- cgit v1.3