进入板子查看virtio devices。
root@tda4vm-sk:/opt/edgeai-gst-apps# ls /sys/bus/virtio/devices/
virtio0 virtio1 virtio2 virtio3 virtio4 virtio5 virtio6
可以看到有6个virtio device。现在分析这6个是怎么来的。
我们知道添加device一定是调用register_virtio_device()接口。所以先分析这个接口即可。
启动日志里里有:
rproc-virtio rproc-virtio.3.auto: registered virtio3 (type 7)
经过前两篇ipc分析,我们已经知道:
static int rproc_add_virtio_dev(struct rproc_vdev *rvdev, int id)
{/* Allocate virtio device */vdev = kzalloc(sizeof(*vdev), GFP_KERNEL);if (!vdev) {ret = -ENOMEM;goto out;}vdev->id.device = id, //VIRTIO_ID_RPMSGvdev->config = &rproc_virtio_config_ops,vdev->dev.parent = dev;vdev->d