From 5cf5dbff240d254717fb6003ef2cad6cf81bd2d1 Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Mon, 12 Jun 2017 14:53:18 -0700 Subject: [PATCH] net: Add a separate subsystem library This breaks the strict dependency on the SPDK event framework. Change-Id: Id93d79bfbc482350dc9802fa84a554f7e11f3826 Signed-off-by: Ben Walker Reviewed-on: https://review.gerrithub.io/365282 Tested-by: SPDK Automated Test System Reviewed-by: Jim Harris --- app/iscsi_tgt/Makefile | 2 +- app/vhost/Makefile | 2 +- include/spdk/net.h | 3 +++ lib/event/subsystems/Makefile | 2 +- lib/event/subsystems/net/Makefile | 41 +++++++++++++++++++++++++++++ lib/event/subsystems/net/net.c | 43 +++++++++++++++++++++++++++++++ lib/net/interface.c | 11 ++++---- lib/net/net_framework_default.c | 3 --- 8 files changed, 95 insertions(+), 12 deletions(-) create mode 100644 lib/event/subsystems/net/Makefile create mode 100644 lib/event/subsystems/net/net.c diff --git a/app/iscsi_tgt/Makefile b/app/iscsi_tgt/Makefile index aaf20050b..5d2b47676 100644 --- a/app/iscsi_tgt/Makefile +++ b/app/iscsi_tgt/Makefile @@ -46,7 +46,7 @@ CFLAGS += -I$(SPDK_ROOT_DIR)/lib C_SRCS := iscsi_tgt.c -SPDK_LIB_LIST = event_bdev event_copy +SPDK_LIB_LIST = event_bdev event_copy event_net SPDK_LIB_LIST += jsonrpc json rpc bdev_rpc bdev iscsi scsi net copy trace conf SPDK_LIB_LIST += util log log_rpc event app_rpc diff --git a/app/vhost/Makefile b/app/vhost/Makefile index 3b9833751..e0c59c224 100644 --- a/app/vhost/Makefile +++ b/app/vhost/Makefile @@ -42,7 +42,7 @@ CFLAGS += $(ENV_CFLAGS) C_SRCS := vhost.c -SPDK_LIB_LIST = event_bdev event_copy +SPDK_LIB_LIST = event_bdev event_copy event_net SPDK_LIB_LIST += jsonrpc json rpc bdev_rpc bdev scsi net copy trace conf SPDK_LIB_LIST += util log log_rpc event app_rpc SPDK_LIB_LIST += vhost rte_vhost diff --git a/include/spdk/net.h b/include/spdk/net.h index c8b646672..77651c2b6 100644 --- a/include/spdk/net.h +++ b/include/spdk/net.h @@ -44,6 +44,9 @@ #define IDLE_INTERVAL_TIME_IN_US 5000 +void spdk_interface_init(void); +int spdk_interface_destroy(void); + const char *spdk_net_framework_get_name(void); void spdk_net_framework_start(void); void spdk_net_framework_clear_socket_association(int sock); diff --git a/lib/event/subsystems/Makefile b/lib/event/subsystems/Makefile index ff33f78ea..4ebdcb63e 100644 --- a/lib/event/subsystems/Makefile +++ b/lib/event/subsystems/Makefile @@ -34,7 +34,7 @@ SPDK_ROOT_DIR := $(abspath $(CURDIR)/../../..) include $(SPDK_ROOT_DIR)/mk/spdk.common.mk -DIRS-y += bdev copy +DIRS-y += bdev copy net .PHONY: all clean $(DIRS-y) diff --git a/lib/event/subsystems/net/Makefile b/lib/event/subsystems/net/Makefile new file mode 100644 index 000000000..e2b7e7dfd --- /dev/null +++ b/lib/event/subsystems/net/Makefile @@ -0,0 +1,41 @@ +# +# BSD LICENSE +# +# Copyright (c) Intel Corporation. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +SPDK_ROOT_DIR := $(abspath $(CURDIR)/../../../..) +include $(SPDK_ROOT_DIR)/mk/spdk.common.mk + +CFLAGS += $(ENV_CFLAGS) -I. +C_SRCS = net.c +LIBNAME = event_net + +include $(SPDK_ROOT_DIR)/mk/spdk.lib.mk diff --git a/lib/event/subsystems/net/net.c b/lib/event/subsystems/net/net.c new file mode 100644 index 000000000..32126aa82 --- /dev/null +++ b/lib/event/subsystems/net/net.c @@ -0,0 +1,43 @@ +/*- + * BSD LICENSE + * + * Copyright (c) Intel Corporation. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "spdk/stdinc.h" + +#include "spdk/net.h" + +#include "spdk_internal/event.h" + +SPDK_SUBSYSTEM_REGISTER(interface, spdk_interface_init, spdk_interface_destroy, NULL) + +SPDK_SUBSYSTEM_REGISTER(net_framework, spdk_net_framework_start, spdk_net_framework_fini, NULL) +SPDK_SUBSYSTEM_DEPEND(net_framework, interface) diff --git a/lib/net/interface.c b/lib/net/interface.c index ac39f0d9a..5e2238c8e 100644 --- a/lib/net/interface.c +++ b/lib/net/interface.c @@ -414,7 +414,7 @@ static void spdk_interface_ip_update(void) pthread_mutex_unlock(&interface_lock); } -static void +void spdk_interface_init(void) { TAILQ_INIT(&g_interface_head); @@ -424,7 +424,8 @@ spdk_interface_init(void) spdk_subsystem_init_next(0); } -static int spdk_interface_destroy(void) +int +spdk_interface_destroy(void) { struct spdk_interface *ifc_entry; @@ -462,13 +463,13 @@ void *spdk_interface_get_list(void) #else /* Not Linux */ -static void +void spdk_interface_init(void) { spdk_subsystem_init_next(0); } -static int +int spdk_interface_destroy(void) { return 0; @@ -493,5 +494,3 @@ spdk_interface_get_list(void) } #endif - -SPDK_SUBSYSTEM_REGISTER(interface, spdk_interface_init, spdk_interface_destroy, NULL) diff --git a/lib/net/net_framework_default.c b/lib/net/net_framework_default.c index 5b4ba8383..9072ecd52 100644 --- a/lib/net/net_framework_default.c +++ b/lib/net/net_framework_default.c @@ -63,6 +63,3 @@ int spdk_net_framework_idle_time(void) { return IDLE_INTERVAL_TIME_IN_US; } - -SPDK_SUBSYSTEM_REGISTER(net_framework, spdk_net_framework_start, spdk_net_framework_fini, NULL) -SPDK_SUBSYSTEM_DEPEND(net_framework, interface)