xtos_ rt_ lock_ memory
锁定调用方已经拥有的一段用户内存,底层调用 mlock。
本页目录
声明
#include <xtos/rt.h>
int xtos_rt_lock_memory(void *address, size_t length);参数
| 参数 | 类型 | 说明 |
|---|---|---|
| address | void * | 待锁定范围的起始地址,不能为 NULL;调用方负责其分配和释放。 |
| length | size_t | 字节数,必须大于 0;不是元素个数。 |
返回值
成功返回 0;失败返回 -1。SDK 不取得地址所有权。
错误
| errno | 条件 |
|---|---|
| EINVAL | address 为 NULL 或 length 为 0。 |
| ENOMEM | 地址范围未映射,或锁页资源限制不足。 |
| EPERM | 进程缺少锁页所需权限。 |
| EAGAIN | 无法立即锁定全部或部分范围;这是底层 mlock 可能返回的 errno。 |
注意事项
- mlock 受 RLIMIT_MEMLOCK 和系统权限约束;成功不等于整个进程或未来分配都已锁页。
- 该调用不分配、不释放、不初始化内存,也不保证零缺页或实时 deadline。
示例
源码
本文按 OpenXTOS 提交 dd313955ad57542bcd2af8827157d1bbd0cf5e83 的头文件和实现编写。