move kernel modules directories

This patch moves the kernel modules code from EAL to a common place.
 - Separate the kernel module code from user space code.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Tested-by: Bruce Richardson <bruce.richardson@intel.com>
This commit is contained in:
Hemant Agrawal 2018-02-22 11:39:05 +05:30 committed by Thomas Monjalon
parent 48595b8d55
commit acaa9ee991
82 changed files with 123 additions and 32 deletions

View File

@ -12,7 +12,7 @@ export RTE_SDK
# directory list
#
ROOTDIRS-y := buildtools lib drivers app
ROOTDIRS-y := buildtools lib kernel drivers app
ROOTDIRS- := test
include $(RTE_SDK)/mk/rte.sdkroot.mk

View File

@ -209,7 +209,7 @@ F: doc/guides/linux_gsg/
Linux UIO
M: Ferruh Yigit <ferruh.yigit@intel.com>
F: lib/librte_eal/linuxapp/igb_uio/
F: kernel/linux/igb_uio/
F: drivers/bus/pci/linux/*uio*
Linux VFIO
@ -225,11 +225,11 @@ F: doc/guides/freebsd_gsg/
FreeBSD contigmem
M: Bruce Richardson <bruce.richardson@intel.com>
F: lib/librte_eal/bsdapp/contigmem/
F: kernel/freebsd/contigmem/
FreeBSD UIO
M: Bruce Richardson <bruce.richardson@intel.com>
F: lib/librte_eal/bsdapp/nic_uio/
F: kernel/freebsd/nic_uio/
Core Libraries
@ -359,7 +359,7 @@ F: doc/guides/nics/features/bonding.ini
Linux KNI
M: Ferruh Yigit <ferruh.yigit@intel.com>
F: lib/librte_eal/linuxapp/kni/
F: kernel/linux/kni/
F: lib/librte_kni/
F: doc/guides/prog_guide/kernel_nic_interface.rst
F: test/test/test_kni.c

9
kernel/Makefile Normal file
View File

@ -0,0 +1,9 @@
# SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
# Copyright 2017 NXP
include $(RTE_SDK)/mk/rte.vars.mk
DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += linux
DIRS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += freebsd
include $(RTE_SDK)/mk/rte.subdir.mk

View File

@ -0,0 +1,43 @@
# BSD LICENSE
#
# Copyright(c) 2017 Intel Corporation. All rights reserved.
# 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.
#
# makefile for building kernel modules using meson
# takes parameters from the environment
# source file is passed via KMOD_SRC as full path, we only use final
# component of it, as VPATH is used to find actual file, so as to
# have the .o files placed in the build, not source directory
VPATH = ${KMOD_SRC:H}
SRCS = ${KMOD_SRC:T} device_if.h bus_if.h pci_if.h
CFLAGS += $(KMOD_CFLAGS)
.include <bsd.kmod.mk>

9
kernel/freebsd/Makefile Normal file
View File

@ -0,0 +1,9 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright 2017 NXP
include $(RTE_SDK)/mk/rte.vars.mk
DIRS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += contigmem
DIRS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += nic_uio
include $(RTE_SDK)/mk/rte.subdir.mk

9
kernel/linux/Makefile Normal file
View File

@ -0,0 +1,9 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright 2017 NXP
include $(RTE_SDK)/mk/rte.vars.mk
DIRS-$(CONFIG_RTE_EAL_IGB_UIO) += igb_uio
DIRS-$(CONFIG_RTE_KNI_KMOD) += kni
include $(RTE_SDK)/mk/rte.subdir.mk

View File

@ -18,7 +18,7 @@ custom_target('igb_uio',
'M=' + meson.current_build_dir(),
'src=' + meson.current_source_dir(),
'EXTRA_CFLAGS=-I' + meson.current_source_dir() +
'/../../common/include',
'/../../../lib/librte_eal/common/include',
'modules'],
depends: mkfile,
build_by_default: get_option('enable_kmods'))

46
kernel/meson.build Normal file
View File

@ -0,0 +1,46 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2017 Intel Corporation
# Initially pull in common settings
#eal_inc = [global_inc]
#subdir('common') # defines common_sources, common_objs, etc.
# Now do OS/exec-env specific settings, including building kernel modules
# The <exec-env>/eal/meson.build file should define env_sources, etc.
if host_machine.system() == 'linux'
dpdk_conf.set('RTE_EXEC_ENV_LINUXAPP', 1)
subdir('linux/igb_uio')
elif host_machine.system() == 'freebsd'
dpdk_conf.set('RTE_EXEC_ENV_BSDAPP', 1)
kmods = ['contigmem', 'nic_uio']
# for building kernel modules, we use kernel build system using make, as
# with Linux. We have a skeleton BSDmakefile, which pulls many of its
# values from the environment. Each module only has a single source file
# right now, which allows us to simplify things. We pull in the sourcer
# files from the individual meson.build files, and then use a custom
# target to call make, passing in the values as env parameters.
kmod_cflags = ['-I' + meson.build_root(),
'-I' + join_paths(meson.source_root(), 'config'),
'-include rte_config.h']
foreach k:kmods
subdir(join_paths('freebsd', k))
custom_target(k,
input: [files('freebsd/BSDmakefile.meson'), sources],
output: k + '.ko',
command: ['make', '-f', '@INPUT0@',
'KMOD_SRC=@INPUT1@',
'KMOD=' + k,
'KMOD_CFLAGS=' + ' '.join(kmod_cflags)],
build_by_default: get_option('enable_kmods'))
endforeach
else
error('unsupported system type @0@'.format(hostmachine.system()))
endif
cflags += '-D_GNU_SOURCE'
sources = common_sources + env_sources
objs = common_objs + env_objs
headers = common_headers + env_headers
includes = eal_inc

View File

@ -4,7 +4,5 @@
include $(RTE_SDK)/mk/rte.vars.mk
DIRS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += eal
DIRS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += contigmem
DIRS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += nic_uio
include $(RTE_SDK)/mk/rte.subdir.mk

View File

@ -4,8 +4,6 @@
include $(RTE_SDK)/mk/rte.vars.mk
DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += eal
DIRS-$(CONFIG_RTE_EAL_IGB_UIO) += igb_uio
DIRS-$(CONFIG_RTE_KNI_KMOD) += kni
DEPDIRS-kni := eal
CFLAGS += -DALLOW_EXPERIMENTAL_API

View File

@ -12,33 +12,11 @@ subdir('common') # defines common_sources, common_objs, etc.
if host_machine.system() == 'linux'
dpdk_conf.set('RTE_EXEC_ENV_LINUXAPP', 1)
subdir('linuxapp/eal')
subdir('linuxapp/igb_uio')
elif host_machine.system() == 'freebsd'
dpdk_conf.set('RTE_EXEC_ENV_BSDAPP', 1)
subdir('bsdapp/eal')
kmods = ['contigmem', 'nic_uio']
# for building kernel modules, we use kernel build system using make, as
# with Linux. We have a skeleton BSDmakefile, which pulls many of its
# values from the environment. Each module only has a single source file
# right now, which allows us to simplify things. We pull in the sourcer
# files from the individual meson.build files, and then use a custom
# target to call make, passing in the values as env parameters.
kmod_cflags = ['-I' + meson.build_root(),
'-I' + join_paths(meson.source_root(), 'config'),
'-include rte_config.h']
foreach k:kmods
subdir(join_paths('bsdapp', k))
custom_target(k,
input: [files('bsdapp/BSDmakefile.meson'), sources],
output: k + '.ko',
command: ['make', '-f', '@INPUT0@',
'KMOD_SRC=@INPUT1@',
'KMOD=' + k,
'KMOD_CFLAGS=' + ' '.join(kmod_cflags)],
build_by_default: get_option('enable_kmods'))
endforeach
else
error('unsupported system type @0@'.format(hostmachine.system()))
endif

View File

@ -26,6 +26,7 @@ subdir('config')
# build libs and drivers
subdir('lib')
subdir('kernel')
subdir('buildtools')
subdir('drivers')