mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 04:34:08 +08:00
IB/verbs: Add helper function rdma_udata_to_drv_context
Helper function to get driver's context out of ib_udata wrapped in uverbs_attr_bundle for user objects or NULL for kernel objects. Signed-off-by: Shamir Rabinovitch <shamir.rabinovitch@oracle.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
3d9dfd0603
commit
730623f4a5
@ -664,6 +664,23 @@ static inline bool uverbs_attr_is_valid(const struct uverbs_attr_bundle *attrs_b
|
|||||||
attrs_bundle->attr_present);
|
attrs_bundle->attr_present);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* rdma_udata_to_drv_context - Helper macro to get the driver's context out of
|
||||||
|
* ib_udata which is embedded in uverbs_attr_bundle.
|
||||||
|
*
|
||||||
|
* If udata is not NULL this cannot fail. Otherwise a NULL udata will result
|
||||||
|
* in a NULL ucontext pointer, as a safety precaution. Callers should be using
|
||||||
|
* 'udata' to determine if the driver call is in user or kernel mode, not
|
||||||
|
* 'ucontext'.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define rdma_udata_to_drv_context(udata, drv_dev_struct, member) \
|
||||||
|
(udata ? container_of(container_of(udata, struct uverbs_attr_bundle, \
|
||||||
|
driver_udata) \
|
||||||
|
->context, \
|
||||||
|
drv_dev_struct, member) : \
|
||||||
|
(drv_dev_struct *)NULL)
|
||||||
|
|
||||||
#define IS_UVERBS_COPY_ERR(_ret) ((_ret) && (_ret) != -ENOENT)
|
#define IS_UVERBS_COPY_ERR(_ret) ((_ret) && (_ret) != -ENOENT)
|
||||||
|
|
||||||
static inline const struct uverbs_attr *uverbs_attr_get(const struct uverbs_attr_bundle *attrs_bundle,
|
static inline const struct uverbs_attr *uverbs_attr_get(const struct uverbs_attr_bundle *attrs_bundle,
|
||||||
|
Loading…
Reference in New Issue
Block a user