XTOS / OPEN SOURCE REAL-TIME SYSTEMOPEN SOURCE · VERSION 0.9.0 · BUILD FROM SOURCE
libxtos-rtxtos_rt_lock_memory

xtos_rt_lock_memory

锁定调用方已经拥有的一段用户内存,底层调用 mlock。

本页目录

声明

c
#include <xtos/rt.h>

int xtos_rt_lock_memory(void *address, size_t length);

参数

参数类型说明
addressvoid *待锁定范围的起始地址,不能为 NULL;调用方负责其分配和释放。
lengthsize_t字节数,必须大于 0;不是元素个数。

返回值

成功返回 0;失败返回 -1。SDK 不取得地址所有权。

错误

errno条件
EINVALaddress 为 NULL 或 length 为 0。
ENOMEM地址范围未映射,或锁页资源限制不足。
EPERM进程缺少锁页所需权限。
EAGAIN无法立即锁定全部或部分范围;这是底层 mlock 可能返回的 errno。

注意事项

  • mlock 受 RLIMIT_MEMLOCK 和系统权限约束;成功不等于整个进程或未来分配都已锁页。
  • 该调用不分配、不释放、不初始化内存,也不保证零缺页或实时 deadline。

示例

源码

本文按 OpenXTOS 提交 dd313955ad57542bcd2af8827157d1bbd0cf5e83 的头文件和实现编写。