Re: [PATCH] dynamically link libibverbs and librdma

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



dorons@xxxxxxxxxxxx wrote on Sun, 21 Sep 2008 08:34 +0300:
> dynamically link libibverbs and librdma for using
> stgt without having userspace IB (e.g tcp mode).

I like the idea, but the implementation is quite ugly.  Is there any
better way to do it?  What other projects do dynamic linking to IB
like this?

> +typedef void (*ibv_ack_cq_events_t)(struct ibv_cq *cq, unsigned int nevents);
> +typedef struct ibv_pd *(*ibv_alloc_pd_t)(struct ibv_context *context);
> +typedef struct ibv_comp_channel *(*ibv_create_comp_channel_t)(struct ibv_context *context);
> +typedef struct ibv_cq *(*ibv_create_cq_t)(struct ibv_context *context, int cqe,
> +                              void *cq_context,
> +                              struct ibv_comp_channel *channel,
> +                              int comp_vector);
[..]

This particularly feels wrong.  We have to duplicate the function
declarations from verbs.h inside tgt?

> -	conn->srmr = ibv_reg_mr(conn->dev->pd, conn->srbuf, size,
> +	conn->srmr = tgt_fptr.ibv_reg_mr(conn->dev->pd, conn->srbuf, size,
>  				IBV_ACCESS_LOCAL_WRITE);

Is this really the only way?  All calls have to go through this big
table of function pointers?

What about compiling libtgt-rdma.so using existing verbs, then
figure out if you can dlopen() that successfully.  Maybe if you say
RTLD_NOW and libverbs.so is not present, the dlopen will fail and
you can fall back to non-IB mode.

		-- Pete
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux SCSI]     [Linux RAID]     [Linux Clusters]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]

  Powered by Linux