aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt23
-rw-r--r--app_example/perf-test/multi_tcp_common_app_Cli.c2
-rw-r--r--doc/Build_DMM.md38
-rw-r--r--doc/TestAppUserGuide.md5
-rw-r--r--pkg/deb/control13
-rw-r--r--pkg/rpm/dmm.spec (renamed from scripts/dmm.spec)3
-rw-r--r--resources/extras/Vagrantfile3
-rwxr-xr-xscripts/build.sh104
-rwxr-xr-xscripts/build_dpdk1802.sh (renamed from scripts/build_dpdk.sh)40
-rwxr-xr-xscripts/build_dpdk1805.sh82
-rwxr-xr-xscripts/generate_dmm_deb.sh42
-rwxr-xr-xscripts/generate_dmm_rpm.sh4
-rwxr-xr-xscripts/git/commit-msg-hook.py136
-rw-r--r--scripts/git/commit-msg-template28
-rw-r--r--src/CMakeLists.txt4
-rw-r--r--src/framework/common/include/types.h4
-rw-r--r--src/framework/common/mem_mgr/nsfw_res_mgr.c2
-rw-r--r--src/framework/include/nsfw_mgr_com_api.h2
-rw-r--r--src/framework/ipc/mgr_com/mgr_com.c2
-rw-r--r--src/framework/ipc/ps/nsfw_fd_timer.c2
-rw-r--r--src/framework/ipc/ps/nsfw_ps_module.c1
-rw-r--r--src/framework/lib_common_mem/common_func.c2
-rw-r--r--src/nSocket/nstack/nstack.c1
-rw-r--r--src/nSocket/nstack/nstack.h1
-rw-r--r--src/nSocket/nstack/nstack_module.h2
-rw-r--r--src/nSocket/nstack/nstack_socket.c58
-rw-r--r--src/nSocket/nstack/nstack_socket.h18
-rw-r--r--src/nSocket/nstack_rd/nstack_rd_proto.c1
28 files changed, 538 insertions, 85 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c71a794..adb0670 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -30,6 +30,9 @@ SET(DMM_REL_INC_DIR ${CMAKE_CURRENT_LIST_DIR}/release/include)
SET(GENERATE_RPM_PATH ${CMAKE_CURRENT_LIST_DIR}/release/rpm)
file(MAKE_DIRECTORY ${GENERATE_RPM_PATH})
+SET(GENERATE_DEB_PATH ${CMAKE_CURRENT_LIST_DIR}/release/deb)
+file(MAKE_DIRECTORY ${GENERATE_DEB_PATH})
+
MESSAGE(STATUS "Top dir is: " ${CMAKE_CURRENT_LIST_DIR})
MESSAGE(STATUS "Static library dir: " ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
MESSAGE(STATUS "Executable binary dir: " ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
@@ -37,9 +40,23 @@ MESSAGE(STATUS "Shared library dir: " ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
add_custom_target(clean-cmake-files
- COMMAND ${CMAKE_COMMAND} -P clean-all.cmake
+ COMMAND ${CMAKE_COMMAND} -P clean-all.cmake
)
+execute_process(COMMAND git config --local --get commit.template
+ OUTPUT_VARIABLE commit_template)
+if(commit_template STREQUAL "")
+ message(STATUS "Setting git commit template...")
+ execute_process(COMMAND git config --local commit.template ${CMAKE_SOURCE_DIR}/scripts/git/commit-msg-template)
+ message(STATUS "Setting git commit template...done")
+endif()
+
+if(NOT EXISTS "${CMAKE_SOURCE_DIR}/.git/hooks/commit-msg")
+ message(STATUS "Setting git commit hook...")
+ execute_process(COMMAND ln -s ${CMAKE_SOURCE_DIR}/scripts/git/commit-msg-hook.py ${CMAKE_SOURCE_DIR}/.git/hooks/commit-msg)
+ message(STATUS "Setting git commit hook...done")
+endif()
+
option(WITH_SECUREC_LIB "Option description" OFF)
option(WITH_HAL_LIB "Option description" OFF)
@@ -94,6 +111,8 @@ ADD_DEPENDENCIES(DPDK dmm_api)
ADD_CUSTOM_TARGET(pkg-rpm COMMAND sh ../scripts/generate_dmm_rpm.sh)
+ADD_CUSTOM_TARGET(pkg-deb COMMAND sh ../scripts/generate_dmm_deb.sh)
+
ADD_CUSTOM_TARGET(clean-all
COMMAND ${CMAKE_BUILD_TOOL} clean
COMMAND sh clean_compile.sh)
@@ -139,7 +158,7 @@ ExternalProject_Add(
GLOG
SOURCE_DIR ${GLOG_SRC}
BUILD_IN_SOURCE 1
- CONFIGURE_COMMAND autoreconf COMMAND sh configure CFLAGS=-fPIC CXXFLAGS=-fPIC
+ CONFIGURE_COMMAND autoreconf -ivf COMMAND sh configure CFLAGS=-fPIC CXXFLAGS=-fPIC
BUILD_COMMAND COMMAND make -j 8
INSTALL_COMMAND cp -f ${GLOG_SRC}/.libs/libglog.a ${LIB_PATH_STATIC}/
)
diff --git a/app_example/perf-test/multi_tcp_common_app_Cli.c b/app_example/perf-test/multi_tcp_common_app_Cli.c
index 5c1fada..e395848 100644
--- a/app_example/perf-test/multi_tcp_common_app_Cli.c
+++ b/app_example/perf-test/multi_tcp_common_app_Cli.c
@@ -255,7 +255,7 @@ process_client (void)
sizeof (g_dest));
if (errconn[i] < 0)
{
- printf ("client %d Connect Failed %d\n", i, errno);
+ printf ("client %d Connect Failed %s\n", i, strerror(errno));
_CLOSE (c_socketfd[i]);
c_socketfd[i] = -1;
continue;
diff --git a/doc/Build_DMM.md b/doc/Build_DMM.md
index 8eee84a..58bd6b8 100644
--- a/doc/Build_DMM.md
+++ b/doc/Build_DMM.md
@@ -10,21 +10,24 @@ Note:
- Steps :
- Download dpdk-16.04.tar.xz from DPDK release, you can get it from [http://static.dpdk.org/rel](http://static.dpdk.org/rel)
+ Download dpdk-18.02.tar.xz from DPDK release, you can get it from [http://static.dpdk.org/rel](http://static.dpdk.org/rel)
```
- #wget http://static.dpdk.org/rel/dpdk-16.04.tar.xz
- #tar xvf dpdk-16.04.tar.xz
- #vi dpdk-16.04/config/common_base //make CONFIG_RTE_BUILD_SHARED_LIB=y, CONFIG_RTE_EXEC_ENV=y, CONFIG_RTE_LIBRTE_EAL=y
- #cd dpdk-16.04
+ #wget http://static.dpdk.org/rel/dpdk-18.02.tar.xz
+ #tar xvf dpdk-18.02.tar.xz
+ #vi dpdk-18.02/config/common_base
+ //make CONFIG_RTE_BUILD_SHARED_LIB=y, CONFIG_RTE_EXEC_ENV=y, CONFIG_RTE_LIBRTE_EAL=y, CONFIG_RTE_EAL_PMD_PATH="/tmp/dpdk/drivers/"
+ #cd dpdk-18.02
#make install T=x86_64-native-linuxapp-gcc DESTDIR=/usr -j 4
#cd x86_64-native-linuxapp-gcc
#make //install the dpdk which will generate .so inside lib folder in the path.
+ #mkdir -p /tmp/dpdk/drivers/
+ #cp -f /usr/lib/librte_mempool_ring.so /tmp/dpdk/drivers/
```
Note:
Environment:
- Linux ubuntu 14.04 or some distro which support dpdk-16.04
+ Linux ubuntu 16.04 or some distro which support dpdk-18.02
# 3. Build DMM:
@@ -45,7 +48,26 @@ Note:
For centos we can use the command 'make pkg-rpm' to generate the rpm package in release/rpm.
-# 4. Env Setting:
+# 4. Build rsocket:
+
+```
+ #cd $(DMM_DIR)/build
+ #make dmm_rsocket
+```
+Note:
+ Make sure Mellanox OFED has been installed in your computer, or run the following command before compiling
+
+```
+ #cd $DMM_DIR/stacks/rsocket
+ //Take ubuntu16.04 as an example, the tgz file has the format MLNX_OFED_LINUX-<ver>-<OS label><CPU arch>.tgz
+ #wget http://www.mellanox.com/downloads/ofed/MLNX_OFED-4.4-1.0.0.0/MLNX_OFED_LINUX-4.4-1.0.0.0-ubuntu16.04-x86_64.tgz
+ #tar -zxvf MLNX_OFED_LINUX-4.4-1.0.0.0-ubuntu16.04-x86_64.tgz
+ #cd MLNX_OFED_LINUX-4.4-1.0.0.0-ubuntu16.04-x86_64
+ #./mlnxofedinstall --force
+```
+
+
+# 5. Env Setting:
- Hugepage setting:
@@ -69,7 +91,7 @@ Check hugepage info
```
-# 5. Build and Run the APP
+# 6. Biuld and Run the APP
- Link the app with the lib **libnStackAPI.so** first, you can refer to app_example/perf-test
diff --git a/doc/TestAppUserGuide.md b/doc/TestAppUserGuide.md
index 2f21023..ef118d2 100644
--- a/doc/TestAppUserGuide.md
+++ b/doc/TestAppUserGuide.md
@@ -98,12 +98,15 @@ We need to setup configuration as given below.
Usage:
-After building the DMM, inside the DMM/release directory below perf-test app will be generated.
+After building the DMM, inside the DMM/release/bin directory below perf-test app will be generated.
*kc_common, ks_epoll, ks_select, vc_common, vs_epoll, vs_select*
The use of ks_epoll,ks_select,vs_epoll and vs_select are the same.
+Before executing the app, we should disable ASLR (Address space layout randomization).
+ echo 0 > /proc/sys/kernel/randomize_va_space
+
Examples:
**With Kernel stack(With direct kernel stack):**
diff --git a/pkg/deb/control b/pkg/deb/control
new file mode 100644
index 0000000..c220c72
--- /dev/null
+++ b/pkg/deb/control
@@ -0,0 +1,13 @@
+Package: dmm
+Version: 18.04
+Section: tuils
+Priority: optional
+Depends: libc6, libstdc++6, libgcc1
+Suggests:
+Architecture: amd64
+Installed-Size:
+Maintainer: jorth
+Original-Maintainer:
+Provides:
+Description: DMM is a framework for protocol stack.
+Homepage: https://gerrit.fd.io/r/dmm
diff --git a/scripts/dmm.spec b/pkg/rpm/dmm.spec
index 4869140..1022523 100644
--- a/scripts/dmm.spec
+++ b/pkg/rpm/dmm.spec
@@ -7,6 +7,9 @@ License: GPL
URL: https://gerrit.fd.io/r/dmm
Source: %{name}-%{version}.tar.gz
+BuildRequires: glibc, libstdc++, libgcc, numactl-libs
+BuildRequires: dpdk >= 18.02, dpdk-devel >= 18.02
+
%description
The DMM framework provides posix socket APIs to the application. A protocol
stack could be plugged into the DMM. DMM will choose the most suitable stack
diff --git a/resources/extras/Vagrantfile b/resources/extras/Vagrantfile
index c3107c9..969c91f 100644
--- a/resources/extras/Vagrantfile
+++ b/resources/extras/Vagrantfile
@@ -8,7 +8,8 @@ Vagrant.configure(2) do |config|
if distro == 'centos7'
config.vm.box = "puppetlabs/centos-7.2-64-nocm"
else
- config.vm.box = "fdio-csit/ubuntu-14.04.4_2016-05-25_1.0"
+ #config.vm.box = "fdio-csit/ubuntu-14.04.4_2016-05-25_1.0"
+ config.vm.box = "puppetlabs/ubuntu-16.04-64-nocm"
end
config.vm.box_check_update = false
diff --git a/scripts/build.sh b/scripts/build.sh
index 926f3b0..d412956 100755
--- a/scripts/build.sh
+++ b/scripts/build.sh
@@ -1,3 +1,4 @@
+#!/bin/bash -x
#########################################################################
# Copyright (c) 2018 Huawei Technologies Co.,Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -12,7 +13,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#########################################################################
-#!/bin/bash -x
set -x
@@ -48,7 +48,13 @@ echo KERNEL_MACHINE: $KERNEL_MACHINE
echo KERNEL_RELEASE: $KERNEL_RELEASE
echo KERNEL_VERSION: $KERNEL_VERSION
echo OS_ID: $OS_ID
-echo OS_VERSION_ID: $OS_ID
+echo OS_VERSION_ID: $OS_VERSION_ID
+
+
+# add inherited proxy for sudo user
+LINE='Defaults env_keep += "ftp_proxy http_proxy https_proxy no_proxy"'
+FILE=/etc/sudoers
+grep -qF -- "$LINE" "$FILE" || sudo echo "$LINE" >> "$FILE"
#DPDK download path
DPDK_DOWNLOAD_PATH=/tmp/dpdk
@@ -63,8 +69,10 @@ if [ "$OS_ID" == "ubuntu" ]; then
APT_OPTS="--assume-yes --no-install-suggests --no-install-recommends -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\""
sudo apt-get update ${APT_OPTS}
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -yq git cmake gcc g++ automake libtool wget lsof lshw pciutils net-tools tcpdump libpcre3 libpcre3-dev zlibc zlib1g zlib1g-dev vim
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -yq git cmake gcc g++ automake libtool wget lsof lshw pciutils net-tools tcpdump libpcre3 libpcre3-dev zlibc zlib1g zlib1g-dev vim pkg-config tcl libnl-route-3-200 flex graphviz tk debhelper dpatch gfortran ethtool libgfortran3 bison dkms quilt chrpath swig python-libxml2
elif [ "$OS_ID" == "debian" ]; then
+ echo "not tested for debian and exit"
+ exit 1
export DEBIAN_FRONTEND=noninteractive
export DEBCONF_NONINTERACTIVE_SEEN=true
@@ -72,8 +80,10 @@ elif [ "$OS_ID" == "debian" ]; then
sudo apt-get update ${APT_OPTS}
sudo DEBIAN_FRONTEND=noninteractive apt-get install -yq git cmake gcc g++ automake libtool wget lsof lshw pciutils net-tools tcpdump libpcre3 libpcre3-dev zlibc zlib1g zlib1g-dev vim
elif [ "$OS_ID" == "centos" ]; then
- sudo yum install -y git cmake gcc g++ automake libtool wget lsof lshw pciutils net-tools tcpdump vim sudo yum-utils pcre-devel zlib-devel
+ sudo yum install -y deltarpm git cmake gcc g++ automake libtool wget lsof lshw pciutils net-tools tcpdump vim sudo yum-utils pcre-devel zlib-devel libiverbs tk tcl tcsh redhat-lsb-core
elif [ "$OS_ID" == "opensuse" ]; then
+ echo "not tested for opensuse and exit"
+ exit 1
sudo yum install -y git cmake gcc g++ automake libtool wget lsof lshw pciutils net-tools tcpdump vim sudo yum-utils pcre-devel zlib-devel
fi
@@ -81,11 +91,13 @@ fi
#DPDK will be having dependancy on linux headers
if [ "$OS_ID" == "ubuntu" ]; then
sudo apt-get -y install git build-essential linux-headers-`uname -r`
+ sudo apt-get -y install libnuma-dev
elif [ "$OS_ID" == "debian" ]; then
sudo apt-get -y install git build-essential linux-headers-`uname -r`
elif [ "$OS_ID" == "centos" ]; then
sudo yum groupinstall -y "Development Tools"
sudo yum install -y kernel-headers
+ sudo yum install -y numactl-devel
elif [ "$OS_ID" == "opensuse" ]; then
sudo yum groupinstall -y "Development Tools"
sudo yum install -y kernel-headers
@@ -95,47 +107,50 @@ fi
#===========build DPDK================
if [ "$OS_ID" == "centos" ]; then
- bash -x $DMM_DIR/scripts/build_dpdk.sh
+ bash -x $DMM_DIR/scripts/build_dpdk1802.sh || exit 1
else
if [ ! -d /usr/include/dpdk ] || [ ! -d /usr/share/dpdk ] || [ ! -d /usr/lib/modules/4.4.0-31-generic/extra/dpdk ]; then
- mkdir -p $DPDK_DOWNLOAD_PATH
+ mkdir -p $DPDK_DOWNLOAD_PATH
- DPDK_FOLDER=$DPDK_DOWNLOAD_PATH/dpdk-16.04-$TIMESTAMP
- cd $DPDK_DOWNLOAD_PATH
- mkdir $DPDK_FOLDER
- wget -N https://fast.dpdk.org/rel/dpdk-16.04.tar.xz --no-check-certificate
- tar xvf dpdk-16.04.tar.xz -C $DPDK_FOLDER
- cd $DPDK_FOLDER/dpdk-16.04
+ DPDK_FOLDER=$DPDK_DOWNLOAD_PATH/dpdk-18.02-$TIMESTAMP
+ cd $DPDK_DOWNLOAD_PATH
+ mkdir $DPDK_FOLDER
+ wget -N https://fast.dpdk.org/rel/dpdk-18.02.tar.xz --no-check-certificate
+ tar xvf dpdk-18.02.tar.xz -C $DPDK_FOLDER
+ cd $DPDK_FOLDER/dpdk-18.02
- sed -i 's!CONFIG_RTE_EXEC_ENV=.*!CONFIG_RTE_EXEC_ENV=y!1' config/common_base
- sed -i 's!CONFIG_RTE_BUILD_SHARED_LIB=.*!CONFIG_RTE_BUILD_SHARED_LIB=y!1' config/common_base
- sed -i 's!CONFIG_RTE_LIBRTE_EAL=.*!CONFIG_RTE_LIBRTE_EAL=y!1' config/common_base
+ sed -i 's!CONFIG_RTE_EXEC_ENV=.*!CONFIG_RTE_EXEC_ENV=y!1' config/common_base
+ sed -i 's!CONFIG_RTE_BUILD_SHARED_LIB=.*!CONFIG_RTE_BUILD_SHARED_LIB=y!1' config/common_base
+ sed -i 's!CONFIG_RTE_LIBRTE_EAL=.*!CONFIG_RTE_LIBRTE_EAL=y!1' config/common_base
+ sed -i 's!CONFIG_RTE_EAL_PMD_PATH=.*!CONFIG_RTE_EAL_PMD_PATH="/tmp/dpdk/drivers/"!1' config/common_base
- sudo make install T=x86_64-native-linuxapp-gcc DESTDIR=${DPDK_INSTALL_PATH} -j 4
+ sudo make install T=x86_64-native-linuxapp-gcc DESTDIR=${DPDK_INSTALL_PATH} -j 4
+ mkdir -p /tmp/dpdk/drivers/
+ cp -f /usr/lib/librte_mempool_ring.so /tmp/dpdk/drivers/
fi
fi
#===========build DMM=================
echo "DMM build started....."
-cd $DMM_DIR/thirdparty/glog/glog-0.3.4/ && autoreconf -ivf
cd $BUILD_DIR
rm -rf *
cmake ..
make -j 8
-if [ $? -eq 0 ]
-then
- echo "DMM build is SUCCESS"
+if [ $? -eq 0 ]; then
+ echo "DMM build is SUCCESS"
else
- echo "DMM build has FAILED"
- exit 1
+ echo "DMM build has FAILED"
+ exit 1
fi
if [ "$OS_ID" == "centos" ]; then
make pkg-rpm
+elif [ "$OS_ID" == "ubuntu" ]; then
+ make pkg-deb
fi
#===========check running env =================
@@ -154,20 +169,20 @@ fi
hugepageTotal=$(cat /proc/meminfo | grep -c "HugePages_Total: 0")
if [ $hugepageTotal -ne 0 ]; then
- echo "HugePages_Total is zero"
- exit
+ echo "HugePages_Total is zero"
+ exit
fi
hugepageFree=$(cat /proc/meminfo | grep -c "HugePages_Free: 0")
if [ $hugepageFree -ne 0 ]; then
- echo "HugePages_Free is zero"
- exit
+ echo "HugePages_Free is zero"
+ exit
fi
hugepageSize=$(cat /proc/meminfo | grep -c "Hugepagesize: 0 kB")
if [ $hugepageSize -ne 0 ]; then
- echo "Hugepagesize is zero"
- exit
+ echo "Hugepagesize is zero"
+ exit
fi
sudo mkdir /mnt/nstackhuge -p
@@ -178,6 +193,9 @@ elif [ "$hugepagesize" == "1048576" ]; then
fi
sudo mkdir -p /var/run/ip_module/
+#disable ASLR, othewise it may have some problems when mapping memory for secondary process
+echo 0 > /proc/sys/kernel/randomize_va_space
+
export LD_LIBRARY_PATH=$LIB_PATH
export NSTACK_LOG_ON=DBG
@@ -188,9 +206,9 @@ mkdir -p $DMM_DIR/config/app_test
cd $DMM_DIR/config/app_test
if [ "$OS_ID" == "ubuntu" ]; then
- ifaddress1=$(ifconfig eth1 | grep 'inet addr' | cut -d: -f2 | awk '{print $1}')
+ ifaddress1=$(ifconfig enp0s8 | grep 'inet addr' | cut -d: -f2 | awk '{print $1}')
echo $ifaddress1
- ifaddress2=$(ifconfig eth2 | grep 'inet addr' | cut -d: -f2 | awk '{print $1}')
+ ifaddress2=$(ifconfig enp0s9 | grep 'inet addr' | cut -d: -f2 | awk '{print $1}')
echo $ifaddress2
elif [ "$OS_ID" == "centos" ]; then
ifaddress1=$(ifconfig enp0s8 | grep 'inet' | cut -d: -f2 | awk '{print $2}')
@@ -240,3 +258,29 @@ echo '{
}' | tee rd_config.json
echo "DMM build finished....."
+
+############### build rsocket
+echo "rsocket build start"
+cd $DMM_DIR/stacks/rsocket
+if [ "$OS_ID" == "ubuntu" ]; then
+ wget http://www.mellanox.com/downloads/ofed/MLNX_OFED-4.4-1.0.0.0/MLNX_OFED_LINUX-4.4-1.0.0.0-ubuntu16.04-x86_64.tgz
+ tar -zxvf MLNX_OFED_LINUX-4.4-1.0.0.0-ubuntu16.04-x86_64.tgz
+ cd MLNX_OFED_LINUX-4.4-1.0.0.0-ubuntu16.04-x86_64
+elif [ "$OS_ID" == "centos" ]; then
+ CENT_VERSION=`grep -oE '[0-9]+\.[0-9]+' /etc/redhat-release`
+ wget http://www.mellanox.com/downloads/ofed/MLNX_OFED-4.4-1.0.0.0/MLNX_OFED_LINUX-4.4-1.0.0.0-rhel${CENT_VERSION}-x86_64.tgz
+ tar -zxvf MLNX_OFED_LINUX-4.4-1.0.0.0-rhel${CENT_VERSION}-x86_64.tgz
+ cd MLNX_OFED_LINUX-4.4-1.0.0.0-rhel${CENT_VERSION}-x86_64
+fi
+
+./mlnxofedinstall --force || exit 1
+
+cd $BUILD_DIR
+make dmm_rsocket
+if [ $? -eq 0 ]; then
+ echo "rsocket build has SUCCESS"
+else
+ echo "rsocket build has FAILED"
+ exit 1
+fi
+echo "rsocket build finished"
diff --git a/scripts/build_dpdk.sh b/scripts/build_dpdk1802.sh
index 80a78b6..01379d6 100755
--- a/scripts/build_dpdk.sh
+++ b/scripts/build_dpdk1802.sh
@@ -1,3 +1,4 @@
+#!/bin/bash -x
#########################################################################
#
# Copyright (c) 2018 Huawei Technologies Co.,Ltd.
@@ -13,7 +14,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#########################################################################
-#!/bin/bash -x
echo "check whether dpdk installed"
cur_directory=${PWD}
@@ -31,41 +31,33 @@ mkdir -p rpmbuild/SOURCES
cd ~/rpmbuild/SOURCES
-if [ ! -s dpdk-16.04.tar.gz ]; then
-wget http://dpdk.org/browse/dpdk/snapshot/dpdk-16.04.tar.gz
+if [ ! -s dpdk-18.02.tar.gz ]; then
+wget http://dpdk.org/browse/dpdk/snapshot/dpdk-18.02.tar.gz
fi
-tar xzvf dpdk-16.04.tar.gz
-cp dpdk-16.04/pkg/dpdk.spec ~/rpmbuild/SOURCES/
+tar xzvf dpdk-18.02.tar.gz
+cp dpdk-18.02/pkg/dpdk.spec ~/rpmbuild/SOURCES/
echo "modify the spec"
-#get rid of the dependence of xen-devel
-sed -i '48d' dpdk.spec
-sed -i '47a BuildRequires: kernel-devel, kernel-headers, libpcap-devel' dpdk.spec
-
#get rid of the dependence of texlive-collection
sed -i '/BuildRequires: texlive-collection/s/^/#&/' dpdk.spec
-#delete something about xen
-sed -i '/LIBRTE_PMD_XENVIRT/s/^/#&/' dpdk.spec
-sed -i '/LIBRTE_XEN_DOM0/s/^/#&/' dpdk.spec
-
#delete something of generating doc
sed -i '/%{target} doc/s/^/#&/' dpdk.spec
-sed -i '94d' dpdk.spec
-sed -i '93a datadir=%{_datadir}/dpdk' dpdk.spec
-sed -i '94a # datadir=%{_datadir}/dpdk docdir=%{_docdir}/dpdk' dpdk.spec
+sed -i '98d' dpdk.spec
+sed -i '97a datadir=%{_datadir}/dpdk' dpdk.spec
+sed -i '98a # datadir=%{_datadir}/dpdk docdir=%{_docdir}/dpdk' dpdk.spec
sed -i '/%files doc/s/^/#&/' dpdk.spec
sed -i '/%doc %{_docdir}/s/^/#&/' dpdk.spec
-sed -i '76a sed -i 's!CONFIG_RTE_EXEC_ENV=.*!CONFIG_RTE_EXEC_ENV=y!1' config/common_base' dpdk.spec
-sed -i '77a sed -i 's!CONFIG_RTE_BUILD_SHARED_LIB=.*!CONFIG_RTE_BUILD_SHARED_LIB=y!1' config/common_base' dpdk.spec
-sed -i '78a sed -i 's!CONFIG_RTE_LIBRTE_EAL=.*!CONFIG_RTE_LIBRTE_EAL=y!1' config/common_base' dpdk.spec
+sed -i '82a sed -i '\''s!CONFIG_RTE_EXEC_ENV=.*!CONFIG_RTE_EXEC_ENV=y!1'\'' config/common_base' dpdk.spec
+sed -i '83a sed -i '\''s!CONFIG_RTE_BUILD_SHARED_LIB=.*!CONFIG_RTE_BUILD_SHARED_LIB=y!1'\'' config/common_base' dpdk.spec
+sed -i '84a sed -i '\''s!CONFIG_RTE_LIBRTE_EAL=.*!CONFIG_RTE_LIBRTE_EAL=y!1'\'' config/common_base' dpdk.spec
+sed -i '85a sed -i '\''s!CONFIG_RTE_EAL_PMD_PATH=.*!CONFIG_RTE_EAL_PMD_PATH="/tmp/dpdk/drivers/"!1'\'' config/common_base' dpdk.spec
echo "build the dependence"
#sudo yum-builddep -y dpdk.spec
-
sudo yum install -y libpcap-devel python-sphinx inkscape
@@ -80,6 +72,10 @@ fi
echo "install the rpm"
cd ../RPMS/x86_64/
-sudo rpm -ivh dpdk-16.04-1.x86_64.rpm
-sudo rpm -ivh dpdk-devel-16.04-1.x86_64.rpm
+sudo rpm -ivh dpdk-18.02-1.x86_64.rpm || exit 1
+sudo rpm -ivh dpdk-devel-18.02-1.x86_64.rpm || exit 1
+
+mkdir -p /tmp/dpdk/drivers/
+cp -f /usr/lib64/librte_mempool_ring.so /tmp/dpdk/drivers/
+
cd ${cur_directory}
diff --git a/scripts/build_dpdk1805.sh b/scripts/build_dpdk1805.sh
new file mode 100755
index 0000000..805153b
--- /dev/null
+++ b/scripts/build_dpdk1805.sh
@@ -0,0 +1,82 @@
+#!/bin/bash -x
+#########################################################################
+#
+# Copyright (c) 2018 Huawei Technologies Co.,Ltd.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#########################################################################
+
+echo "check whether dpdk installed"
+cur_directory=${PWD}
+check_dpdk=$(rpm -qa | grep dpdk)
+if [ -z "$check_dpdk" ]; then
+ echo "system will install the dpdk"
+else
+ echo "system has installed the dpdk"
+ echo "$check_dpdk"
+ exit 0
+fi
+
+cd ~
+mkdir -p rpmbuild/SOURCES
+
+cd ~/rpmbuild/SOURCES
+
+if [ ! -s dpdk-18.05.tar.gz ]; then
+wget http://dpdk.org/browse/dpdk/snapshot/dpdk-18.05.tar.gz
+fi
+
+tar xzvf dpdk-18.05.tar.gz
+cp dpdk-18.05/pkg/dpdk.spec ~/rpmbuild/SOURCES/
+
+echo "modify the spec"
+
+#get rid of the dependence of texlive-collection
+sed -i '/BuildRequires: texlive-collection/s/^/#&/' dpdk.spec
+
+#delete something of generating doc
+sed -i '/%{target} doc/s/^/#&/' dpdk.spec
+sed -i '70d' dpdk.spec
+sed -i '69a datadir=%{_datadir}/dpdk' dpdk.spec
+sed -i '70a # datadir=%{_datadir}/dpdk docdir=%{_docdir}/dpdk' dpdk.spec
+sed -i '/%files doc/s/^/#&/' dpdk.spec
+sed -i '/%doc %{_docdir}/s/^/#&/' dpdk.spec
+
+sed -i '54a sed -i '\''s!CONFIG_RTE_EXEC_ENV=.*!CONFIG_RTE_EXEC_ENV=y!1'\'' config/common_base' dpdk.spec
+sed -i '55a sed -i '\''s!CONFIG_RTE_BUILD_SHARED_LIB=.*!CONFIG_RTE_BUILD_SHARED_LIB=y!1'\'' config/common_base' dpdk.spec
+sed -i '56a sed -i '\''s!CONFIG_RTE_LIBRTE_EAL=.*!CONFIG_RTE_LIBRTE_EAL=y!1'\'' config/common_base' dpdk.spec
+sed -i '57a sed -i '\''s!CONFIG_RTE_EAL_PMD_PATH=.*!CONFIG_RTE_EAL_PMD_PATH="/tmp/dpdk/drivers/"!1'\'' config/common_base' dpdk.spec
+sed -i '58a sed -i '\''s!CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA=.*!CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA=n!1'\'' config/common_base' dpdk.spec
+
+echo "build the dependence"
+#sudo yum-builddep -y dpdk.spec
+sudo yum install -y libpcap-devel python-sphinx inkscape
+
+
+echo "generate the rpm package"
+rpmbuild -ba dpdk.spec --define "_sourcedir ${PWD}"
+if [ $? -eq 0 ]; then
+ echo "rpm build success"
+else
+ echo "rpm build error"
+ exit
+fi
+
+echo "install the rpm"
+cd ../RPMS/x86_64/
+sudo rpm -ivh dpdk-18.05-1.x86_64.rpm || exit 1
+sudo rpm -ivh dpdk-devel-18.05-1.x86_64.rpm || exit 1
+
+mkdir -p /tmp/dpdk/drivers/
+cp -f /usr/lib64/librte_mempool_ring.so /tmp/dpdk/drivers/
+
+cd ${cur_directory}
diff --git a/scripts/generate_dmm_deb.sh b/scripts/generate_dmm_deb.sh
new file mode 100755
index 0000000..5168d07
--- /dev/null
+++ b/scripts/generate_dmm_deb.sh
@@ -0,0 +1,42 @@
+#########################################################################
+#
+# Copyright (c) 2018 Huawei Technologies Co.,Ltd.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#########################################################################
+#!/bin/sh
+
+cur_directory=${PWD}
+
+mkdir -p /tmp/mkdeb
+mkdir -p /tmp/mkdeb/DEBIAN
+mkdir -p /tmp/mkdeb/usr/bin
+mkdir -p /tmp/mkdeb/usr/lib
+
+cd ../
+git archive --format=tar.gz -o /tmp/dmm.tar.gz --prefix=dmm/ HEAD
+
+cd /tmp/
+tar xzvf dmm.tar.gz
+cd dmm/build
+cmake ..
+make -j 8
+
+cd ../
+cp -f release/bin/* /tmp/mkdeb/usr/bin
+cp -f release/lib64/* /tmp/mkdeb/usr/lib
+cp -f pkg/deb/control /tmp/mkdeb/DEBIAN/
+
+cd /tmp/
+dpkg-deb -b mkdeb/ ${cur_directory}/../release/deb/dmm.deb
+
+cd ${cur_directory}
diff --git a/scripts/generate_dmm_rpm.sh b/scripts/generate_dmm_rpm.sh
index bce4580..792c2a3 100755
--- a/scripts/generate_dmm_rpm.sh
+++ b/scripts/generate_dmm_rpm.sh
@@ -22,12 +22,12 @@ version="18.04"
mkdir -p ~/rpmbuild/SOURCES
cd ../
-git archive --format=tar.gz -o ~/rpmbuild/SOURCES/${name}-${version}.tar.gz --prefix=${name}-${version}/ master
+git archive --format=tar.gz -o ~/rpmbuild/SOURCES/${name}-${version}.tar.gz --prefix=${name}-${version}/ HEAD
cd ~/rpmbuild/SOURCES
tar xzvf ${name}-${version}.tar.gz
-cp ${name}-${version}/scripts/dmm.spec ~/rpmbuild/SOURCES
+cp ${name}-${version}/pkg/rpm/dmm.spec ~/rpmbuild/SOURCES
echo "generate the rpm package"
#QA_RPATHS=$[ 0x0002 ] is to shield the warning about rpath when generating the rpm package
diff --git a/scripts/git/commit-msg-hook.py b/scripts/git/commit-msg-hook.py
new file mode 100755
index 0000000..719ff22
--- /dev/null
+++ b/scripts/git/commit-msg-hook.py
@@ -0,0 +1,136 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import sys
+
+
+# format: \033[type;fg;bgm
+#
+# fg bg color
+# -------------------------------------------
+# 30 40 black
+# 31 41 red
+# 32 42 green
+# 33 43 yellow
+# 34 44 blue
+# 35 45 purple
+# 36 46 cyan
+# 37 47 white
+#
+# type
+# -------------------------
+# 0 normal
+# 1 bold
+# 4 underline
+# 5 blink
+# 7 invert
+# 8 hide
+#
+# examples:
+# \033[1;31;40m <!--1-bold 31-red fg 40-black bg-->
+# \033[0m <!--back to normal-->
+
+
+STYLE = {
+ 'fore':
+ {
+ 'black' : 30,
+ 'red' : 31,
+ 'green' : 32,
+ 'yellow' : 33,
+ 'blue' : 34,
+ 'purple' : 35,
+ 'cyan' : 36,
+ 'white' : 37,
+ },
+
+ 'back':
+ {
+ 'black' : 40,
+ 'red' : 41,
+ 'green' : 42,
+ 'yellow' : 43,
+ 'blue' : 44,
+ 'purple' : 45,
+ 'cyan' : 46,
+ 'white' : 47,
+ },
+
+ 'mode':
+ {
+ 'normal' : 0,
+ 'bold' : 1,
+ 'underline' : 4,
+ 'blink' : 5,
+ 'invert' : 7,
+ 'hide' : 8,
+ },
+
+ 'default':
+ {
+ 'end': 0,
+ },
+}
+
+
+def style(string, mode='', fore='', back=''):
+
+ mode = '%s' % STYLE['mode'][mode] if STYLE['mode'].has_key(mode) else ''
+
+ fore = '%s' % STYLE['fore'][fore] if STYLE['fore'].has_key(fore) else ''
+
+ back = '%s' % STYLE['back'][back] if STYLE['back'].has_key(back) else ''
+
+ style = ';'.join([s for s in [mode, fore, back] if s])
+
+ style = '\033[%sm' % style if style else ''
+
+ end = '\033[%sm' % STYLE['default']['end'] if style else ''
+
+ return '%s%s%s' % (style, string, end)
+
+
+def check_subject(subject_line):
+ types = ['Feat', 'Fix', 'Refactor', 'Style', 'Docs', 'Test', 'Chore']
+
+ if subject_line.startswith(' '):
+ print style('Error: Subject line starts with whitespace\n', fore='red')
+ return 1
+
+ if len(subject_line) > 50:
+ print style('Error: Subject line should be limited to 50 chars\n', fore='red')
+ return 1
+
+ ll = subject_line.split(':')
+ if len(ll) < 2:
+ print style('Error: Subject line should have a type\n', fore='red')
+ return 1
+
+ type = ll[0]
+ if type not in types:
+ print style('Error: Subject line starts with unknown type\n', fore='red')
+ return 1
+
+ return 0
+
+
+contents = []
+ret = 0
+subject = True
+
+with open(sys.argv[1], 'r') as commit_msg:
+ contents = commit_msg.readlines()
+
+for line in contents:
+ dup = line.lstrip()
+ if dup.startswith('#'):
+ continue
+ if subject is True:
+ ret = check_subject(line)
+ subject = False
+ else:
+ if len(line) > 72:
+ print style('Error: Body line should be limited to 72 chars\n', fore='red')
+ ret = 1
+
+exit(ret)
diff --git a/scripts/git/commit-msg-template b/scripts/git/commit-msg-template
new file mode 100644
index 0000000..6d72af1
--- /dev/null
+++ b/scripts/git/commit-msg-template
@@ -0,0 +1,28 @@
+# <type>: (if applied, this commit will...) <subject> (Max 50 chars)
+# |<---- Using a Maximum Of 50 Characters ---->|
+
+
+# Explain why this change is being made
+# |<---- Try To Limit Each Line to a Maximum Of 72 Characters ---->|
+
+# Provide links or keys to any relevant tickets, articles or other resources
+# Example: Github issue #23
+
+# --- COMMIT END ---
+# Type can be
+# Feat (new feature)
+# Fix (bug fix)
+# Refactor (refactoring production code)
+# Style (formatting, missing semi colons, etc; no code change)
+# Docs (changes to documentation)
+# Test (adding or refactoring tests; no production code change)
+# Chore (updating grunt tasks etc; no production code change)
+# --------------------
+# Remember to
+# Choose one of types above in subject line
+# Use the imperative mood in the subject line
+# Do not end the subject line with a period
+# Separate subject from body with a blank line
+# Use the body to explain what and why vs. how
+# Can use multiple lines with "-" for bullet points in body
+# --------------------
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index d085679..1a7f63f 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -31,7 +31,7 @@ INCLUDE_DIRECTORIES(
../thirdparty/glog/glog-0.3.4/src/
)
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -g -fPIC -m64 -mssse3 -std=gnu89")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -g -fPIC -m64 -mssse3 -std=gnu89")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -Wshadow -Wfloat-equal -Wformat=2")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector -fstack-protector-all")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-z,relro,-z,now -Wl,--disable-new-dtags")
@@ -40,7 +40,7 @@ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-z,noexecstack -mcmodel=medium")
SET(COMPLE_CONFIG ${PROJECT_SOURCE_DIR}/src/framework/common/include/compile_config.h)
ADD_DEFINITIONS(-include ${COMM_CONFIG})
ADD_DEFINITIONS(-include ${COMPLE_CONFIG})
-ADD_DEFINITIONS(-D_GNU_SOURCE -DNSTACK_GETVER_VERSION="18.04" -D_FORTIFY_SOURCE=2)
+ADD_DEFINITIONS(-D_GNU_SOURCE -DNSTACK_GETVER_VERSION="18.04")
#LINK_DIRECTORIES(${LIB_PATH_SHARED} ${LIB_PATH_STATIC})
if(WITH_SECUREC_LIB)
diff --git a/src/framework/common/include/types.h b/src/framework/common/include/types.h
index c7d013c..bd4d80b 100644
--- a/src/framework/common/include/types.h
+++ b/src/framework/common/include/types.h
@@ -58,10 +58,6 @@ typedef unsigned long long u64;
#define NULL ((void *)0)
#endif
-#define container_of(ptr, type, member) ( \
- (type *)((char *)(ptr) - offsetof(type,member)) \
- )
-
#define PRIMARY_ADDR
typedef struct _nsfw_res
diff --git a/src/framework/common/mem_mgr/nsfw_res_mgr.c b/src/framework/common/mem_mgr/nsfw_res_mgr.c
index 2f676c9..c4d8010 100644
--- a/src/framework/common/mem_mgr/nsfw_res_mgr.c
+++ b/src/framework/common/mem_mgr/nsfw_res_mgr.c
@@ -176,7 +176,7 @@ nsfw_res_flash_data (nsfw_res_mgr_item_cfg * res_scn_item)
(struct common_mem_mempool *) scn_cfg->data;
if (NULL == ring)
{
- ring = mp->ring;
+ ring = mp->pool_data;
if (NULL == ring)
return FALSE;
}
diff --git a/src/framework/include/nsfw_mgr_com_api.h b/src/framework/include/nsfw_mgr_com_api.h
index 094043e..dcb602c 100644
--- a/src/framework/include/nsfw_mgr_com_api.h
+++ b/src/framework/include/nsfw_mgr_com_api.h
@@ -107,7 +107,7 @@ typedef enum _fw_poc_type
NSFW_PROC_MAX = 16
} fw_poc_type;
-#define NSFW_DOMAIN_DIR "/var/run"
+#define NSFW_DOMAIN_DIR "/var/run/"
#define NSTACK_MAX_PROC_NAME_LEN 20
typedef enum _nsfw_mgr_msg_rsp_code
diff --git a/src/framework/ipc/mgr_com/mgr_com.c b/src/framework/ipc/mgr_com/mgr_com.c
index 2b35e2c..25d8bff 100644
--- a/src/framework/ipc/mgr_com/mgr_com.c
+++ b/src/framework/ipc/mgr_com/mgr_com.c
@@ -1859,6 +1859,8 @@ nsfw_mgr_com_module_init (void *param)
return -1;
}
+ //TODO: check the path exist or not
+
NSFW_LOGINF ("module mgr init]NSFW_PROC_MAIN domain_path=%s",
mgr_cfg->domain_path);
diff --git a/src/framework/ipc/ps/nsfw_fd_timer.c b/src/framework/ipc/ps/nsfw_fd_timer.c
index 8c73ec0..55d35cb 100644
--- a/src/framework/ipc/ps/nsfw_fd_timer.c
+++ b/src/framework/ipc/ps/nsfw_fd_timer.c
@@ -22,6 +22,8 @@
#include "types.h"
#include "list.h"
+#include "common_mem_common.h"
+
#include "nstack_securec.h"
#include "nsfw_init.h"
#include "nsfw_mgr_com_api.h"
diff --git a/src/framework/ipc/ps/nsfw_ps_module.c b/src/framework/ipc/ps/nsfw_ps_module.c
index 0a02e6c..e600bf7 100644
--- a/src/framework/ipc/ps/nsfw_ps_module.c
+++ b/src/framework/ipc/ps/nsfw_ps_module.c
@@ -39,6 +39,7 @@
#include <linux/netlink.h>
#include <dirent.h>
#include <fnmatch.h>
+#include "common_mem_common.h"
#ifdef __cplusplus
/* *INDENT-OFF* */
diff --git a/src/framework/lib_common_mem/common_func.c b/src/framework/lib_common_mem/common_func.c
index f68380f..0cf5b90 100644
--- a/src/framework/lib_common_mem/common_func.c
+++ b/src/framework/lib_common_mem/common_func.c
@@ -137,7 +137,7 @@ dmm_pktmbuf_pool_iterator (struct common_mem_mempool * mp, uint32_t start,
}
int32_t elm_size = mp->elt_size + mp->header_size + mp->trailer_size;
- struct common_mem_mbuf *elm_mbuf = (struct common_mem_mbuf *) (mp->elt_va_start + start * elm_size + mp->header_size); /*lint !e647 */
+ struct common_mem_mbuf *elm_mbuf = (struct common_mem_mbuf *) (STAILQ_FIRST(&mp->mem_list)->addr + start * elm_size + mp->header_size); /*lint !e647 */
uint32_t i;
uint32_t mbuf_end = COMMON_MEM_MIN (end, mp->size) - start;
diff --git a/src/nSocket/nstack/nstack.c b/src/nSocket/nstack/nstack.c
index 749f06d..66281af 100644
--- a/src/nSocket/nstack/nstack.c
+++ b/src/nSocket/nstack/nstack.c
@@ -767,6 +767,7 @@ nstack_fw_init ()
if (NSTACK_MODULE_INIT == g_nStackInfo.fwInited)
{
+ g_nStackInfo.fwInited = NSTACK_MODULE_INITING;
nstack_log_init_app();
if (0 != nstack_stack_module_load())
diff --git a/src/nSocket/nstack/nstack.h b/src/nSocket/nstack/nstack.h
index 6d40a7b..1ec88f0 100644
--- a/src/nSocket/nstack/nstack.h
+++ b/src/nSocket/nstack/nstack.h
@@ -55,6 +55,7 @@ extern "C"{
typedef enum
{
NSTACK_MODULE_INIT,
+ NSTACK_MODULE_INITING,
NSTACK_MODULE_SUCCESS,
NSTACK_MODULE_FAIL
} nstack_module_state;
diff --git a/src/nSocket/nstack/nstack_module.h b/src/nSocket/nstack/nstack_module.h
index 70b838f..00d0343 100644
--- a/src/nSocket/nstack/nstack_module.h
+++ b/src/nSocket/nstack/nstack_module.h
@@ -46,7 +46,7 @@ extern "C"{
#define NSTACK_EP_FREE_NEED_REF 1 /*when epoll information free, need to wait that stack would not notify event */
#define NSTACK_EP_FREE_NONEED_REF 0
-#define MODULE_NAME_MAX 64
+#define MODULE_NAME_MAX 128
typedef struct __NSTACK_MODULE_KEYS
{
diff --git a/src/nSocket/nstack/nstack_socket.c b/src/nSocket/nstack/nstack_socket.c
index 8fe493a..59ab34e 100644
--- a/src/nSocket/nstack/nstack_socket.c
+++ b/src/nSocket/nstack/nstack_socket.c
@@ -150,7 +150,7 @@ nstack_socket (int domain, int itype, int protocol)
int selectmod = -1;
/*check whether module init finish or not */
- NSTACK_INIT_CHECK_RET (socket);
+ NSTACK_INIT_CHECK_RET (socket, domain, itype, protocol);
NSSOC_LOGINF ("(domain=%d, type=%d, protocol=%d) [Caller]", domain, itype,
protocol);
@@ -287,6 +287,8 @@ nstack_bind (int fd, const struct sockaddr *addr, socklen_t addrlen)
struct sockaddr_in *iaddr = NULL;
nstack_rd_key rdkey = { 0 };
+ NSTACK_INIT_CHECK_RET (bind, fd, addr, addrlen);
+
NSSOC_LOGINF ("(sockfd=%d, addr=%p, addrlen=%u) [Caller]", fd, addr,
addrlen);
@@ -452,6 +454,8 @@ nstack_listen (int fd, int backlog)
int tfd;
int func_called = 0;
+ NSTACK_INIT_CHECK_RET (listen, fd, backlog);
+
NSSOC_LOGINF ("(sockfd=%d, backlog=%d) [Caller]", fd, backlog);
if (fd < 0)
{
@@ -519,6 +523,8 @@ nstack_accept (int fd, struct sockaddr *addr, socklen_t * addr_len)
nstack_fd_Inf *accInf;
int ret = -1;
+ NSTACK_INIT_CHECK_RET (accept, fd, addr, addr_len);
+
NSSOC_LOGINF ("(sockfd=%d, addr=%p, addrlen=%p) [Caller]", fd, addr,
addr_len);
if (fd < 0)
@@ -672,6 +678,8 @@ nstack_accept4 (int fd, struct sockaddr *addr,
int ret = -1;
nstack_fd_Inf *accInf;
+ NSTACK_INIT_CHECK_RET (accept4, fd, addr, addr_len, flags);
+
NSSOC_LOGINF ("(sockfd=%d, addr=%p, addrlen=%p, flags=%d) [Caller]", fd,
addr, addr_len, flags);
if (fd < 0)
@@ -822,6 +830,8 @@ nstack_connect (int fd, const struct sockaddr *addr, socklen_t addrlen)
int selectmod = -1;
nstack_rd_key rdkey = { 0 };
+ NSTACK_INIT_CHECK_RET (connect, fd, addr, addrlen);
+
NSSOC_LOGINF ("(sockfd=%d, addr=%p, addrlen=%u) [Caller]", fd, addr,
addrlen);
@@ -947,6 +957,8 @@ nstack_shutdown (int fd, int how)
return -1;
}
+ NSTACK_INIT_CHECK_RET (shutdown, fd, how);
+
NSSOC_LOGINF ("(fd=%d, how=%d) [Caller]", fd, how);
NSTACK_FD_LINUX_CHECK (fd, shutdown, fdInf, (fd, how));
@@ -1058,6 +1070,8 @@ nstack_close (int fd)
nstack_fd_Inf *fdInf;
int ret = -1;
+ NSTACK_INIT_CHECK_RET (close, fd);
+
/*linux fd check */
if (!(fdInf = nstack_getValidInf (fd)))
{
@@ -1119,6 +1133,8 @@ nstack_send (int fd, const void *buf, size_t len, int flags)
nstack_fd_Inf *fdInf = NULL;
int size = -1;
+ NSTACK_INIT_CHECK_RET (send, fd, buf, len, flags);
+
NS_LOG_CTRL (LOG_CTRL_SEND, NSOCKET, "NSSOC", NSLOG_DBG,
"(sockfd=%d, buf=%p, len=%zu, flags=%d) [Caller]", fd, buf,
len, flags);
@@ -1152,6 +1168,8 @@ nstack_recv (int fd, void *buf, size_t len, int flags)
nstack_fd_Inf *fdInf = NULL;
int size = -1;
+ NSTACK_INIT_CHECK_RET (recv, fd, buf, len, flags);
+
NS_LOG_CTRL (LOG_CTRL_RECV, NSOCKET, "NSSOC", NSLOG_DBG,
"(sockfd=%d, buf=%p, len=%zu, flags=%d) [Caller]", fd, buf,
len, flags);
@@ -1185,6 +1203,8 @@ nstack_write (int fd, const void *buf, size_t count)
nstack_fd_Inf *fdInf = NULL;
int size = -1;
+ NSTACK_INIT_CHECK_RET (write, fd, buf, count);
+
NSTACK_FD_LINUX_CHECK (fd, write, fdInf, (fd, buf, count));
NS_LOG_CTRL (LOG_CTRL_WRITE, NSOCKET, "NSSOC", NSLOG_DBG,
@@ -1217,6 +1237,8 @@ nstack_read (int fd, void *buf, size_t count)
nstack_fd_Inf *fdInf = NULL;
int size = -1;
+ NSTACK_INIT_CHECK_RET (read, fd, buf, count);
+
NS_LOG_CTRL (LOG_CTRL_READ, NSOCKET, "NSSOC", NSLOG_DBG,
"(fd=%d, buf=%p, count=%zu) [Caller]", fd, buf, count);
@@ -1248,6 +1270,8 @@ nstack_writev (int fd, const struct iovec * iov, int iovcnt)
nstack_fd_Inf *fdInf = NULL;
int size = -1;
+ NSTACK_INIT_CHECK_RET (writev, fd, iov, iovcnt);
+
NS_LOG_CTRL (LOG_CTRL_WRITEV, NSOCKET, "NSSOC", NSLOG_DBG,
"(fd=%d, iov=%p, count=%d) [Caller]", fd, iov, iovcnt);
@@ -1280,6 +1304,8 @@ nstack_readv (int fd, const struct iovec * iov, int iovcnt)
nstack_fd_Inf *fdInf = NULL;
int size = -1;
+ NSTACK_INIT_CHECK_RET (readv, fd, iov, iovcnt);
+
NS_LOG_CTRL (LOG_CTRL_READV, NSOCKET, "NSSOC", NSLOG_DBG,
"(fd=%d, iov=%p, count=%d) [Caller]", fd, iov, iovcnt);
@@ -1318,6 +1344,8 @@ nstack_sendto (int fd, const void *buf, size_t len, int flags,
int retval = 0;
nstack_rd_key rdkey = { 0 };
+ NSTACK_INIT_CHECK_RET (sendto, fd, buf, len, flags, dest_addr,addrlen);
+
NSSOC_LOGDBG
("(sockfd=%d, buf=%p, len=%zu, flags=%d, dest_addr=%p, addrlen=%u) [Caller]",
fd, buf, len, flags, dest_addr, addrlen);
@@ -1400,6 +1428,8 @@ nstack_sendmsg (int fd, const struct msghdr * msg, int flags)
int retval = 0;
nstack_rd_key rdkey = { 0 };
+ NSTACK_INIT_CHECK_RET (sendmsg, fd, msg, flags);
+
NS_LOG_CTRL (LOG_CTRL_SENDMSG, NSOCKET, "NSSOC", NSLOG_DBG,
"(sockfd=%d, msg=%p, flags=%d) [Caller]", fd, msg, flags);
@@ -1482,6 +1512,8 @@ nstack_recvfrom (int fd, void *buf, size_t len, int flags,
nstack_fd_Inf *fdInf = NULL;
int size = -1;
+ NSTACK_INIT_CHECK_RET (recvfrom, fd, buf, len, flags, src_addr, addrlen);
+
NSSOC_LOGDBG
("(sockfd=%d, buf=%p, len=%zu, flags=%d, src_addr=%p, addrlen=%p) [Caller]",
fd, buf, len, flags, src_addr, addrlen);
@@ -1524,6 +1556,8 @@ nstack_recvmsg (int fd, struct msghdr * msg, int flags)
nstack_fd_Inf *fdInf = NULL;
int size = -1;
+ NSTACK_INIT_CHECK_RET (recvmsg, fd, msg, flags);
+
NS_LOG_CTRL (LOG_CTRL_RECVMSG, NSOCKET, "NSSOC", NSLOG_DBG,
"(sockfd=%d, msg=%p, flags=%d) [Caller]", fd, msg, flags);
@@ -1564,6 +1598,8 @@ nstack_getsockname (int fd, struct sockaddr *addr, socklen_t * addrlen)
int tfd = -1;
int ret = -1;
+ NSTACK_INIT_CHECK_RET (getsockname, fd, addr, addrlen);
+
NS_LOG_CTRL (LOG_CTRL_GETSOCKNAME, NSOCKET, "NSSOC", NSLOG_INF,
"(fd=%d, addr=%p, addrlen=%p) [Caller]", fd, addr, addrlen);
@@ -1634,6 +1670,8 @@ nstack_getpeername (int fd, struct sockaddr *addr, socklen_t * addrlen)
int tfd;
int ret = -1;
+ NSTACK_INIT_CHECK_RET (getpeername, fd, addr, addrlen);
+
NS_LOG_CTRL (LOG_CTRL_GETPEERNAME, NSOCKET, "NSSOC", NSLOG_INF,
"(fd=%d, addr=%p, addrlen=%p) [Caller]", fd, addr, addrlen);
@@ -1766,6 +1804,8 @@ nstack_getsockopt (int fd, int level, int optname, void *optval,
int ret = -1;
nstack_socket_ops *ops;
+ NSTACK_INIT_CHECK_RET (getsockopt, fd, level, optname, optval, optlen);
+
NS_LOG_CTRL (LOG_CTRL_GETSOCKOPT, NSOCKET, "NSSOC", NSLOG_INF,
"(fd=%d, level=%d, optname=%d, optval=%p, optlen=%p) [Caller]",
fd, level, optname, optval, optlen);
@@ -1850,6 +1890,8 @@ nstack_setsockopt (int fd, int level, int optname, const void *optval,
int lerror = 0;
int flag = 0;
+ NSTACK_INIT_CHECK_RET (setsockopt, fd, level, optname, optval, optlen);
+
NSSOC_LOGINF
("(fd=%d, level=%d, optname=%d, optval=%p, optlen=%u) [Caller]", fd,
level, optname, optval, optlen);
@@ -1940,6 +1982,8 @@ nstack_ioctl (int fd, unsigned long request, unsigned long argp)
int lerror = 0;
int flag = 0;
+ NSTACK_INIT_CHECK_RET (ioctl, fd, request, argp);
+
NSSOC_LOGINF ("(fd=%d, request=%lu) [Caller]", fd, request);
if (fd < 0)
{
@@ -2019,6 +2063,8 @@ nstack_fcntl (int fd, int cmd, unsigned long argp)
int lerror = 0;
int flag = 0;
+ NSTACK_INIT_CHECK_RET (fcntl, fd, cmd, argp);
+
NSSOC_LOGINF ("(fd=%d, cmd=%d) [Caller]", fd, cmd);
if (fd < 0)
{
@@ -2142,6 +2188,8 @@ nstack_select (int nfds, fd_set * readfds, fd_set * writefds,
int i;
+ NSTACK_INIT_CHECK_RET (select, nfds, readfds, writefds, exceptfds, timeout);
+
if ((nfds > __FD_SETSIZE) || (nfds < 0)
|| ((timeout) && ((timeout->tv_sec < 0) || (timeout->tv_usec < 0))))
{
@@ -2319,6 +2367,8 @@ nstack_epoll_ctl (int epfd, int op, int fd, struct epoll_event *event)
struct epoll_event ep_event = { 0 };
struct epitem *epi = NULL;
+ NSTACK_INIT_CHECK_RET (epoll_ctl, epfd, op, fd, event);
+
NSSOC_LOGINF ("(epfd=%d, op=%d, fd=%d, event=%p) [Caller]", epfd, op, fd,
event);
if (event)
@@ -2450,7 +2500,7 @@ nstack_epoll_create (int size)
nstack_socket_ops *ops;
int ret = 0;
- NSTACK_INIT_CHECK_RET (epoll_create);
+ NSTACK_INIT_CHECK_RET (epoll_create, size);
NSSOC_LOGINF ("(size=%d) [Caller]", size);
@@ -2580,6 +2630,8 @@ nstack_epoll_wait (int epfd, struct epoll_event *events, int maxevents,
int evt = 0;
int ret = 0;
+ NSTACK_INIT_CHECK_RET (epoll_wait, epfd, events, maxevents, timeout);
+
NSTACK_FD_LINUX_CHECK (epfd, epoll_wait, fdInf,
(epfd, events, maxevents, timeout));
@@ -2706,6 +2758,8 @@ nstack_fork (void)
pid_t pid;
pid_t parent_pid = sys_get_hostpid_from_file (getpid ());
+ NSTACK_INIT_CHECK_RET (fork);
+
common_mem_rwlock_write_lock (get_fork_lock ());
if (NSTACK_MODULE_SUCCESS == g_nStackInfo.fwInited)
{
diff --git a/src/nSocket/nstack/nstack_socket.h b/src/nSocket/nstack/nstack_socket.h
index 3bc4a10..3bb7843 100644
--- a/src/nSocket/nstack/nstack_socket.h
+++ b/src/nSocket/nstack/nstack_socket.h
@@ -190,12 +190,18 @@ UNLOCK_CLOSE (nstack_fd_local_lock_info_t * local_lock)
#define UNLOCK_FOR_EP(local_lock) UNLOCK_CLOSE(local_lock)
-#define NSTACK_INIT_CHECK_RET(fun) \
- if (nstack_fw_init()) { \
- NSSOC_LOGERR("nstack %s call, but initial not finished yet [return]", #fun); \
- nstack_set_errno(ENOSYS); \
- return -1; \
- }
+#define NSTACK_INIT_CHECK_RET(fun, args...) \
+ do { \
+ if (NSTACK_MODULE_INITING == g_nStackInfo.fwInited) { \
+ NSSOC_LOGINF ("call kernel func %s", #fun); \
+ return nsfw_base_##fun(args); \
+ } \
+ if (nstack_fw_init()) { \
+ NSSOC_LOGERR("nstack %s call, but initial not finished yet [return]", #fun); \
+ nstack_set_errno(ENOSYS); \
+ return -1; \
+ } \
+ }while(0)
#define NSTACK_MODULE_ERROR_SET(Index)
diff --git a/src/nSocket/nstack_rd/nstack_rd_proto.c b/src/nSocket/nstack_rd/nstack_rd_proto.c
index 16f4e1f..81246c0 100644
--- a/src/nSocket/nstack_rd/nstack_rd_proto.c
+++ b/src/nSocket/nstack_rd/nstack_rd_proto.c
@@ -23,6 +23,7 @@
#include "nstack_rd_proto.h"
#include "nstack_log.h"
#include "nstack_securec.h"
+#include "common_mem_common.h"
/*copy rd data*/
int