mirror of
https://github.com/apache/nuttx.git
synced 2026-05-20 12:33:27 +08:00
virtio/vhost: assign the virtio/vhost_drvier to device->priv before probe
So the driver can get the driver pointer by vdev/hdev->priv, and later vdev/hdev->priv can be used to store other data such as the virtio/vhost drivers' private data. Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
This commit is contained in:
@@ -130,13 +130,13 @@ static void vhost_defered_probe_work(FAR void *arg)
|
||||
{
|
||||
if (item->device->id.device == driver->device)
|
||||
{
|
||||
item->device->priv = driver;
|
||||
if (driver->probe(item->device) >= 0)
|
||||
{
|
||||
vhosterr("device probe success device=%p\n", item->device);
|
||||
item->driver = driver;
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -207,6 +207,7 @@ int vhost_register_driver(FAR struct vhost_driver *driver)
|
||||
* matched.
|
||||
*/
|
||||
|
||||
item->device->priv = driver;
|
||||
if (driver->probe(item->device) >= 0)
|
||||
{
|
||||
item->driver = driver;
|
||||
|
||||
@@ -225,13 +225,14 @@ int virtio_register_driver(FAR struct virtio_driver *driver)
|
||||
FAR struct virtio_device_item_s *item =
|
||||
container_of(node, struct virtio_device_item_s, node);
|
||||
FAR struct virtio_device *device = item->device;
|
||||
if (driver->device == device->id.device)
|
||||
if (item->driver == NULL && driver->device == device->id.device)
|
||||
{
|
||||
/* If found the device in the device list, call driver probe,
|
||||
* if probe success, assign item->driver to indicate the device
|
||||
* matched.
|
||||
*/
|
||||
|
||||
device->priv = driver;
|
||||
if (driver->probe(device) >= 0)
|
||||
{
|
||||
item->driver = driver;
|
||||
@@ -327,12 +328,12 @@ int virtio_register_device(FAR struct virtio_device *device)
|
||||
* matched.
|
||||
*/
|
||||
|
||||
device->priv = driver;
|
||||
if (driver->probe(device) >= 0)
|
||||
{
|
||||
item->driver = driver;
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user