os_slab_overflow
所属模块:内存管理 | 类型:Slab溢出处理函数
函数简介
:contentReference[oaicite:0]{index=0} 用于处理系统 Slab 内存溢出事件。
当检测到内存分配异常时,将触发该函数进行统一处理。
该函数优先调用用户注册的 overflow hook,如果未注册,则进入默认死循环保护状态以防止系统继续运行在不安全状态。
函数原型
void os_slab_overflow(void);
源码实现
/*------------------------------------------------------------------------
| FILE DESCRIPTION |
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| - File name : slab_overflow.c
| - Author : 谭舒
| - Update date : 2026-09-19
| - Copyright(C) : 2026 HRTOS. All rights reserved.
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| INCLUDES |
------------------------------------------------------------------------*/
#include "hrtos_internal.h"
/*------------------------------------------------------------------------
| API FUNCTIONS |
------------------------------------------------------------------------*/
/**
* @brief Slab 资源分配异常处理钩子函数。
*
* @note 当系统发生 Slab 资源分配异常时,内核调用已注册的 Hook。
* 该函数指针由系统内部配置,用于扩展异常处理行为。
*/
void (*g_slab_overflow_hook)(void);
/**
* @brief 处理 Slab 资源分配异常。
*
* @param[in] None
*
* @return None。
*
* @note 当已注册异常处理 Hook 时,调用对应的处理函数。
* 未注册 Hook 时,执行默认异常处理流程并保持当前执行状态。
*/
void os_slab_overflow(void)
{
if (g_slab_overflow_hook)
{
g_slab_overflow_hook();
}
else
{
/* 默认行为(防止空) */
while (1);
}
}
/*------------------------------------------------------------------------
| END OF FILE: slab_overflow.c |
------------------------------------------------------------------------*/
使用示例
void slab_overflow_handler(void)
{
// 记录错误或重启系统
}
void system_init(void)
{
os_slab_overflow_register(slab_overflow_handler);
}
注意事项
该函数可能在系统严重错误路径中触发,一旦进入默认死循环,将阻断整个系统运行。
建议始终注册自定义 hook 以便进行错误恢复或日志记录。