On 2020/3/25 下午8:29, Jason Gunthorpe wrote:
On Wed, Mar 25, 2020 at 04:27:07PM +0800, Jason Wang wrote:
+struct vdpa_device *__vdpa_alloc_device(struct device *parent,
+ const struct vdpa_config_ops *config,
+ size_t size);
+
+#define vdpa_alloc_device(dev_struct, member, parent, config) \
+ container_of(__vdpa_alloc_device( \
+ parent, config, \
+ sizeof(struct dev_struct) + \
+ BUILD_BUG_ON_ZERO(offsetof( \
+ struct dev_struct, member))), \
+ struct dev_struct, member)
This all looks robust now, one minor remark is to not do 'struct
dev_struct' here so the caller has to do
vdpa_alloc_device(struct foo, vpda, ...)
Which suggests to the reader something unusual is happening
Jason
Yes, that's better.
But my understanding is that this can be done on top.
Thanks