On 2019/10/17 下午4:45, Cornelia Huck wrote:
On Thu, 17 Oct 2019 16:30:43 +0800 Jason Wang jasowang@redhat.com wrote:
On 2019/10/17 上午12:53, Alex Williamson wrote:
Yet another suggestion: have the class id derive from the function you use to set up the ops.
void mdev_set_vfio_ops(struct mdev_device *mdev, const struct vfio_mdev_ops *vfio_ops) { mdev->device_ops = vfio_ops; mdev->class_id = MDEV_ID_VFIO; }
void mdev_set_virtio_ops(struct mdev_device *mdev, const struct virtio_mdev_ops *virtio_ops) { mdev->device_ops = virtio_ops; mdev->class_id = MDEV_ID_VIRTIO; }
void mdev_set_vhost_ops(struct mdev_device *mdev, const struct virtio_mdev_ops *virtio_ops) { mdev->device_ops = virtio_ops; mdev->class_id = MDEV_ID_VHOST; }
void mdev_set_vendor_ops(struct mdev_device *mdev) /* no ops */ { mdev->class_id = MDEV_ID_VENDOR; }
One further step towards making this hard to use incorrectly might be to return an error if class_id is already set. Thanks,
Alex
I will add a BUG_ON() when class_id has already set.
Probably better a WARN_ON()?
Right.
Thanks