X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/0e1309c02f0703c050df09b71346dab60fc6df87..74926d2db1d9f3228acdfca03013a8ba0ac1d8c0:/lunaix-os/includes/lunaix/spike.h diff --git a/lunaix-os/includes/lunaix/spike.h b/lunaix-os/includes/lunaix/spike.h index 4363b41..f87b00a 100644 --- a/lunaix-os/includes/lunaix/spike.h +++ b/lunaix-os/includes/lunaix/spike.h @@ -11,10 +11,10 @@ // 除法 v/(2^k) 向下取整 #define FLOOR(v, k) ((v) >> (k)) -// 获取v最近的最大k倍数 +// 获取v最近的最大k倍数 (k=2^n) #define ROUNDUP(v, k) (((v) + (k)-1) & ~((k)-1)) -// 获取v最近的最小k倍数 +// 获取v最近的最小k倍数 (k=2^m) #define ROUNDDOWN(v, k) ((v) & ~((k)-1)) #define MIN(a, b) ((a) < (b) ? (a) : (b)) @@ -71,7 +71,7 @@ spin() ; } -#ifdef __LUNAIXOS_DEBUG__ +#ifndef __LUNAIXOS_NASSERT__ #define assert(cond) \ if (!(cond)) { \ __assert_fail(#cond, __FILE__, __LINE__); \ @@ -81,17 +81,24 @@ spin() if (!(cond)) { \ __assert_fail(msg, __FILE__, __LINE__); \ } + +#define fail(msg) __assert_fail(msg, __FILE__, __LINE__); + void __assert_fail(const char* expr, const char* file, unsigned int line) __attribute__((noinline, noreturn)); #else #define assert(cond) (void)(cond); // assert nothing #define assert_msg(cond, msg) (void)(cond); // assert nothing -#endif + +#endif // __LUNAIXOS_NASSERT__ void panick(const char* msg); +void +panickf(const char* fmt, ...); + #define wait_until(cond) \ while (!(cond)) \ ;