您好
我看到endpoint在查找需要广播的processors时,会通过比较module.VQ_callbacks[c].pool
与当前通信池pool
是否相同,来找到具有匹配池的接收虚拟队列(RX VQs)的回调
我的问题是:module.VQ_callbacks[c].pool与当前通信池pool什么时候会不相同,我理解的是在RPMessage_init()中module.VQ_callbacks[c].pool创建时都会被赋值为当前通信池pool
RPMessage_announce:
if(remoteProcId == RPMESSAGE_ALL)
{
for(c = 0; c < module.numCallbacks; c++)
{
/* Find callback for RX VQs that have matching pool. */
if(module.VQ_callbacks[c].pool == pool)
{
vq = module.VQ_callbacks[c].vq;
procId = Virtio_getProcId(vq);
status = RPMessage_send(NULL, procId, IPC_CTRL_ENDPOINT_ID,
IPC_CTRL_ENDPOINT_ID, &msg, (uint16_t)sizeof(msg))
}
}
}
RPMessage_init:
module.VQ_callbacks[c].pool = &module.globalPool;
module.VQ_callbacks[c].vq = Virtio_getHandle(p, VIRTIO_RX);