On Thu, Jan 11, 2018 at 11:24 PM, Jason Gunthorpe <jgg@xxxxxxxxxxxx> wrote: > On Thu, Jan 11, 2018 at 11:14:33PM +0530, Devesh Sharma wrote: >> On Wed, Jan 10, 2018 at 11:04 PM, Jason Gunthorpe <jgg@xxxxxxxxxxxx> wrote: >> > On Wed, Jan 10, 2018 at 11:16:20AM +0530, Devesh Sharma wrote: >> > >> >> > +/* >> >> > + * Allocate and initialize a context structure. This is called to create the >> >> > + * driver wrapper, and context_offset is the number of bytes into the wrapper >> >> > + * structure where the verbs_context starts. >> >> > + */ >> >> > +void *_verbs_init_and_alloc_context(struct ibv_device *device, int cmd_fd, >> >> > + size_t alloc_size, >> >> > + struct verbs_context *context_offset) >> >> > +{ >> >> > + void *drv_context; >> >> > + struct verbs_context *context; >> >> > + >> >> > + drv_context = calloc(1, alloc_size); >> >> > + if (!drv_context) { >> >> > + errno = ENOMEM; >> >> > + close(cmd_fd); >> >> > + return NULL; >> >> > + } >> >> > + >> >> > + context = (struct verbs_context *)((uint8_t *)drv_context + >> >> > + (uintptr_t)context_offset); >> >> >> >> A wrapper macro would do better here? > >> > Thing is, this is the only place that does this calculation and it is >> > intimately tied to the definition of the >> > verbs_init_and_alloc_context() macro, so it really is unique and >> > special to this function. >> >> If that is the case I don't mind leaving this as it is, may be it >> would look better from code readability point of view if we wrap it. > > Maybe I should just embrace the Pointer-Arith gcc extension: > > context = drv_context + (uintptr_t)context_offset; > > Have to check first how prevalent it is already in the code. > Okay.. > 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