1.change inline usage in code and mvec in makefile to adapt to GCC version 14/5214/4 cherry
authorZhimin <zhimin.yuan@intel.com>
Mon, 12 Oct 2020 09:03:50 +0000 (09:03 +0000)
committerzhe huang <zhehuang@research.att.com>
Fri, 11 Dec 2020 03:04:38 +0000 (03:04 +0000)
in Yacto
2. refine the doc to include each libs quick build command

Signed-off-by: Zhimin<zhimin.yuan@intel.com>
Change-Id: Id1f3f9e5b7a40239e8905db130995090befd462d

14 files changed:
Dockerfile
docs/build_prerequisite.rst
docs/run_l1.rst
fapi_5g/build/makefile
fapi_5g/source/api/fapi2mac/nr5g_fapi_fapi2mac_api.c
fapi_5g/source/framework/wls/fapi2mac/nr5g_fapi_fapi2mac_wls.c
fapi_5g/source/framework/wls/fapi2mac/nr5g_fapi_fapi2mac_wls.h
fapi_5g/source/framework/wls/fapi2phy/nr5g_fapi_fapi2phy_wls.c
fapi_5g/source/framework/wls/fapi2phy/nr5g_fapi_fapi2phy_wls.h
fapi_5g/source/framework/wls/lib/nr5g_fapi_wls.h
fapi_5g/source/include/nr5g_fapi_framework.h
fapi_5g/source/include/nr5g_fapi_memory.h
fapi_5g/source/include/nr5g_fapi_stats.h
fapi_5g/source/utils/nr5g_fapi_memory.c

index 784a3f4..2688cc6 100644 (file)
@@ -26,31 +26,29 @@ ENV BUILD_DIR /opt/o-du/phy
 ENV XRAN_DIR $BUILD_DIR/fhi_lib
 
 ###Install required libs
-RUN yum update -y && \
-    yum install -y libhugetlbfs-utils libhugetlbfs-devel libhugetlbfs numactl-devel ethtool gcc make module-init-tools kmod patch xz iproute pciutils python vim cmake unzip nano mc iputils-ping libaio libaio-devel net-tools  wget zip
+RUN yum install -y libhugetlbfs-utils libhugetlbfs-devel libhugetlbfs numactl-devel ethtool gcc make module-init-tools kmod patch xz iproute pciutils python vim cmake unzip nano mc iputils-ping libaio libaio-devel net-tools  wget zip
 
 ###Install some libs to compile DPDK
 RUN yum groupinstall -y "Development Tools"
 RUN yum install -y  ncurses-devel hmaccalc zlib-devel binutils-devel elfutils-libelf-devel bc libstdc++-4.8.5-28.el7_5.1.x86_64 gcc-c++ libstdc++-devel-4.8.5-28.el7_5.1.x86_64 autoconf-2.69-11.el7.noarch
 
 ###googletest is required for XRAN unittests build and run
-RUN wget https://github.com/google/googletest/archive/v1.8.x.zip && \
-    cd /opt && unzip $BUILD_DIR/v1.8.x.zip
-ENV GTEST_ROOT /opt/googletest-1.8.x/googletest
-ENV GTEST_DIR /opt/googletest-1.8.x/googletest
+RUN wget https://github.com/google/googletest/archive/release-1.7.0.tar.gz && \
+    cd /opt && tar -zxvf $BUILD_DIR/release-1.7.0.tar.gz
+ENV GTEST_ROOT /opt/googletest-release-1.7.0
+ENV GTEST_DIR /opt/googletest-release-1.7.0
 RUN cd $GTEST_DIR && \
     g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} -pthread -c ${GTEST_DIR}/src/gtest-all.cc && \
-    ar -rv libgtest.a gtest-all.o
-
+    ar -rv libgtest.a gtest-all.o && cd build-aux/ && cmake $GTEST_DIR && make && cd .. && ln -s build-aux/libgtest_main.a libgtest_main.a
 
 ###Before install ISS, please go to Intel site to get a free license: https://software.intel.com/en-us/system-studio/choose-download
 COPY $icc_license_file $BUILD_DIR/license.lic
 
 ####Download Intel System Studio from Intel website and install ICC
-RUN wget https://registrationcenter-download.intel.com/akdlm/irc_nas/16242/system_studio_2020_ultimate_edition_offline.tar.gz && \
+RUN wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/16789/system_studio_2020_u2_ultimate_edition_offline.tar.gz && \
     cd /opt && mkdir intel && cp $BUILD_DIR/license.lic intel/license.lic && \
-    tar -zxvf $BUILD_DIR/system_studio_2020_ultimate_edition_offline.tar.gz && \
-    cd system_studio_2020_ultimate_edition_offline/ && \
+    tar -zxvf $BUILD_DIR/system_studio_2020_u2_ultimate_edition_offline.tar.gz && \
+    cd system_studio_2020_u2_ultimate_edition_offline/ && \
     sed -i "s/ACCEPT_EULA.*/ACCEPT_EULA=accept/" silent.cfg && \
     sed -i "s/PSET_INSTALL_DIR.*/PSET_INSTALL_DIR=\/opt\/intel/" silent.cfg && \
     sed -i "s/.*ACTIVATION_LICENSE_FILE.*/ACTIVATION_LICENSE_FILE=\/opt\/intel\/license.lic/" silent.cfg && \
@@ -63,10 +61,10 @@ ENV PATH /opt/intel/system_studio_2020/bin/:$PATH
 
 ####Download and build DPDK
 ENV RTE_TARGET x86_64-native-linuxapp-icc
-ENV RTE_SDK /opt/o-du/dpdk-18.08
-RUN wget http://fast.dpdk.org/rel/dpdk-18.08.tar.xz && \
-    tar -xf dpdk-18.08.tar.xz && \
-    mv dpdk-18.08 $RTE_SDK && \
+ENV RTE_SDK /opt/o-du/dpdk-19.11
+RUN wget http://fast.dpdk.org/rel/dpdk-19.11.tar.xz && \
+    tar -xf dpdk-19.11.tar.xz && \
+    mv dpdk-19.11 $RTE_SDK && \
     cd $RTE_SDK && \
     make config T=$RTE_TARGET O=$RTE_TARGET && \
     cd $RTE_SDK/$RTE_TARGET && \
@@ -77,24 +75,67 @@ RUN wget http://fast.dpdk.org/rel/dpdk-18.08.tar.xz && \
 ####Install octave. Issue when downloading octave. And the octave will take 500MB space.
 RUN yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -y && \
     yum install octave -y
+####Install expect
+RUN yum install -y expect
 
 ###Copy XRAN source code into docker image
 COPY fhi_lib $BUILD_DIR/fhi_lib
 COPY misc $BUILD_DIR/misc
 
+ENV WIRELESS_SDK_TARGET_ISA avx512
+
+####Download and Build FlexRAN FEC SDK, not needed for run L1
+#RUN cd $BUILD_DIR/ && wget https://software.intel.com/sites/default/files/managed/23/b8/FlexRAN-FEC-SDK-19-04.tar.gz && tar -zxvf #FlexRAN-FEC-SDK-19-04.tar.gz && misc/extract-flexran-fec-sdk.ex && cd FlexRAN-FEC-SDK-19-04/sdk && source #/opt/intel/system_studio_2019/bin/iccvars.sh intel64 && ./create-makefiles-linux.sh && cd build-avx512-icc && #make && make install
+
 ####Build XRAN lib, unittests, sample app
-RUN cd $BUILD_DIR/fhi_lib/ && ./build.sh xclean && ./build.sh && cd app && octave gen_test.m
+RUN cd $BUILD_DIR/fhi_lib/ && export XRAN_LIB_SO=1 && ./build.sh xclean && ./build.sh && cd app && octave gen_test.m
+
+####Build wls lib
+COPY wls_lib $BUILD_DIR/wls_lib
+RUN cd $BUILD_DIR/wls_lib && ./build.sh xclean && ./build.sh
+ENV DIR_WIRELESS_WLS $BUILD_DIR/wls_lib
+
+####Clone FlexRAN repo from Github
+RUN cd /opt/o-du && git clone https://github.com/intel/FlexRAN.git
+ENV DIR_WIRELESS=/opt/o-du/FlexRAN/l1/
+
+####Build 5g fapi
+COPY fapi_5g $BUILD_DIR/fapi_5g
+ENV DIR_WIRELESS_ORAN_5G_FAPI $BUILD_DIR/fapi_5g
+ENV DEBUG_MODE true
+RUN cd $BUILD_DIR/fapi_5g/build && ./build.sh xclean && ./build.sh
+
+####Copy other folders/files
+COPY setupenv.sh $BUILD_DIR
 
 ####Unset network proxy
 RUN unset http_proxy https_prox ftp_proxy no_proxy
 
+####Copy built binaries/libraries into docker images
 FROM centos:centos7.7.1908
-ENV TARGET_DIR /opt/o-du/phy
-COPY --from=builder /opt/o-du/phy/fhi_lib $TARGET_DIR/fhi_lib
-COPY --from=builder /opt/o-du/phy/misc $TARGET_DIR/misc
-COPY --from=builder  /usr/lib64/libnuma* /usr/lib64/
-ENV XRAN_DIR $TARGET_DIR/fhi_lib
-WORKDIR $TARGET_DIR/fhi_lib
-
-LABEL description="ORAN Fronthaul Sample Application"
+ENV TARGET_DIR /opt/o-du/
+COPY --from=builder $TARGET_DIR/phy $TARGET_DIR/phy
+COPY --from=builder $TARGET_DIR/FlexRAN $TARGET_DIR/FlexRAN
+
+###Install required libs
+RUN yum install -y libhugetlbfs-utils libhugetlbfs-devel libhugetlbfs numactl-devel ethtool gcc make module-init-tools kmod patch xz iproute pciutils python vim cmake unzip nano mc iputils-ping libaio libaio-devel net-tools  wget zip
+
+###Install some libs to compile DPDK
+RUN yum groupinstall -y "Development Tools"
+RUN yum install -y  ncurses-devel hmaccalc zlib-devel binutils-devel elfutils-libelf-devel bc libstdc++-4.8.5-28.el7_5.1.x86_64 gcc-c++ libstdc++-devel-4.8.5-28.el7_5.1.x86_64 autoconf-2.69-11.el7.noarch
+
+###googletest is required for XRAN unittests build and run
+RUN wget https://github.com/google/googletest/archive/release-1.7.0.tar.gz && \
+    cd /opt && tar -zxvf $BUILD_DIR/release-1.7.0.tar.gz
+ENV GTEST_ROOT /opt/googletest-release-1.7.0
+ENV GTEST_DIR /opt/googletest-release-1.7.0
+RUN cd $GTEST_DIR && \
+    g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} -pthread -c ${GTEST_DIR}/src/gtest-all.cc && \
+    ar -rv libgtest.a gtest-all.o && cd build-aux/ && cmake $GTEST_DIR && make && cd .. && ln -s build-aux/libgtest_main.a libgtest_main.a
+
+RUN yum install -y expect
+
+WORKDIR $TARGET_DIR
+
+LABEL description="ORAN O-DU PHY Applications"
 
index a4f018f..411bb55 100644 (file)
@@ -1,4 +1,4 @@
-..    Copyright (c) 2019 Intel
+..    Copyright (c) 2019 Intel
 ..
 ..  Licensed under the Apache License, Version 2.0 (the "License");
 ..  you may not use this file except in compliance with the License.
@@ -77,15 +77,16 @@ Download and Build DPDK
 
    - build DPDK
       build DPDK::
-
+        Set your ICC installation path to /usertools/dpdk-setup.sh, DEFAULT_PATH="your ICC installation path"/bin/iccvars.sh, then run it to build DPDK with below option. 
         #./usertools/dpdk-setup.sh
         select [39] x86_64-native-linuxapp-icc
         exit   [62] Exit Script
-
-   - set DPDK path
+        please pay attention, the number 39 might change in your setup, you need choose accordingly to option 'x86_64-native-linuxapp-icc'   
+  
+    - set DPDK path
        DPDK path is needed during build and run lib/app::
 
-        #export RTE_SDK=Intallation_DIR/dpdk-19.11
+        #export RTE_SDK=Installation_DIR/dpdk-19.11
         #export DESTDIR=Installation_DIR/dpdk-19.11
 
 
index 49157ef..88e791f 100644 (file)
@@ -1,4 +1,4 @@
-..    Copyright (c) 2019 Intel
+..    Copyright (c) 2019 Intel
 ..
 ..  Licensed under the Apache License, Version 2.0 (the "License");
 ..  you may not use this file except in compliance with the License.
 
    <br />
 
-Run L1
-======
+Run L1 and Testmac
+===================
 
 .. contents::
     :depth: 3
     :local:
 
+Before you run L1, please make sure all the FH, WLS, and FAPI TM lib was built according to above relative chapters for each lib, or you can refer below quick build command to create these libs.
+
+Build FH
+------------
+     under folder phy/fhi_lib::
+
+     #./build.sh
+
+Build WLS
+-------------
+     under folder phy/wls_lib::
+     #./build.sh
+
+Build FAPI TM
+--------------
+     under folder phy/fapi_5g/build::
+     #./build.sh
+
 For the Bronze release, the L1 only has a binary image as well as the testmac which is an L2 test application, details of the L1 and testmac application are in https://github.com/intel/FlexRAN
 
 Download L1 and testmac
index 7eae171..9797590 100644 (file)
@@ -109,8 +109,8 @@ CFLAGS := $(CFLAGS) -Werror
 endif
 
 #RTE_LIBS := -L$(RTE_SDK)/$(RTE_TARGET)/lib -Wl,--whole-archive -Wl,-lrte_distributor -Wl,-lrte_kni -Wl,-lrte_pipeline -Wl,-lrte_table -Wl,-lrte_port -Wl,-lrte_timer -Wl,-lrte_hash -Wl,-lrte_lpm -Wl,-lrte_power -Wl,-lrte_acl -Wl,-lrte_meter -Wl,-lrte_sched -Wl,-lm -Wl,-lrt -Wl,--start-group -Wl,-lrte_kvargs -Wl,-lrte_mbuf -Wl,-lrte_ip_frag -Wl,-lrte_ethdev -Wl,-lrte_mempool -Wl,-lrte_mempool_ring -Wl,-lrte_ring -Wl,-lrte_bus_pci -Wl,-lrte_bus_vdev -Wl,-lrte_pci -Wl,-lrte_net -Wl,-lrte_eal -Wl,-lrte_cmdline -Wl,-lrte_cfgfile -Wl,-lrte_pmd_bond -Wl,-lrte_pmd_vmxnet3_uio -Wl,-lrte_pmd_i40e -Wl,-lrte_pmd_ixgbe -Wl,-lrte_pmd_e1000 -Wl,-lrte_pmd_ring -Wl,-lrt -Wl,-lm -Wl,-ldl -Wl,--end-group -Wl,--no-whole-archive
-RTE_LIBS := -L$(RTE_SDK)/$(RTE_TARGET)/lib -Wl,--whole-archive -Wl,-lrte_distributor -Wl,-lrte_kni -Wl,-lrte_pipeline -Wl,-lrte_table -Wl,-lrte_timer -Wl,-lrte_hash -Wl,-lrte_lpm -Wl,-lrte_power -Wl,-lrte_acl -Wl,-lrte_meter -Wl,-lrte_sched -Wl,-lm -Wl,-lrt -Wl,--start-group -Wl,-lrte_kvargs -Wl,-lrte_mbuf -Wl,-lrte_ip_frag -Wl,-lrte_ethdev -Wl,-lrte_mempool -Wl,-lrte_mempool_ring -Wl,-lrte_ring -Wl,-lrte_bus_pci -Wl,-lrte_bus_vdev -Wl,-lrte_pci -Wl,-lrte_net -Wl,-lrte_eal -Wl,-lrte_cmdline -Wl,-lrte_cfgfile -Wl,-lrte_pmd_bond -Wl,-lrte_pmd_vmxnet3_uio -Wl,-lrte_pmd_i40e -Wl,-lrte_pmd_ixgbe -Wl,-lrte_pmd_e1000 -Wl,-lrte_pmd_ring -Wl, -lrte_cryptodev -Wl,-lrt -Wl,-lm -Wl,-ldl -Wl,--end-group -Wl,--no-whole-archive
-LDFLAGS := -g -Wl,-lrt -Wl,-lpthread -Wl,-lhugetlbfs -Wl,-lm -Wl,-lnuma -L $(WLSDIR) -lwls
+RTE_LIBS := -L$(RTE_SDK)/$(RTE_TARGET)/lib -Wl,--whole-archive -Wl,-lrte_distributor -Wl,-lrte_kni -Wl,-lrte_pipeline -Wl,-lrte_table -Wl,-lrte_timer -Wl,-lrte_hash -Wl,-lrte_lpm -Wl,-lrte_power -Wl,-lrte_acl -Wl,-lrte_meter -Wl,-lrte_sched -Wl,-lmvec -Wl,-lm -Wl,-lrt -Wl,--start-group -Wl,-lrte_kvargs -Wl,-lrte_mbuf -Wl,-lrte_ip_frag -Wl,-lrte_ethdev -Wl,-lrte_mempool -Wl,-lrte_mempool_ring -Wl,-lrte_ring -Wl,-lrte_bus_pci -Wl,-lrte_bus_vdev -Wl,-lrte_pci -Wl,-lrte_net -Wl,-lrte_eal -Wl,-lrte_cmdline -Wl,-lrte_cfgfile -Wl,-lrte_pmd_bond -Wl,-lrte_pmd_vmxnet3_uio -Wl,-lrte_pmd_i40e -Wl,-lrte_pmd_ixgbe -Wl,-lrte_pmd_e1000 -Wl,-lrte_pmd_ring -Wl, -lrte_cryptodev -Wl,-lrt -Wl,-ldl -Wl,--end-group -Wl,--no-whole-archive
+LDFLAGS := -g -Wl,-lrt -Wl,-lpthread -Wl,-lhugetlbfs -Wl,-lmvec -Wl,-lm -Wl,-lnuma -L $(WLSDIR) -lwls
 
 LINUX_ORAN_5G_FAPI_SRC := \
        $(SRCDIR)/nr5g_fapi.c \
index ca332a2..9af8822 100644 (file)
@@ -43,7 +43,7 @@ static nr5g_fapi_fapi2mac_queue_t fapi2mac_q[FAPI_MAX_PHY_INSTANCES];
  *
 **/
 //------------------------------------------------------------------------------
-inline p_nr5g_fapi_fapi2mac_queue_t nr5g_fapi_fapi2mac_queue(
+static inline p_nr5g_fapi_fapi2mac_queue_t nr5g_fapi_fapi2mac_queue(
     uint8_t phy_id)
 {
     return &fapi2mac_q[phy_id];
index f2277e7..cba45fc 100644 (file)
@@ -197,7 +197,7 @@ uint8_t nr5g_fapi_fapi2mac_wls_ready(
  *
 **/
 //------------------------------------------------------------------------------
-uint8_t nr5g_fapi_fapi2mac_wls_wait(
+static inline uint8_t nr5g_fapi_fapi2mac_wls_wait(
     )
 {
     int ret = SUCCESS;
@@ -269,7 +269,7 @@ uint64_t *nr5g_fapi_fapi2mac_wls_get(
  *
 **/
 //------------------------------------------------------------------------------
-inline uint8_t nr5g_fapi_fapi2mac_wls_put(
+uint8_t nr5g_fapi_fapi2mac_wls_put(
     p_fapi_api_queue_elem_t p_msg,
     uint32_t msg_size,
     uint16_t msg_type,
index c91226d..cd63248 100644 (file)
@@ -39,8 +39,6 @@ p_fapi_api_queue_elem_t nr5g_fapi_fapi2mac_wls_recv(
 
 uint8_t nr5g_fapi_fapi2mac_wls_ready(
     );
-uint8_t nr5g_fapi_fapi2mac_wls_wait(
-    );
 
 void *nr5g_fapi_fapi2mac_wls_alloc_buffer(
     );
index 37e78cc..92662e1 100644 (file)
@@ -91,7 +91,7 @@ static inline WLS_HANDLE nr5g_fapi_fapi2phy_wls_instance(
  *
 **/
 //----------------------------------------------------------------------------------
-inline uint64_t *nr5g_fapi_fapi2phy_wls_get(
+static inline uint64_t *nr5g_fapi_fapi2phy_wls_get(
     uint32_t * msg_size,
     uint16_t * msg_type,
     uint16_t * flags)
@@ -125,7 +125,7 @@ inline uint64_t *nr5g_fapi_fapi2phy_wls_get(
  *
 **/
 //----------------------------------------------------------------------------------
-inline uint8_t nr5g_fapi_fapi2phy_wls_put(
+static inline uint8_t nr5g_fapi_fapi2phy_wls_put(
     uint64_t p_msg,
     uint32_t msg_size,
     uint16_t msg_type,
@@ -154,7 +154,7 @@ inline uint8_t nr5g_fapi_fapi2phy_wls_put(
  *
 **/
 //----------------------------------------------------------------------------------
-inline uint8_t nr5g_fapi_fapi2phy_wls_wait(
+static inline uint8_t nr5g_fapi_fapi2phy_wls_wait(
     )
 {
     int ret = SUCCESS;
index a82ab52..6a57368 100644 (file)
@@ -33,8 +33,6 @@ uint8_t nr5g_fapi_fapi2phy_wls_send(
     void *data);
 PMAC2PHY_QUEUE_EL nr5g_fapi_fapi2phy_wls_recv(
     );
-inline uint8_t nr5g_fapi_fapi2phy_wls_wait(
-    );
 void wls_fapi_add_send_apis_to_free(
     PMAC2PHY_QUEUE_EL pListElem,
     uint32_t idx);
index ed7bde0..e98455b 100644 (file)
@@ -92,11 +92,11 @@ typedef struct _nr5g_fapi_wls_context {
 
 extern nr5g_fapi_wls_context_t g_wls_ctx;
 
-inline p_nr5g_fapi_wls_context_t nr5g_fapi_wls_context(
+p_nr5g_fapi_wls_context_t nr5g_fapi_wls_context(
     );
-inline uint8_t nr5g_fapi_fapi2phy_wls_ready(
+uint8_t nr5g_fapi_fapi2phy_wls_ready(
     );
-inline uint8_t nr5g_fapi_fapi2mac_wls_ready(
+uint8_t nr5g_fapi_fapi2mac_wls_ready(
     );
 uint8_t nr5g_fapi_wls_init(
     );
index 423b04d..c33a28b 100644 (file)
@@ -196,7 +196,7 @@ typedef struct _nr5g_fapi_phy_context {
 *p_nr5g_fapi_phy_ctx_t;
 
 // Function Declarations
-inline p_nr5g_fapi_phy_ctx_t nr5g_fapi_get_nr5g_fapi_phy_ctx(
+p_nr5g_fapi_phy_ctx_t nr5g_fapi_get_nr5g_fapi_phy_ctx(
     );
 uint8_t nr5g_fapi_framework_init(
     );
index 0b877df..2d5713c 100644 (file)
 #define NR5G_FAPI_MEMSET(s, x, c, n) nr5g_fapi_memset_bound_check(s, x, c, n)
 #define NR5G_FAPI_STRCPY(d, x, s, n) nr5g_fapi_strcpy_bound_check(d, x, s, n)
 
-inline uint8_t nr5g_fapi_memcpy_bound_check(
+uint8_t nr5g_fapi_memcpy_bound_check(
     void *d,
     size_t x,
     const void *s,
     size_t n);
-inline uint8_t nr5g_fapi_memset_bound_check(
+uint8_t nr5g_fapi_memset_bound_check(
     void *s,
     size_t x,
     const int32_t c,
     size_t n);
-inline uint8_t nr5g_fapi_strcpy_bound_check(
+uint8_t nr5g_fapi_strcpy_bound_check(
     char *d,
     size_t x,
     const char *s,
index 41e0516..471c6f8 100644 (file)
@@ -32,9 +32,9 @@
 
 void nr5g_fapi_print_phy_instance_stats(
     p_nr5g_fapi_phy_instance_t p_phy_instance);
-inline int nr5g_fapi_check_for_file_link(
+int nr5g_fapi_check_for_file_link(
     char *fname);
-inline int nr5g_fapi_change_file_permission(
+int nr5g_fapi_change_file_permission(
     int fd,
     mode_t mode);
 
index fd14581..92815fc 100644 (file)
@@ -26,7 +26,7 @@
 #include <string.h>
 #include "nr5g_fapi_wls.h"
 
-inline uint8_t nr5g_fapi_memcpy_bound_check(
+uint8_t nr5g_fapi_memcpy_bound_check(
     void *d,
     size_t x,
     const void *s,
@@ -61,7 +61,7 @@ inline uint8_t nr5g_fapi_memcpy_bound_check(
     return SUCCESS;
 }
 
-inline uint8_t nr5g_fapi_memset_bound_check(
+uint8_t nr5g_fapi_memset_bound_check(
     void *s,
     size_t x,
     int32_t c,
@@ -78,7 +78,7 @@ inline uint8_t nr5g_fapi_memset_bound_check(
     return SUCCESS;
 }
 
-inline uint8_t nr5g_fapi_strcpy_bound_check(
+uint8_t nr5g_fapi_strcpy_bound_check(
     char *d,
     size_t x,
     const char *s,