On Thu, Mar 08, 2018 at 09:16:32PM +0000, Ruhl, Michael J wrote: > > From: linux-rdma-owner@xxxxxxxxxxxxxxx [mailto:linux-rdma- > > owner@xxxxxxxxxxxxxxx] On Behalf Of Leon Romanovsky > > Sent: Thursday, March 8, 2018 12:19 PM > > To: Doug Ledford <dledford@xxxxxxxxxx>; Jason Gunthorpe > > <jgg@xxxxxxxxxxxx> > > Cc: Leon Romanovsky <leonro@xxxxxxxxxxxx>; RDMA mailing list <linux- > > rdma@xxxxxxxxxxxxxxx>; Aviad Yehezkel <aviadye@xxxxxxxxxxxx>; Boris > > Pismenny <borisp@xxxxxxxxxxxx>; Matan Barak <matanb@xxxxxxxxxxxx>; > > Yishai Hadas <yishaih@xxxxxxxxxxxx> > > Subject: [PATCH rdma-next 02/12] IB/uverbs: Move to new headers and > > make naming consistent > > > > From: Matan Barak <matanb@xxxxxxxxxxxx> > > > > Use macros to make names consistent in ioctl() uAPI: > > The ioctl() uAPI works with object-method hierarchy. The method part > > also states which handler should be executed when this method is called > > from user-space. Therefore, we need to tie method, method's id, method's > > handler and the object owning this method together. > > Previously, this was done through explicit developer chosen names. > > This makes grepping the code harder. Changing the method's name, > > method's handler and object's name to be automatically generated based > > on the ids. > > > > The headers are split in a way so they be included and used by > > user-space. One header strictly contains structures that are used > > directly by user-space applications, where another header is used for > > internal library (i.e. libibverbs) to form the ioctl() commands. > > Other header simply contains the required general command structure. > > > > Reviewed-by: Yishai Hadas <yishaih@xxxxxxxxxxxx> > > Signed-off-by: Matan Barak <matanb@xxxxxxxxxxxx> > > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx> > > drivers/infiniband/core/uverbs_std_types.c | 139 ++++++++++++-------- > > > > diff --git a/drivers/infiniband/core/uverbs_std_types.c > > b/drivers/infiniband/core/uverbs_std_types.c > > index df1360e6774f..99f971b6cc67 100644 > > +++ b/drivers/infiniband/core/uverbs_std_types.c > > @@ -210,15 +210,24 @@ static int > > uverbs_hot_unplug_completion_event_file(struct ib_uobject_file *uobj_ > > return 0; > > }; > > > > +#define UVERBS_METHOD(id) uverbs_method_##id > > +#define UVERBS_HANDLER(id) uverbs_handler_##id > > + > > +#define DECLARE_COMMON_METHOD(id, ...) \ > > + DECLARE_UVERBS_METHOD(UVERBS_METHOD(id), id, > > UVERBS_HANDLER(id), ##__VA_ARGS__) > > + > > +#define DECLARE_COMMON_OBJECT(id, ...) \ > > + DECLARE_UVERBS_OBJECT(UVERBS_OBJECT(id), id, > > ##__VA_ARGS__) > > I applied this patch to my tree and noticed that the declarations for the > METHODS and OBJECTS and HANDLERs had changed. > > I assumed that the above macros had been updated in the appropriate > header files. When I tried to apply these "new" macros to my tree, I couldn't > compile. > > So I cannot (easily) use the example of uverbs_std_verbs.c to set up my own > stuff, and if I do, I have to copy the above macros to my files, or decipher these > macros to figure out what I should use. Yeah, the normal DECLARE_UVERBS_METHOD/etc should just do this, we shouldn't wrapper them in uvrebs_std_types.c Jason -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html