summaryrefslogtreecommitdiff
path: root/include/panic.h
blob: 08b75614388bfa07e63377db4094ad4f6e9991ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
#pragma once

#define _PANIC_STR(x) _PANIC_STR2(x)
#define _PANIC_STR2(x) #x

#define panic(...) _panic_impl(_PANIC_STR(__LINE__), __FILE__, __VA_ARGS__)
#define kassert(val, ...) do { if (!(val)) { panic(__VA_ARGS__); } } while(0)

__attribute__((format(printf, 3, 4)))
_Noreturn void _panic_impl(char *line, char *file, char *format, ...);

__attribute__((format(printf, 3, 4)))
_Noreturn void panic_interrupt(void *ip, void *bp, char *format, ...);