ipcm 核间通信相关 ---(1)

ipcm 全称: internal processor communcation message 

翻译为: 在多核间使用消息通信,其工作原理是通过mmap()或ioremap() 实现一段共享内存,使用该共享内存,就可以实现信号数据的交互。

 

IPCM driver层:实现如下功能,一步一步如下。

ipcm 核间通信相关 ---(1)

  1. 共享内存的映射,当两个cpu都映射则共享内存建立完成。
  2. 保存对端cpu的状态,g_ipcm_nodes[target].state = alive 进行发送握手。

握手成功后,创建handle。基于此handle来保证稳定通讯,否则容易出错。

struct ipcm_node g_ipcm_nodes[MAX_NODES] = {0};

 

在建立连接时,读取对端cpu的g_ipcm_desc.state 来判断对端是否alive,再决定是否建立连接。

  1. 创建读取消息到hios_mem_list链表的内核线程 & 定时器线程定时唤醒内核读消息线程
  2. VFS接口实现,open/ioctl/read/write/poll/release

打开设备节点,初始化handle,从hios_mem_list读取消息,将消息写入共享内存中

  1. 资源的回收,已经参数检查性处理。——需要严格一一对应,特别花时间。

 

6、用握手的方式,建立连接和断开连接