new: 简单的warn assert

This commit is contained in:
fslongjin 2022-07-17 17:23:56 +08:00
parent 9ed3eb2ae2
commit a1c843cd3a
3 changed files with 26 additions and 1 deletions

View File

@ -107,7 +107,8 @@
"libm.h": "c",
"ahci.h": "c",
"slab.h": "c",
"boot_info.h": "c"
"boot_info.h": "c",
"pci.h": "c"
},
"C_Cpp.errorSquiggles": "Enabled",
"esbonio.sphinx.confDir": ""

10
kernel/common/compiler.h Normal file
View File

@ -0,0 +1,10 @@
#pragma once
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
#ifndef barrier
// 内存屏障
#define barrier() __asm__ __volatile__("" :: \
: "memory");
#endif

14
kernel/debug/bug.h Normal file
View File

@ -0,0 +1,14 @@
#pragma once
#include <common/compiler.h>
#include <common/kprint.h>
/**
* @brief condition为true时输出警告信息
*
*/
#define WARN_ON(condition) ({ \
int __ret_warn_on = !!(condition); \
if (unlikely(__ret_warn_on)) \
kwarn("Assertion failed at %s:%d", __FILE__, __LINE__); \
unlikely(__ret_warn_on); \
})