TDA4VM: IPC中的RPMessage_announce API

Part Number: TDA4VM

您好

我看到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);