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

xtos_bci_get_mmap_buffer

按缓存的通道数和采样率估算映射长度,并返回只读共享 mmap 地址。

本页目录

声明

c
#include <xtos/bci.h>

void *xtos_bci_get_mmap_buffer(xtos_bci_session_t *session, size_t *size);

参数

参数类型说明
sessionxtos_bci_session_t *非 NULL 会话句柄;会话拥有映射。
sizesize_t *可为 NULL;非 NULL 时成功写入映射字节数。

返回值

成功返回借用映射地址;失败返回 NULL,并设置 errno。size 失败时不保证写入。

错误

errno条件
EINVALsession 为 NULL,或缓存信息导致计算出的映射长度为 0。
ENOMEM/EACCESmmap 无法建立映射或设备权限不足。
system errnommap 失败时返回其 errno。

注意事项

  • 首次调用估算 channels×sampling_rate×sizeof(float)×2;已映射时返回缓存地址,不重新计算。GET_INFO 失败会让缓存字段保持零值,估算长度也可能为 0,随后 mmap 失败;调用方必须先确认 get_info 得到的缓存信息有效。
  • 公开实现直接进行多项 size_t 乘法,没有显式溢出检查;调用方应先验证通道数、采样率和乘积范围。
  • 映射使用 PROT_READ|MAP_SHARED,由 destroy 解除;调用方不能 free 或 munmap。
  • 公开接口没有 write/read position、稳定快照或消费者推进协议;仅凭指针不能构成完整 zero-copy 消费。

示例

源码

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