1d8206b97a
The transport class (svc_xprt_class) represents a type of transport, e.g. udp, tcp, rdma. A transport class has a unique name and a set of transport operations kept in the svc_xprt_ops structure. A transport class can be dynamically registered and unregisterd. The svc_xprt_class represents the module that implements the transport type and keeps reference counts on the module to avoid unloading while there are active users. The endpoint (svc_xprt) is a generic, transport independent endpoint that can be used to send and receive data for an RPC service. It inherits it's operations from the transport class. A transport driver module registers and unregisters itself with svc sunrpc by calling svc_reg_xprt_class, and svc_unreg_xprt_class respectively. Signed-off-by: Tom Tucker <tom@opengridcomputing.com> Acked-by: Neil Brown <neilb@suse.de> Reviewed-by: Chuck Lever <chuck.lever@oracle.com> Reviewed-by: Greg Banks <gnb@sgi.com> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
31 lines
614 B
C
31 lines
614 B
C
/*
|
|
* linux/include/linux/sunrpc/svc_xprt.h
|
|
*
|
|
* RPC server transport I/O
|
|
*/
|
|
|
|
#ifndef SUNRPC_SVC_XPRT_H
|
|
#define SUNRPC_SVC_XPRT_H
|
|
|
|
#include <linux/sunrpc/svc.h>
|
|
|
|
struct svc_xprt_ops {
|
|
};
|
|
|
|
struct svc_xprt_class {
|
|
const char *xcl_name;
|
|
struct module *xcl_owner;
|
|
struct svc_xprt_ops *xcl_ops;
|
|
struct list_head xcl_list;
|
|
};
|
|
|
|
struct svc_xprt {
|
|
struct svc_xprt_class *xpt_class;
|
|
struct svc_xprt_ops *xpt_ops;
|
|
};
|
|
|
|
int svc_reg_xprt_class(struct svc_xprt_class *);
|
|
void svc_unreg_xprt_class(struct svc_xprt_class *);
|
|
void svc_xprt_init(struct svc_xprt_class *, struct svc_xprt *);
|
|
|
|
#endif /* SUNRPC_SVC_XPRT_H */
|