diff options
author | Marvin Borner | 2021-03-26 21:55:50 +0100 |
---|---|---|
committer | Marvin Borner | 2021-03-26 22:02:20 +0100 |
commit | 05498860e8f7b1e8bb27880bc7526de026694804 (patch) | |
tree | 3bddf16e9439a950a3810d45e42a5cefdbcb7663 /libs/libc/inc/assert.h | |
parent | a96e9c4c858d47f61b89d879aa0ce6a02bdacb38 (diff) |
Renamed libs
Cleaner and more flexible.
Diffstat (limited to 'libs/libc/inc/assert.h')
-rw-r--r-- | libs/libc/inc/assert.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/libs/libc/inc/assert.h b/libs/libc/inc/assert.h new file mode 100644 index 0000000..3656c33 --- /dev/null +++ b/libs/libc/inc/assert.h @@ -0,0 +1,28 @@ +// MIT License, Copyright (c) 2020 Marvin Borner + +#ifndef ASSERT_H +#define ASSERT_H + +#include <print.h> + +#ifdef kernel +#include <proc.h> +#define assert(exp) \ + if (!(exp)) { \ + printf("%s:%d: %s: Kernel assertion '%s' failed\n", __FILE__, __LINE__, __func__, \ + #exp); \ + struct proc *assert_proc = proc_current(); \ + if (assert_proc) \ + proc_exit(assert_proc, 1); \ + else \ + __asm__ volatile("cli\nhlt"); \ + } +#elif defined(userspace) +#define assert(exp) \ + if (!(exp)) \ + err(1, "%s:%d: %s: Assertion '%s' failed\n", __FILE__, __LINE__, __func__, #exp); +#else +#error "No lib target specified. Please use -Dkernel or -Duserspace" +#endif + +#endif |