os_slab_overflow_register
所属模块:内存管理 | 类型:Slab溢出回调注册函数
函数简介
:contentReference[oaicite:0]{index=0} 用于注册内存 Slab 分配器的溢出回调函数。
当系统检测到 Slab 内存异常或溢出时,将调用该 hook 函数进行用户自定义处理。
该机制主要用于内存安全监控与调试扩展,可用于错误记录、系统报警或异常恢复策略。
函数原型
void os_slab_overflow_register(void (*hook)(void));
参数说明
| 参数 |
说明 |
| hook |
Slab溢出时触发的回调函数指针 |
源码实现
/*------------------------------------------------------------------------
| FILE DESCRIPTION |
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| - File name : slab_overflow_register.c
| - Author : 谭舒
| - Update date : 2026-09-19
| - Copyright(C) : 2026 HRTOS. All rights reserved.
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| INCLUDES |
------------------------------------------------------------------------*/
#include "hrtos_internal.h"
/*------------------------------------------------------------------------
| API FUNCTIONS |
------------------------------------------------------------------------*/
/**
* @brief 注册 Slab 资源分配异常处理钩子函数。
*
* @param[in] hook Slab 资源分配异常处理函数指针。
*
* @return None。
*
* @note 当系统发生 Slab 资源分配异常时,内核调用已注册的 Hook。
* 传入 NULL 可取消已注册的异常处理 Hook。
*/
void os_slab_overflow_register(void (*hook)(void))
{
g_slab_overflow_hook = hook;
}
/*------------------------------------------------------------------------
| END OF FILE: slab_overflow_register.c |
------------------------------------------------------------------------*/
使用示例
void slab_error_handler(void)
{
// 处理内存溢出
}
void system_init(void)
{
os_slab_overflow_register(slab_error_handler);
}
注意事项
Slab overflow hook 可能在中断或关键内存路径触发,应避免执行耗时或阻塞操作。