os_slab_overflow

所属模块:内存管理 | 类型:Slab溢出处理函数

API Metadata

函数ID:os_slab_overflow
模块:memory
类型:slab overflow handler
嵌套深度:2

函数简介

: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 以便进行错误恢复或日志记录。

相关推荐