Share Memory ============ 概述 ---- share memory 模块, 即一段内存,可供多核共享访问、申请和使用,当前采用 master/slave 方式共享内存,申请统一由master核申请,slave 核通过IPC交互使用。 功能特性 ------------------- - 支持默认共享master核内存作为共享使用。 - 支持指定段作为共享内存段使用, 通过预定义宏 SHARE_MEMORY_START 和 SHARE_MEMORY_LENGTH。 - 不支持在中断中申请内存,支持在中断中释放内存。 - 支持统一管理,每块内存都用标签标记,存在在链表 m_sm_tag_list 中,可供增删改查。 - 支持特定内存对齐的申请。 资源依赖 -------- - 依赖IPC 提供核间通信 - 依赖heap 管理共享的堆内存 - 依赖share task 处理中断下半部工作 - 依赖semaphore 提供同步 用法流程 -------- - 初始化 :cpp:func:`wq_share_memory_init` 需在使用之前初始化, 注意相关依赖也需要提前初始化 - 内存申请 :cpp:func:`wq_share_memory_malloc_with_tag` 可在任意核申请, 且只需申请一次 - 内存释放 :cpp:func:`wq_share_memory_free_with_tag` 可在任意核释放, 且只需释放一次 - 内存获取 :cpp:func:`wq_share_memory_get_by_tag` 需在申请之后才可获取tag对应的内存, 一个tag内存对所有核共享一块内存 内存申请交互流程 ----------------- .. image:: ../../../_static/Share_Memory_Process.png :align: center API 介绍 ----------- .. doxygenfile:: share_memory.h