aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Hajnoczi <stefanha@redhat.com>2016-07-28 10:36:30 -0400
committerMichael S. Tsirkin <mst@redhat.com>2016-08-01 19:57:28 -0400
commit0b01aeb3d2fbf16787f0c9629f4ca52ae792f732 (patch)
tree5944394bd8b9c47a51a1249e2688e7bffd62e464
parent6190efb08c16dcd68c64b096a28f47ab33f017d7 (diff)
VSOCK: transport-specific vsock_transport functions
struct vsock_transport contains function pointers called by AF_VSOCK core code. The transport may want its own transport-specific function pointers and they can be added after struct vsock_transport. Allow the transport to fetch vsock_transport. It can downcast it to access transport-specific function pointers. The virtio transport will use this. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
-rw-r--r--include/net/af_vsock.h3
-rw-r--r--net/vmw_vsock/af_vsock.c9
2 files changed, 12 insertions, 0 deletions
diff --git a/include/net/af_vsock.h b/include/net/af_vsock.h
index e9eb2d6791b3..23f55259b60d 100644
--- a/include/net/af_vsock.h
+++ b/include/net/af_vsock.h
@@ -165,6 +165,9 @@ static inline int vsock_core_init(const struct vsock_transport *t)
165} 165}
166void vsock_core_exit(void); 166void vsock_core_exit(void);
167 167
168/* The transport may downcast this to access transport-specific functions */
169const struct vsock_transport *vsock_core_get_transport(void);
170
168/**** UTILS ****/ 171/**** UTILS ****/
169 172
170void vsock_release_pending(struct sock *pending); 173void vsock_release_pending(struct sock *pending);
diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
index b96ac918e0ba..e34d96f8bde2 100644
--- a/net/vmw_vsock/af_vsock.c
+++ b/net/vmw_vsock/af_vsock.c
@@ -1995,6 +1995,15 @@ void vsock_core_exit(void)
1995} 1995}
1996EXPORT_SYMBOL_GPL(vsock_core_exit); 1996EXPORT_SYMBOL_GPL(vsock_core_exit);
1997 1997
1998const struct vsock_transport *vsock_core_get_transport(void)
1999{
2000 /* vsock_register_mutex not taken since only the transport uses this
2001 * function and only while registered.
2002 */
2003 return transport;
2004}
2005EXPORT_SYMBOL_GPL(vsock_core_get_transport);
2006
1998MODULE_AUTHOR("VMware, Inc."); 2007MODULE_AUTHOR("VMware, Inc.");
1999MODULE_DESCRIPTION("VMware Virtual Socket Family"); 2008MODULE_DESCRIPTION("VMware Virtual Socket Family");
2000MODULE_VERSION("1.0.1.0-k"); 2009MODULE_VERSION("1.0.1.0-k");