summaryrefslogtreecommitdiffstats
path: root/src/framework/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/framework/common')
-rw-r--r--src/framework/common/base/include/common/common_func.h115
-rw-r--r--src/framework/common/base/include/common/common_mem_api.h143
-rw-r--r--src/framework/common/base/include/common/common_mem_base_type.h85
-rw-r--r--src/framework/common/base/include/common/common_mem_buf.h78
-rw-r--r--src/framework/common/base/include/common/common_mem_common.h25
-rw-r--r--src/framework/common/base/include/common/common_mem_malloc.h25
-rw-r--r--src/framework/common/base/include/common/common_mem_mbuf.h40
-rw-r--r--src/framework/common/base/include/common/common_mem_mempool.h25
-rw-r--r--src/framework/common/base/include/common/common_mem_memzone.h25
-rw-r--r--src/framework/common/base/include/common/common_mem_pal.h30
-rw-r--r--src/framework/common/base/include/common/common_mem_pal_memconfig.h26
-rw-r--r--src/framework/common/base/include/common/common_mem_spinlock.h40
-rw-r--r--src/framework/common/base/include/common/common_sys_config.h46
-rw-r--r--src/framework/common/base/include/common/generic/common_mem_rwlock.h25
-rw-r--r--src/framework/common/base/include/common_pal_bitwide_adjust.h202
-rw-r--r--src/framework/common/base/include/nsfw_base_linux_api.h58
-rw-r--r--src/framework/common/base/liblinuxapi/base_linux_api_declare.h72
-rw-r--r--src/framework/common/base/liblinuxapi/nsfw_base_linux_api.c428
-rw-r--r--src/framework/common/base/liblinuxapi/nsfw_lock_file.c169
-rw-r--r--src/framework/common/data_struct/eprb_tree.c546
-rw-r--r--src/framework/common/data_struct/list.c134
-rw-r--r--src/framework/common/data_struct/pidinfo.c104
-rw-r--r--src/framework/common/data_struct/sha256.c383
-rw-r--r--src/framework/common/include/arch/x86/dmm_atomic.h21
-rw-r--r--src/framework/common/include/arch/x86/dmm_barrier.h21
-rw-r--r--src/framework/common/include/arch/x86/dmm_pause.h30
-rw-r--r--src/framework/common/include/arch/x86/dmm_rwlock.h21
-rw-r--r--src/framework/common/include/arch/x86/dmm_spinlock.h21
-rw-r--r--src/framework/common/include/compile_config.h30
-rw-r--r--src/framework/common/include/compiling_check.h106
-rw-r--r--src/framework/common/include/dmm_fs.h32
-rw-r--r--src/framework/common/include/ephlist.h199
-rw-r--r--src/framework/common/include/eprb_tree.h84
-rw-r--r--src/framework/common/include/generic/dmm_atomic.h177
-rw-r--r--src/framework/common/include/generic/dmm_barrier.h25
-rw-r--r--src/framework/common/include/generic/dmm_pause.h30
-rw-r--r--src/framework/common/include/generic/dmm_rwlock.h76
-rw-r--r--src/framework/common/include/generic/dmm_spinlock.h53
-rw-r--r--src/framework/common/include/list.h181
-rw-r--r--src/framework/common/include/pidinfo.h48
-rw-r--r--src/framework/common/include/sha256.h94
-rw-r--r--src/framework/common/include/types.h93
-rw-r--r--src/framework/common/mem_mgr/include/nsfw_mem_desc.h172
-rw-r--r--src/framework/common/mem_mgr/include/nsfw_ring_data.h95
-rw-r--r--src/framework/common/mem_mgr/include/nsfw_ring_fun.h110
-rw-r--r--src/framework/common/mem_mgr/nsfw_mem_api.c879
-rw-r--r--src/framework/common/mem_mgr/nsfw_mem_construct.c21
-rw-r--r--src/framework/common/mem_mgr/nsfw_mem_desc.c92
-rw-r--r--src/framework/common/mem_mgr/nsfw_mem_stat.c292
-rw-r--r--src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_mdesc.c47
-rw-r--r--src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_mdesc.h22
-rw-r--r--src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_mng.c544
-rw-r--r--src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_mng.h70
-rw-r--r--src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_ring.c437
-rw-r--r--src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_ring.h37
-rw-r--r--src/framework/common/mem_mgr/nsfw_res_mgr.c429
-rw-r--r--src/framework/common/mem_mgr/nsfw_shmem/nsfw_rshmem_mng.c987
-rw-r--r--src/framework/common/mem_mgr/nsfw_shmem/nsfw_rshmem_mng.h51
-rw-r--r--src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_mdesc.c47
-rw-r--r--src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_mdesc.h22
-rw-r--r--src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_mng.c814
-rw-r--r--src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_mng.h133
-rw-r--r--src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_ring.c839
-rw-r--r--src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_ring.h60
-rw-r--r--src/framework/common/pid_common.c167
65 files changed, 618 insertions, 9915 deletions
diff --git a/src/framework/common/base/include/common/common_func.h b/src/framework/common/base/include/common/common_func.h
deleted file mode 100644
index 2b84b7a..0000000
--- a/src/framework/common/base/include/common/common_func.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _RTE_COMM_FUNC_H_
-#define _RTE_COMM_FUNC_H_
-
-#ifdef HAL_LIB
-
-#else
-
-#define common_mem_rwlock_t rte_rwlock_t
-#define common_mem_spinlock_t rte_spinlock_t
- //typedef rte_rwlock_t common_mem_rwlock_t;
-
-#define nsfw_write_lock(plock) rte_rwlock_write_lock(plock)
-#define nsfw_write_unlock(plock) rte_rwlock_write_unlock(plock)
-#define nsfw_read_lock(plock) rte_rwlock_read_lock(plock)
-#define nsfw_read_unlock(plock) rte_rwlock_read_unlock(plock)
-
-#define common_mem_align32pow2 rte_align32pow2
-
-#define common_mem_atomic32_cmpset rte_atomic32_cmpset
-#define common_mem_pause rte_pause
-
-#define COMMON_MEM_MAX_MEMZONE RTE_MAX_MEMZONE
-
-#define common_mem_atomic32_t rte_atomic32_t
-
-#define common_mem_memseg rte_memseg
-#define common_mem_mem_config rte_mem_config
-
-#define common_mem_pal_get_configuration rte_eal_get_configuration
-
- //#define commem_mem_pal_module_info rte_eal_module_info
- //
-#define common_mem_pal_init rte_eal_init
-
-#define COMMON_MEM_MEMPOOL_NAMESIZE RTE_MEMPOOL_NAMESIZE
-
-#define common_mem_memzone_lookup rte_memzone_lookup
-#define common_mem_memzone rte_memzone
-#define common_mem_atomic32_add_return rte_atomic32_add_return
-
-#define common_mem_spinlock_init rte_spinlock_init
-#define common_mem_spinlock_lock rte_spinlock_lock
-#define common_mem_spinlock_unlock rte_spinlock_unlock
-
-#define common_mem_memzone_free rte_memzone_free
-#define common_mem_pktmbuf_pool_create rte_pktmbuf_pool_create
-
-#define common_mem_pktmbuf_alloc rte_pktmbuf_alloc
-
-#define common_mem_mempool rte_mempool
-
-#define common_mem_pktmbuf_free rte_pktmbuf_free
-#define common_mem_mbuf rte_mbuf
-
-#define common_mem_mempool_lookup rte_mempool_lookup
-
-#define common_mem_ring_get_memsize rte_ring_get_memsize
-#define common_mem_ring rte_ring
-
-#define COMMON_MEM_MAX_MEMSEG RTE_MAX_MEMSEG
-
-#define common_mem_memzone_reserve rte_memzone_reserve
-#define common_mem_rwlock_read_lock rte_rwlock_read_lock
-#define common_mem_rwlock_read_unlock rte_rwlock_read_unlock
-
-#define common_mem_rwlock_write_lock rte_rwlock_write_lock
-#define common_mem_rwlock_write_unlock rte_rwlock_write_unlock
-#define common_mem_spinlock_trylock rte_spinlock_trylock
-
-#define common_mem_socket_id rte_socket_id
-#define common_mem_malloc_socket_stats rte_malloc_socket_stats
-
-#define COMMON_MEM_MIN RTE_MIN
-
-#define common_pal_module_init nscomm_pal_module_init
-#define common_memzone_data_reserve_name nscomm_memzone_data_reserve_name
-#define common_memzone_data_lookup_name nscomm_memzone_data_lookup_name
-
-#define common_dump_stack rte_dump_stack
-#define COMMON_PKTMBUF_HEADROOM RTE_PKTMBUF_HEADROOM
-
-#define common_pktmbuf_mtod rte_pktmbuf_mtod
-#define common_memcpy rte_memcpy
-#define common_spinlock_try_lock_with_pid dmm_spinlock_try_lock_with_pid
-#define common_spinlock_unlock rte_spinlock_unlock
-#define common_atomic64_t rte_atomic64_t
-#define common_atomic64_inc rte_atomic64_inc
-#define common_atomic64_read rte_atomic64_read
-#define common_atomic64_dec rte_atomic64_dec
-#define common_mbuf_refcnt_set rte_mbuf_refcnt_set
-#define common_mbuf_refcnt_read rte_mbuf_refcnt_read
-#define common_exit rte_exit
-#define COMMON_CACHE_LINE_SIZE RTE_CACHE_LINE_SIZE
-#define common_eal_process_type rte_eal_process_type
-#define COMMON_PROC_PRIMARY RTE_PROC_PRIMARY
-
-#endif
-
-#endif // _RTE_COMM_FUNC_H_
diff --git a/src/framework/common/base/include/common/common_mem_api.h b/src/framework/common/base/include/common/common_mem_api.h
deleted file mode 100644
index 40b01b9..0000000
--- a/src/framework/common/base/include/common/common_mem_api.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef __COMMON_MEM_API_H__
-#define __COMMON_MEM_API_H__
-
-#ifdef HAL_LIB
-#else
-
-#include "rte_atomic.h"
-#include "common_mem_spinlock.h"
-#include <sys/types.h>
-#include <unistd.h>
-#include <semaphore.h>
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-#ifndef NSTACK_LINT_CODE_DISABLE
-#define NSTACK_LINT_CODE_DISABLE(code) /*lint -e#code */
-#endif
-
-#ifndef NSTACK_LINT_CODE_ENABLE
-#define NSTACK_LINT_CODE_ENABLE(code) /*lint +e#code */
-#endif
-
-#define SYS_MBOX_NULL (sys_mbox_t)0
-
-typedef sem_t *sys_sem_t_v1;
-typedef sem_t sys_sem_st_v1;
-typedef struct queue *sys_mbox_t;
-
-typedef rte_spinlock_t *sys_sem_t_v2;
-typedef rte_spinlock_t sys_sem_st_v2;
-
-#ifndef u32_t
-typedef uint32_t u32_t;
-#endif
-
-#ifndef u8_t
-typedef uint8_t u8_t;
-#endif
-
-#ifndef s8_t
-typedef int8_t s8_t;
-#endif
-
-#ifndef err_t
-typedef s8_t err_t;
-#endif
-
-/** Return code for timeouts from sys_arch_mbox_fetch and sys_arch_sem_wait */
-#define SYS_ARCH_TIMEOUT 0xffffffffUL
-
-/** sys_mbox_tryfetch() returns SYS_MBOX_EMPTY if appropriate.
- * For now we use the same magic value, but we allow this to change in future.
- */
-#define SYS_MBOX_EMPTY SYS_ARCH_TIMEOUT
-
-void sys_sem_signal_s_v2 (sys_sem_t_v2 sem);
-void sys_sem_init_v2 (sys_sem_t_v2 sem);
-u32_t sys_arch_sem_trywait_v2 (sys_sem_t_v2 * sem);
-
-u32_t sys_arch_sem_wait_s_v2 (sys_sem_t_v2 sem);
-
-#define SYS_HOST_INITIAL_PID 1
-extern volatile pid_t g_sys_host_pid;
-pid_t sys_get_hostpid_from_file (pid_t pid);
-static inline pid_t
-get_sys_pid ()
-{
- if (SYS_HOST_INITIAL_PID == g_sys_host_pid)
- (void) sys_get_hostpid_from_file (getpid ());
- return g_sys_host_pid;
-}
-
-pid_t update_sys_pid ();
-u32_t sys_now (void);
-
-#define sys_sem_t sys_sem_t_v2
-#define sys_sem_st sys_sem_st_v2
-#define sys_sem_new(sem, count) sys_sem_new_v2(sem, count)
-#define sys_sem_free(sem) sys_sem_free_v2(sem)
-#define sys_sem_signal(sem) sys_sem_signal_v2(sem)
-#define sys_arch_sem_wait(sem, timeout) sys_arch_sem_wait_v2(sem)
-#define sys_arch_sem_trywait(sem) sys_arch_sem_trywait_v2(sem)
-
-#define sys_sem_init(sem) sys_sem_init_v2(sem)
-#define sys_sem_s_signal(sem) sys_sem_signal_s_v2(sem)
-#define sys_arch_sem_s_wait(sem, timeout) sys_arch_sem_wait_s_v2(sem)
-#define sys_arch_lock_with_pid(sem) (void)sys_arch_lock_with_pid_v2(sem)
-
-#define BUF_SIZE_FILEPATH 256
-#define STR_PID "pid:"
-#define READ_FILE_BUFLEN 512
-
-extern pid_t sys_get_hostpid_from_file (pid_t pid);
-extern pid_t get_hostpid_from_file (u32_t pid);
-extern void get_exec_name_by_pid (pid_t pid, char *task_name,
- int task_name_len);
-
-static inline u32_t
-sys_arch_lock_with_pid_v2 (sys_sem_t_v2 sem)
-{
- if (SYS_HOST_INITIAL_PID == g_sys_host_pid)
- (void) sys_get_hostpid_from_file (getpid ());
- dmm_spinlock_lock_with_pid (sem, g_sys_host_pid);
- return 0;
-}
-
-#define NSTACK_SEM_MALLOC(sys_sem,count) \
-{ \
- rte_spinlock_init(&(sys_sem)); \
- if (!(count)) \
- { \
- rte_spinlock_lock(&(sys_sem)); \
- } \
-}
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
-#endif
-
-#endif /* __COMMON_MEM_API_H__ */
diff --git a/src/framework/common/base/include/common/common_mem_base_type.h b/src/framework/common/base/include/common/common_mem_base_type.h
deleted file mode 100644
index 01707d9..0000000
--- a/src/framework/common/base/include/common/common_mem_base_type.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _COMMON_MEM_BASE_TYPE_H_
-#define _COMMON_MEM_BASE_TYPE_H_
-
-#ifdef HAL_LIB
-
-#else
-
-#define ALIGN_TYPE uint64_t
-#define PTR_ALIGN_TYPE uint64_t
-
-/*alignment define*/
-#define ALIGNMENT_DEF(name, type, aligntype) \
- union { \
- type name; \
- aligntype name##_align; \
- }
-
-#define PTR_ALIGNMENT_DEF(name, type) ALIGNMENT_DEF(name, type, PTR_ALIGN_TYPE)
-
-#define OTHER_ALIGNMENT_DEF(name, type) ALIGNMENT_DEF(name, type, ALIGN_TYPE)
-
-/*
- * * List definitions.
- * */
-#define DMM_LIST_HEAD(name, type) \
-struct name { \
- PTR_ALIGNMENT_DEF(lh_first, struct type *); /* first element */ \
-}
-
-#define DMM_LIST_ENTRY(type) \
-struct { \
- PTR_ALIGNMENT_DEF(le_next, struct type *); /* next element */\
- PTR_ALIGNMENT_DEF(le_prev, struct type **); /* address of previous next element */ \
-}
-
-/*
- * * Tail queue definitions.
- * */
-#define _DMM_TAILQ_HEAD(name, type, qual) \
-struct name { \
- PTR_ALIGNMENT_DEF(tqh_first, qual type *); /* first element */ \
- PTR_ALIGNMENT_DEF(tqh_last, qual type * qual *); /* addr of last next element */ \
-}
-
-#define DMM_TAILQ_HEAD(name, type) _DMM_TAILQ_HEAD(name, struct type,)
-
-#define _DMM_TAILQ_ENTRY(type, qual) \
-struct { \
- PTR_ALIGNMENT_DEF(tqe_next, qual type *); /* next element */\
- PTR_ALIGNMENT_DEF(tqe_prev, qual type * qual*); /* address of previous next element */\
-}
-#define DMM_TAILQ_ENTRY(type) _DMM_TAILQ_ENTRY(struct type,)
-
-/*
- * * Singly-linked Tail queue declarations.
- * */
-#define DMM_STAILQ_HEAD(name, type) \
- struct name { \
- PTR_ALIGNMENT_DEF(stqh_first, struct type *); /* first element */ \
- PTR_ALIGNMENT_DEF(stqh_last, struct type **); /* addr of last next element */ \
- }
-
-#define DMM_STAILQ_ENTRY(type) \
- struct { \
- PTR_ALIGNMENT_DEF(stqe_next, struct type *); /* next element */ \
- }
-#endif
-
-#endif
diff --git a/src/framework/common/base/include/common/common_mem_buf.h b/src/framework/common/base/include/common/common_mem_buf.h
deleted file mode 100644
index c9bb9fd..0000000
--- a/src/framework/common/base/include/common/common_mem_buf.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _COMMON_MEM_BUF_H_
-#define _COMMON_MEM_BUF_H_
-
-#ifdef HAL_LIB
-#else
-
-#include "nsfw_mem_api.h"
-#include "common_mem_base_type.h"
-#include "types.h"
-
-typedef enum __DMM_PROC_TYPE
-{
- DMM_PROC_T_AUTO = 0, /*auto detect */
- DMM_PROC_T_PRIMARY = 1, /* set to primary */
- DMM_PROC_T_SECONDARY = 2, /* set to secondary */
- DMM_PROC_T_INVALID
-} DMM_PROC_TYPE;
-
-#define DMM_MBUF_RET_OK 0
-#define DMM_MBUF_RET_ERR 1
-
-#define LCORE_MAX 128
-#define LCORE_MASK_PER (sizeof(int) * 8)
-#define LCORE_MASK_MAX (LCORE_MAX/LCORE_MASK_PER)
-
-#define LCORE_MASK_SET(ilcoremask, value) \
- if (value < LCORE_MAX) \
- { \
- ilcoremask[(value/LCORE_MASK_PER)] = (int) ( (ilcoremask[(value/LCORE_MASK_PER)]) | (1< (value%LCORE_MASK_PER))); \
- } \
-
-#define DMM_HUGTBL_ENABLE 0
-#define DMM_HUGTBL_DISABLE 1
-
-typedef struct __common_pal_module_info
-{
- int ishare_mem_size; /*shared memory size */
- int ilcoremask[LCORE_MASK_MAX];
- /**/ unsigned char uchugeflag;
- unsigned char ucproctype;
- unsigned char ucinstance;
- unsigned char ucresrv2;
-} common_mem_pal_module_info;
-
-/**
- * rte pal module init.
- *
- *
- * @param name
- * The name of the buf pool.
- */
-int nscomm_pal_module_init (nsfw_mem_para * para,
- common_mem_pal_module_info * pinfo, u8 app_mode);
-
-void *nscomm_memzone_data_reserve_name (const char *name, size_t len,
- int socket_id);
-
-void *nscomm_memzone_data_lookup_name (const char *name);
-
-#endif
-
-#endif /* _COMMON_MEM_BUF_H_ */
diff --git a/src/framework/common/base/include/common/common_mem_common.h b/src/framework/common/base/include/common/common_mem_common.h
deleted file mode 100644
index 1e4cf56..0000000
--- a/src/framework/common/base/include/common/common_mem_common.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _COMMON_MEM_COMMON_H_
-#define _COMMON_MEM_COMMON_H_
-
-#ifdef HAL_LIB
-#else
-#include "rte_common.h"
-#endif
-
-#endif
diff --git a/src/framework/common/base/include/common/common_mem_malloc.h b/src/framework/common/base/include/common/common_mem_malloc.h
deleted file mode 100644
index 68721cd..0000000
--- a/src/framework/common/base/include/common/common_mem_malloc.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _COMMON_MEM_MALLOC_H_
-#define _COMMON_MEM_MALLOC_H_
-
-#ifdef HAL_LIB
-#else
-#include "rte_malloc.h"
-#endif
-
-#endif /* _COMMON_MEM_MALLOC_H_ */
diff --git a/src/framework/common/base/include/common/common_mem_mbuf.h b/src/framework/common/base/include/common/common_mem_mbuf.h
deleted file mode 100644
index 0bb7696..0000000
--- a/src/framework/common/base/include/common/common_mem_mbuf.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-*
-* 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.
-*/
-
-/*******************************************************************
- Copyright 2017 - 2047, Huawei Tech. Co., Ltd.
- ALL RIGHTS RESERVED
-
-Filename : common_mem_mbuf.h
-Description :
-Version : 1.1
-********************************************************************/
-
-#ifndef _COMMON_MEM_MBUF_H_
-#define _COMMON_MEM_MBUF_H_
-
-#ifdef HAL_LIB
-#else
-#include "rte_mbuf.h"
-#include "common_func.h"
-
-typedef uint32_t (*dmm_mbuf_item_fun) (void *data, void *argv);
-int32_t dmm_pktmbuf_pool_iterator (struct common_mem_mempool *mp,
- uint32_t start, uint32_t end,
- dmm_mbuf_item_fun fun, void *argv);
-#endif
-
-#endif /* _COMMON_MEM_MBUF_H_ */
diff --git a/src/framework/common/base/include/common/common_mem_mempool.h b/src/framework/common/base/include/common/common_mem_mempool.h
deleted file mode 100644
index 58a8e82..0000000
--- a/src/framework/common/base/include/common/common_mem_mempool.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _COMMON_MEM_MEMPOOL_H_
-#define _COMMON_MEM_MEMPOOL_H_
-
-#ifdef HAL_LIB
-#else
-#include "rte_mempool.h"
-#endif
-
-#endif /* _COMMON_MEM_MEMPOOL_H_ */
diff --git a/src/framework/common/base/include/common/common_mem_memzone.h b/src/framework/common/base/include/common/common_mem_memzone.h
deleted file mode 100644
index 20e18c2..0000000
--- a/src/framework/common/base/include/common/common_mem_memzone.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _COMMON_MEM_MEMZONE_H_
-#define _COMMON_MEM_MEMZONE_H_
-
-#ifdef HAL_LIB
-#else
-#include "rte_memzone.h"
-#endif
-
-#endif /* _COMMON_MEM_MEMZONE_H_ */
diff --git a/src/framework/common/base/include/common/common_mem_pal.h b/src/framework/common/base/include/common/common_mem_pal.h
deleted file mode 100644
index 209b8bd..0000000
--- a/src/framework/common/base/include/common/common_mem_pal.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _COMMON_MEM_PAL_H_
-#define _COMMON_MEM_PAL_H_
-
-#ifdef HAL_LIB
-#else
-
-#include "nsfw_base_linux_api.h"
-
-/*print the map address*/
-void dmm_addr_print (void);
-
-#endif
-
-#endif /* _COMMON_MEM_PAL_H_ */
diff --git a/src/framework/common/base/include/common/common_mem_pal_memconfig.h b/src/framework/common/base/include/common/common_mem_pal_memconfig.h
deleted file mode 100644
index 65b6e04..0000000
--- a/src/framework/common/base/include/common/common_mem_pal_memconfig.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _COMMON_MEM_PAL_MEMCONFIG_H_
-#define _COMMON_MEM_PAL_MEMCONFIG_H_
-
-#ifdef HAL_LIB
-#else
-#include "rte_eal_memconfig.h"
-
-#endif
-
-#endif
diff --git a/src/framework/common/base/include/common/common_mem_spinlock.h b/src/framework/common/base/include/common/common_mem_spinlock.h
deleted file mode 100644
index 23f6b1e..0000000
--- a/src/framework/common/base/include/common/common_mem_spinlock.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _COMMON_MEM_SPINLOCK_X86_64_H_
-#define _COMMON_MEM_SPINLOCK_X86_64_H_
-
-#ifdef HAL_LIB
-#else
-#include "rte_spinlock.h"
-
-static inline void
-dmm_spinlock_lock_with_pid (rte_spinlock_t * sl, int pid)
-{
- while (!__sync_bool_compare_and_swap (&sl->locked, 0, pid))
- while (sl->locked)
- rte_pause ();
-}
-
-static inline int
-dmm_spinlock_try_lock_with_pid (rte_spinlock_t * sl, int pid)
-{
- return __sync_bool_compare_and_swap (&sl->locked, 0, pid);
-}
-
-#endif
-
-#endif /* _COMMON_MEM_SPINLOCK_X86_64_H_ */
diff --git a/src/framework/common/base/include/common/common_sys_config.h b/src/framework/common/base/include/common/common_sys_config.h
deleted file mode 100644
index 736c47b..0000000
--- a/src/framework/common/base/include/common/common_sys_config.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef __COMMON_SYS_CONFIG_H_
-#define __COMMON_SYS_CONFIG_H_
-
-/* Below compile macro is used only in UT makefile */
-#if (HAL_LIB)
-#else
-#undef RTE_CACHE_LINE_SIZE
-#define RTE_CACHE_LINE_SIZE 64 /* RTE_CACHE_LINE_SIZE */
-#undef RTE_MAX_LCORE
-#define RTE_MAX_LCORE 128 /* RTE_MAX_LCORE */
-#undef RTE_MAX_NUMA_NODES
-#define RTE_MAX_NUMA_NODES 8 /* RTE_MAX_NUMA_NODES */
-#undef RTE_MAX_MEMSEG
-#define RTE_MAX_MEMSEG 256 /* RTE_MAX_MEMSEG */
-#undef RTE_MAX_MEMZONE
-#define RTE_MAX_MEMZONE 2560 /* RTE_MAX_MEMZONE */
-#undef RTE_MAX_TAILQ
-#define RTE_MAX_TAILQ 32 /* RTE_MAX_TAILQ */
-#undef RTE_ARCH_X86
-#define RTE_ARCH_X86 1 /* RTE_ARCH_64 */
-#undef RTE_ARCH_64
-#define RTE_ARCH_64 1 /* RTE_ARCH_64 */
-#undef RTE_PKTMBUF_HEADROOM
-#define RTE_PKTMBUF_HEADROOM 128 /* RTE_PKTMBUF_HEADROOM */
-#undef RTE_MEMPOOL_CACHE_MAX_SIZE
-#define RTE_MEMPOOL_CACHE_MAX_SIZE 512 /* RTE_MEMPOOL_CACHE_MAX_SIZE */
-
-#endif
-
-#endif // __COMMON_SYS_CONFIG_H_
diff --git a/src/framework/common/base/include/common/generic/common_mem_rwlock.h b/src/framework/common/base/include/common/generic/common_mem_rwlock.h
deleted file mode 100644
index 2eed259..0000000
--- a/src/framework/common/base/include/common/generic/common_mem_rwlock.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _COMMON_MEM_RWLOCK_H_
-#define _COMMON_MEM_RWLOCK_H_
-
-#ifdef HAL_LIB
-#else
-#include "rte_rwlock.h"
-#endif
-
-#endif /* _COMMON_MEM_RWLOCK_H_ */
diff --git a/src/framework/common/base/include/common_pal_bitwide_adjust.h b/src/framework/common/base/include/common_pal_bitwide_adjust.h
deleted file mode 100644
index 0e68533..0000000
--- a/src/framework/common/base/include/common_pal_bitwide_adjust.h
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _COMMON_PAL_BITWIDE_ADJUST_H_
-#define _COMMON_PAL_BITWIDE_ADJUST_H_
-
-#ifdef HAL_LIB
-#include "pal_bitwide_adjust.h"
-#else
-#define MODULE(name) (1)
-
-#include "common_mem_common.h"
-
-#include "common_func.h"
-
-#define ALIGN_SIZET(size) ((uint64_t)(size))
-#define ALIGN_PTR(PTR) ((uint64_t)(PTR))
-
-extern struct common_mem_memseg *g_PMemSegArry;
-extern void **g_LMegAddrArry;
-
-/*get Local Seg addr by segIdx*/
-#define HMEM_SEG_LVADDR(segid) (g_LMegAddrArry[segid])
-/*get SegIDX by PrimSegAddr, just get the array Idx of g_PMemSegArry*/
-#define HMEM_SEGID(segaddr) ((struct common_mem_memseg*)segaddr - &(g_PMemSegArry[0]))
-
-/*****************************************************************
-Parameters : LMegAddrArry[] Local common_mem_memseg addr Array
- SegNum common_mem_memseg Num.
-Return :
-Description : init g_PrimAddr2LocalMap g_LocalAddr2PrimMap while the process start
-*****************************************************************/
-void *pal_shddr_to_laddr (uint64_t shaddr);
-uint64_t pal_laddr_to_shddr (void *laddr);
-int dmm_pal_addr_align ();
-
-extern int g_PrimSameFlg;
-
-/* if __NSTACK_MAIN__ is defined, no need do addr trans*/
-#ifndef __NSTACK_MAIN__
-/* g_PrimSameFlg check should be done before calling cast functions */
-
-/*share memory address to local virtual address*/
-#define ADDR_SHTOL(addr) (g_PrimSameFlg ? ((void*) (addr)) : pal_shddr_to_laddr((uint64_t)(addr)))
-
-/*local virtual address to share memory address according to memseg*/
-#define ADDR_LTOSH(addr) (g_PrimSameFlg ? ((uint64_t)(addr)) : pal_laddr_to_shddr((void*)(addr)))
-
-#define PTR_SHTOL(type, addr) ((type)ADDR_SHTOL(addr))
-
-/*local virtual address to share memory address; for compatible, not delete ADDR_LTOSH_EXT*/
-#define ADDR_LTOSH_EXT(addr) ADDR_LTOSH(addr)
-#else
-/*share memory address to local virtual address*/
-#define ADDR_SHTOL(addr) ((void*)(addr))
-
-/*local virtual address to share memory address according to memseg*/
-#define ADDR_LTOSH(addr) ((uint64_t)(addr))
-
-#define PTR_SHTOL(type, addr) ((type)(addr))
-
-/*local virtual address to share memory address; for compatible, not delete ADDR_LTOSH_EXT*/
-#define ADDR_LTOSH_EXT(addr) ADDR_LTOSH(addr)
-#endif
-
-#if MODULE("list")
-#define COMMON_LIST_INSERT_HEAD(lhead, lelm, field) do { \
- if (((lelm)->field.le_next_align = (lhead)->lh_first_align) != ((typeof((lhead)->lh_first_align))(long)NULL)) \
- ((typeof((lhead)->lh_first))ADDR_SHTOL((lhead)->lh_first_align))->field.le_prev_align = \
- ADDR_LTOSH(&(lelm)->field.le_next); \
- (lhead)->lh_first_align = ADDR_LTOSH(lelm); \
- (lelm)->field.le_prev_align = ADDR_LTOSH(&(lhead)->lh_first); \
-} while (/*CONSTCOND*/0)
-
-#define COMMON_LIST_REMOVE(lelm, field) do { \
- if ((lelm)->field.le_next_align != ((typeof((lelm)->field.le_next_align))ALIGN_PTR(NULL))) \
- ((typeof((lelm)->field.le_next))ADDR_SHTOL((lelm)->field.le_next_align))->field.le_prev_align = \
- (lelm)->field.le_prev_align; \
- if (EOK != (MEMCPY_S((typeof((lelm)->field.le_prev))ADDR_SHTOL((lelm)->field.le_prev_align), \
- sizeof((lelm)->field.le_next_align), \
- &((lelm)->field.le_next_align), \
- sizeof((lelm)->field.le_next_align)))) \
- {\
- NSCOMM_LOGERR("MEMCPY_S failed.");\
- return;\
- }\
-} while (/*CONSTCOND*/0)
-
-#define COMMON_LIST_EMPTY(lhead) ((typeof((lhead)->lh_first))ADDR_SHTOL((lhead)->lh_first_align) == NULL)
-#define COMMON_LIST_FIRST(lhead) ((typeof((lhead)->lh_first))ADDR_SHTOL((lhead)->lh_first_align))
-#define COMMON_LIST_NEXT(lelm, field) ((typeof((lelm)->field.le_next))ADDR_SHTOL((lelm)->field.le_next_align))
-
-#endif
-
-#if MODULE("tailq")
-
-#define COMMON_TAILQ_INSERT_TAIL(lhead, lelm, field) do { \
- (lelm)->field.tqe_next_align = (typeof((lelm)->field.tqe_next_align))NULL; \
- (lelm)->field.tqe_prev_align = (lhead)->tqh_last_align; \
- typeof((lhead)->tqh_last_align) tempelm = ADDR_LTOSH(lelm);\
- if (EOK != (MEMCPY_S(ADDR_SHTOL((lhead)->tqh_last_align), sizeof(tempelm), &tempelm, sizeof(tempelm)))) \
- {\
- NSCOMM_LOGERR("MEMCPY_S failed.");\
- }\
- (lhead)->tqh_last_align = ADDR_LTOSH(&(lelm)->field.tqe_next); \
-} while (/*CONSTCOND*/0)
-
-#define COMMON_TAILQ_FOREACH(lvar, lhead, field) \
- for ((lvar) = (typeof(lvar))ADDR_SHTOL((lhead)->tqh_first_align); \
- (lvar); \
- (lvar) = (typeof(lvar))ADDR_SHTOL((lvar)->field.tqe_next_align))
-
-#define COMMON_TAILQ_REMOVE(lhead, lelm, field) do { \
- if (((lelm)->field.tqe_next_align) != (typeof((lelm)->field.tqe_next_align))NULL) \
- ((typeof((lelm)->field.tqe_next))ADDR_SHTOL((lelm)->field.tqe_next_align))->field.tqe_prev_align = \
- (lelm)->field.tqe_prev_align; \
- else \
- (lhead)->tqh_last_align = (lelm)->field.tqe_prev_align; \
- if (EOK != (MEMCPY_S(ADDR_SHTOL((lelm)->field.tqe_prev_align), \
- sizeof((lelm)->field.tqe_next_align), \
- &((lelm)->field.tqe_next_align), \
- sizeof((lelm)->field.tqe_next_align)))) \
- {\
- NSCOMM_LOGERR("MEMCPY_S failed.");\
- }\
- } while (/*CONSTCOND*/0)
-
-/*
- * Tail queue functions.
- */
-#define COMMON_TAILQ_INIT(head) do { \
- (head)->tqh_first_align = (typeof((head)->tqh_first_align))NULL; \
- (head)->tqh_last_align = ADDR_LTOSH(&(head)->tqh_first); \
- } while (/*CONSTCOND*/0)
-
-/*
- * Tail queue access methods.
- */
-#define COMMON_TAILQ_EMPTY(head) ((head)->tqh_first_align == (typeof((head)->tqh_first_align))NULL)
-#define COMMON_TAILQ_FIRST(head) ((typeof((head)->tqh_first))ADDR_SHTOL((head)->tqh_first_align))
-#define COMMON_TAILQ_NEXT(elm, field) ((typeof((elm)->field.tqe_next))ADDR_SHTOL((elm)->field.tqe_next_align))
-
-#endif
-
-#if MODULE("stailq")
-/*
-* Singly-linked Tail queue functions.
-*/
-#define COMMON_STAILQ_INIT(head) do { \
- (head)->stqh_first_align = ALIGN_PTR(NULL); \
- (head)->stqh_last_align = ADDR_LTOSH(&(head)->stqh_first); \
-} while (/*CONSTCOND*/0)
-
-#define COMMON_STAILQ_INSERT_TAIL(head, elm, field) do { \
- (elm)->field.stqe_next_align = ALIGN_PTR(NULL); \
- typeof((head)->stqh_last_align) telm = ADDR_LTOSH(elm);\
- if (EOK != (MEMCPY_S(ADDR_SHTOL((head)->stqh_last_align), sizeof(telm), &telm, sizeof(telm))))\
- {\
- NSCOMM_LOGERR("MEMCPY_S failed.");\
- }\
- (head)->stqh_last_align = ADDR_LTOSH(&(elm)->field.stqe_next); \
-} while (/*CONSTCOND*/0)
-
-#define COMMON_STAILQ_REMOVE_HEAD(head, field) do { \
- if (((head)->stqh_first_align = \
- ((typeof((head)->stqh_first))ADDR_SHTOL((head)->stqh_first_align))->field.stqe_next_align) == \
- (PTR_ALIGN_TYPE)NULL) \
- (head)->stqh_last_align = ADDR_LTOSH(&(head)->stqh_first); \
-} while (/*CONSTCOND*/0)
-
-#define COMMON_STAILQ_FOREACH(var, head, field) \
- for ((var) = ADDR_SHTOL((head)->stqh_first_align); \
- (var); \
- (var) = ADDR_SHTOL((var)->field.stqe_next_align))
-
-/*
-* Singly-linked Tail queue access methods.
-*/
-
-#define COMMON_STAILQ_EMPTY(head) ((head)->stqh_first_align == (PTR_ALIGN_TYPE)NULL)
-
-#define COMMON_STAILQ_FIRST(head) (ADDR_SHTOL((head)->stqh_first_align))
-
-#define COMMON_STAILQ_NEXT(elm, field) (ADDR_SHTOL((elm)->field.stqe_next_align))
-#endif
-
-#endif
-
-#endif
diff --git a/src/framework/common/base/include/nsfw_base_linux_api.h b/src/framework/common/base/include/nsfw_base_linux_api.h
deleted file mode 100644
index 83b5a32..0000000
--- a/src/framework/common/base/include/nsfw_base_linux_api.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _NSFW_BASE_LINUX_API_H_
-#define _NSFW_BASE_LINUX_API_H_
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/epoll.h>
-#include <unistd.h>
-
-int nsfw_base_socket (int, int, int);
-int nsfw_base_bind (int, const struct sockaddr *, socklen_t);
-int nsfw_base_listen (int, int);
-int nsfw_base_shutdown (int, int);
-int nsfw_base_getsockname (int, struct sockaddr *, socklen_t *);
-int nsfw_base_getpeername (int, struct sockaddr *, socklen_t *);
-int nsfw_base_getsockopt (int, int, int, void *, socklen_t *);
-int nsfw_base_setsockopt (int, int, int, const void *, socklen_t);
-int nsfw_base_accept (int, struct sockaddr *, socklen_t *);
-int nsfw_base_accept4 (int, struct sockaddr *, socklen_t *, int flags);
-int nsfw_base_connect (int, const struct sockaddr *, socklen_t);
-ssize_t nsfw_base_recv (int, void *, size_t, int);
-ssize_t nsfw_base_send (int, const void *, size_t, int);
-ssize_t nsfw_base_read (int, void *, size_t);
-ssize_t nsfw_base_write (int, const void *, size_t);
-ssize_t nsfw_base_writev (int, const struct iovec *, int);
-ssize_t nsfw_base_readv (int, const struct iovec *, int);
-ssize_t nsfw_base_sendto (int, const void *, size_t, int,
- const struct sockaddr *, socklen_t);
-ssize_t nsfw_base_recvfrom (int, void *, size_t, int, struct sockaddr *,
- socklen_t *);
-ssize_t nsfw_base_sendmsg (int, const struct msghdr *, int flags);
-ssize_t nsfw_base_recvmsg (int, struct msghdr *, int flags);
-int nsfw_base_close (int);
-int nsfw_base_select (int, fd_set *, fd_set *, fd_set *, struct timeval *);
-int nsfw_base_ioctl (int, unsigned long, unsigned long);
-int nsfw_base_fcntl (int, int, unsigned long);
-int nsfw_base_epoll_create (int);
-int nsfw_base_epoll_create1 (int);
-int nsfw_base_epoll_ctl (int, int, int, struct epoll_event *);
-int nsfw_base_epoll_wait (int, struct epoll_event *, int, int);
-pid_t nsfw_base_fork (void);
-
-#endif
diff --git a/src/framework/common/base/liblinuxapi/base_linux_api_declare.h b/src/framework/common/base/liblinuxapi/base_linux_api_declare.h
index 943ae04..3f96e6c 100644
--- a/src/framework/common/base/liblinuxapi/base_linux_api_declare.h
+++ b/src/framework/common/base/liblinuxapi/base_linux_api_declare.h
@@ -14,38 +14,42 @@
* limitations under the License.
*/
-BASE_MK_DECL (int, socket, (int, int, int));
-BASE_MK_DECL (int, bind, (int, const struct sockaddr *, socklen_t));
-BASE_MK_DECL (int, listen, (int, int));
-BASE_MK_DECL (int, shutdown, (int, int));
-BASE_MK_DECL (int, getsockname, (int, struct sockaddr *, socklen_t *));
-BASE_MK_DECL (int, getpeername, (int, struct sockaddr *, socklen_t *));
-BASE_MK_DECL (int, getsockopt, (int, int, int, void *, socklen_t *));
-BASE_MK_DECL (int, setsockopt, (int, int, int, const void *, socklen_t));
-BASE_MK_DECL (int, accept, (int, struct sockaddr *, socklen_t *));
-BASE_MK_DECL (int, accept4, (int, struct sockaddr *, socklen_t *, int flags));
-BASE_MK_DECL (int, connect, (int, const struct sockaddr *, socklen_t));
-BASE_MK_DECL (ssize_t, recv, (int, void *, size_t, int));
-BASE_MK_DECL (ssize_t, send, (int, const void *, size_t, int));
-BASE_MK_DECL (ssize_t, read, (int, void *, size_t));
-BASE_MK_DECL (ssize_t, write, (int, const void *, size_t));
-BASE_MK_DECL (ssize_t, writev, (int, const struct iovec *, int));
-BASE_MK_DECL (ssize_t, readv, (int, const struct iovec *, int));
-BASE_MK_DECL (ssize_t, sendto,
- (int, const void *, size_t, int, const struct sockaddr *,
- socklen_t));
-BASE_MK_DECL (ssize_t, recvfrom,
- (int, void *, size_t, int, struct sockaddr *, socklen_t *));
-BASE_MK_DECL (ssize_t, sendmsg, (int, const struct msghdr *, int flags));
-BASE_MK_DECL (ssize_t, recvmsg, (int, struct msghdr *, int flags));
-BASE_MK_DECL (int, close, (int));
-BASE_MK_DECL (int, select,
- (int, fd_set *, fd_set *, fd_set *, struct timeval *));
-BASE_MK_DECL (int, ioctl, (int, unsigned long, unsigned long));
-BASE_MK_DECL (int, fcntl, (int, int, unsigned long));
-BASE_MK_DECL (int, epoll_create, (int));
-BASE_MK_DECL (int, epoll_create1, (int));
-BASE_MK_DECL (int, epoll_ctl, (int, int, int, struct epoll_event *));
-BASE_MK_DECL (int, epoll_wait, (int, struct epoll_event *, int, int));
-BASE_MK_DECL (pid_t, fork, (void));
+BASE_MK_DECL(int, socket, (int, int, int));
+BASE_MK_DECL(int, bind, (int, const struct sockaddr *, socklen_t));
+BASE_MK_DECL(int, listen, (int, int));
+BASE_MK_DECL(int, shutdown, (int, int));
+BASE_MK_DECL(int, getaddrinfo,
+ (const char *, const char *, const struct addrinfo *,
+ struct addrinfo **));
+BASE_MK_DECL(int, getsockname, (int, struct sockaddr *, socklen_t *));
+BASE_MK_DECL(int, getpeername, (int, struct sockaddr *, socklen_t *));
+BASE_MK_DECL(int, getsockopt, (int, int, int, void *, socklen_t *));
+BASE_MK_DECL(int, setsockopt, (int, int, int, const void *, socklen_t));
+BASE_MK_DECL(int, accept, (int, struct sockaddr *, socklen_t *));
+BASE_MK_DECL(int, accept4, (int, struct sockaddr *, socklen_t *, int flags));
+BASE_MK_DECL(int, connect, (int, const struct sockaddr *, socklen_t));
+BASE_MK_DECL(ssize_t, recv, (int, void *, size_t, int));
+BASE_MK_DECL(ssize_t, send, (int, const void *, size_t, int));
+BASE_MK_DECL(ssize_t, read, (int, void *, size_t));
+BASE_MK_DECL(ssize_t, write, (int, const void *, size_t));
+BASE_MK_DECL(ssize_t, writev, (int, const struct iovec *, int));
+BASE_MK_DECL(ssize_t, readv, (int, const struct iovec *, int));
+BASE_MK_DECL(ssize_t, sendto,
+ (int, const void *, size_t, int, const struct sockaddr *,
+ socklen_t));
+BASE_MK_DECL(ssize_t, recvfrom,
+ (int, void *, size_t, int, struct sockaddr *, socklen_t *));
+BASE_MK_DECL(ssize_t, sendmsg, (int, const struct msghdr *, int flags));
+BASE_MK_DECL(ssize_t, recvmsg, (int, struct msghdr *, int flags));
+BASE_MK_DECL(int, close, (int));
+BASE_MK_DECL(int, select,
+ (int, fd_set *, fd_set *, fd_set *, struct timeval *));
+BASE_MK_DECL(int, ioctl, (int, unsigned long, unsigned long));
+BASE_MK_DECL(int, fcntl, (int, int, unsigned long));
+BASE_MK_DECL(int, epoll_create, (int));
+BASE_MK_DECL(int, epoll_create1, (int));
+//BASE_MK_DECL(int , poll , (struct pollfd *, nfds_t, int));
+BASE_MK_DECL(int, epoll_ctl, (int, int, int, struct epoll_event *));
+BASE_MK_DECL(int, epoll_wait, (int, struct epoll_event *, int, int));
+BASE_MK_DECL(pid_t, fork, (void));
#undef BASE_MK_DECL
diff --git a/src/framework/common/base/liblinuxapi/nsfw_base_linux_api.c b/src/framework/common/base/liblinuxapi/nsfw_base_linux_api.c
index 4e59d68..734a09f 100644
--- a/src/framework/common/base/liblinuxapi/nsfw_base_linux_api.c
+++ b/src/framework/common/base/liblinuxapi/nsfw_base_linux_api.c
@@ -15,7 +15,6 @@
*/
#include "nsfw_base_linux_api.h"
-#include "nstack_log.h"
#include <pthread.h>
#include <stdio.h>
#include <errno.h>
@@ -39,9 +38,9 @@
typedef enum
{
- BASE_STATE_INIT,
- BASE_STATE_SUCCESS,
- BASE_STATE_FAIL
+ BASE_STATE_INIT,
+ BASE_STATE_SUCCESS,
+ BASE_STATE_FAIL
} nsfw_base_state;
typedef struct __base_linux_api
@@ -50,27 +49,24 @@ typedef struct __base_linux_api
#include "base_linux_api_declare.h"
} base_linux_api;
-nsfw_base_state g_nsfw_module_state = BASE_STATE_INIT;
+nsfw_base_state g_nsfw_mudule_state = BASE_STATE_INIT;
pthread_mutex_t g_nsfw_init_mutex = PTHREAD_MUTEX_INITIALIZER;
base_linux_api g_nsfw_posix_api = { 0 };
void *g_linux_lib_handle = (void *) 0;
-int
-nsfw_posix_symbol_load ()
+int nsfw_posix_symbol_load()
{
- g_linux_lib_handle = dlopen ("libc.so.6", RTLD_NOW | RTLD_GLOBAL);
- if ((void *) 0 == g_linux_lib_handle)
+ g_linux_lib_handle = dlopen("libc.so.6", RTLD_NOW | RTLD_GLOBAL);
+ if ((void *) 0 == g_linux_lib_handle)
{
- /* optimize dlopen err print */
- NSSOC_LOGERR ("cannot dlopen libc.so.6] err_string=%s", dlerror ());
- return NSFW_BASE_FAIL;
+ return NSFW_BASE_FAIL;
}
#define BASE_MK_DECL(ret, fn, args) \
g_nsfw_posix_api.pf##fn = (typeof(g_nsfw_posix_api.pf##fn))dlsym(g_linux_lib_handle, #fn);
#include <base_linux_api_declare.h>
- return NSFW_BASE_OK;
+ return NSFW_BASE_OK;
}
/*****************************************************************
@@ -78,549 +74,191 @@ Parameters : void
Return :
Description : linux posix api init with threadonce
*****************************************************************/
-static inline int
-nsfw_posix_api_init ()
+static inline int nsfw_posix_api_init()
{
- int iret = NSFW_BASE_OK;
+ int iret = NSFW_BASE_OK;
- /*if init already, just return success, if init fail before, just return err */
- if (BASE_STATE_INIT != g_nsfw_module_state)
+ /*if init already, just return success, if init fail before, just return err */
+ if (BASE_STATE_INIT != g_nsfw_mudule_state)
{
- return (BASE_STATE_SUCCESS ==
- g_nsfw_module_state ? NSFW_BASE_OK : NSFW_BASE_FAIL);
+ return (BASE_STATE_SUCCESS ==
+ g_nsfw_mudule_state ? NSFW_BASE_OK : NSFW_BASE_FAIL);
}
- (void) pthread_mutex_lock (&g_nsfw_init_mutex);
+ (void) pthread_mutex_lock(&g_nsfw_init_mutex);
- /*if init already, just return success, if init fail before, just return err */
- if (BASE_STATE_INIT != g_nsfw_module_state)
+ /*if init already, just return success, if init fail before, just return err */
+ if (BASE_STATE_INIT != g_nsfw_mudule_state)
{
- (void) pthread_mutex_unlock (&g_nsfw_init_mutex);
- return (BASE_STATE_SUCCESS ==
- g_nsfw_module_state ? NSFW_BASE_OK : NSFW_BASE_FAIL);
+ (void) pthread_mutex_unlock(&g_nsfw_init_mutex);
+ return (BASE_STATE_SUCCESS ==
+ g_nsfw_mudule_state ? NSFW_BASE_OK : NSFW_BASE_FAIL);
}
- iret = nsfw_posix_symbol_load ();
- if (NSFW_BASE_OK == iret)
+ iret = nsfw_posix_symbol_load();
+ if (NSFW_BASE_OK == iret)
{
- g_nsfw_module_state = BASE_STATE_SUCCESS;
+ g_nsfw_mudule_state = BASE_STATE_SUCCESS;
}
- else
+ else
{
- g_nsfw_module_state = BASE_STATE_FAIL;
+ g_nsfw_mudule_state = BASE_STATE_FAIL;
}
- (void) pthread_mutex_unlock (&g_nsfw_init_mutex);
- return iret;
+ (void) pthread_mutex_unlock(&g_nsfw_init_mutex);
+ return iret;
}
/* *INDENT-OFF* */
-/*****************************************************************************
-* Prototype : nsfw_base_socket
-* Description : linux socket api
-* Input : int a
-* int b
-* int c
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-
-*
-*****************************************************************************/
int nsfw_base_socket(int a, int b, int c)
{
nsfw_call_ret(socket, (a, b, c))
}
-/*****************************************************************************
-* Prototype : nsfw_base_bind
-* Description : linux fd bind api
-* Input : int a
-* const struct sockaddr* b
-* socklen_t c
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
int nsfw_base_bind(int a, const struct sockaddr* b, socklen_t c)
{
nsfw_call_ret(bind, (a, b, c))
}
-/*****************************************************************************
-* Prototype : nsfw_base_listen
-* Description : linux fd listen api
-* Input : int a
-* int b
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
int nsfw_base_listen(int a, int b)
{
nsfw_call_ret(listen, (a, b))
}
-/*****************************************************************************
-* Prototype : nsfw_base_shutdown
-* Description : linux shutdown api
-* Input : int a
-* int b
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*
-*****************************************************************************/
int nsfw_base_shutdown(int a, int b)
{
nsfw_call_ret(shutdown, (a, b))
}
-/*****************************************************************************
-* Prototype : nsfw_base_getsockname
-* Description : linux getsockname api
-* Input : int a
-* struct sockaddr* b
-* socklen_t* c
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
+int nsfw_base_getaddrinfo(const char *a, const char *b, const struct addrinfo *c, struct addrinfo **d)
+{
+ nsfw_call_ret(getaddrinfo, (a, b, c, d))
+}
+
int nsfw_base_getsockname(int a, struct sockaddr* b, socklen_t* c)
{
nsfw_call_ret(getsockname, (a, b, c))
}
-/*****************************************************************************
-* Prototype : nsfw_base_getpeername
-* Description : linux getpername api
-* Input : int a
-* struct sockaddr* b
-* socklen_t* c
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
int nsfw_base_getpeername(int a, struct sockaddr* b, socklen_t* c)
{
nsfw_call_ret(getpeername, (a, b, c))
}
-/*****************************************************************************
-* Prototype : nsfw_base_getsockopt
-* Description : linux getsockopt api
-* Input : int a
-* int b
-* int c
-* void* d
-* socklen_t* e
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
int nsfw_base_getsockopt(int a, int b, int c, void* d, socklen_t* e)
{
nsfw_call_ret(getsockopt, (a, b, c, d, e))
}
-/*****************************************************************************
-* Prototype : nsfw_base_setsockopt
-* Description : linux setsockopt api
-* Input : int a
-* int b
-* int c
-* const void* d
-* socklen_t e
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*****************************************************************************/
int nsfw_base_setsockopt(int a, int b, int c, const void* d, socklen_t e)
{
nsfw_call_ret(setsockopt, (a, b, c, d, e))
}
-/*****************************************************************************
-* Prototype : nsfw_base_accept
-* Description : linux accept api
-* Input : int a
-* struct sockaddr* b
-* socklen_t* c
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*****************************************************************************/
int nsfw_base_accept(int a, struct sockaddr* b, socklen_t* c)
{
nsfw_call_ret(accept, (a, b, c))
}
-/*****************************************************************************
-* Prototype : nsfw_base_accept4
-* Description : linux accept4 api
-* Input : int a
-* struct sockaddr* b
-* socklen_t* c
-* int flags
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*****************************************************************************/
int nsfw_base_accept4(int a, struct sockaddr* b, socklen_t* c, int flags)
{
nsfw_call_ret(accept4, (a, b, c, flags))
}
-/*****************************************************************************
-* Prototype : nsfw_base_connect
-* Description : linux connect api
-* Input : int a
-* const struct sockaddr* b
-* socklen_t c
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
int nsfw_base_connect(int a, const struct sockaddr* b, socklen_t c)
{
nsfw_call_ret(connect, (a, b, c))
}
-/*****************************************************************************
-* Prototype : nsfw_base_recv
-* Description : linux recv api
-* Input : int a
-* void* b
-* size_t c
-* int d
-* Output : None
-* Return Value : ssize_t
-* Calls :
-* Called By :
-*
-*****************************************************************************/
ssize_t nsfw_base_recv(int a, void* b, size_t c, int d)
{
nsfw_call_ret(recv, (a, b, c, d))
}
-/*****************************************************************************
-* Prototype : nsfw_base_send
-* Description : linux send api
-* Input : int a
-* const void* b
-* size_t c
-* int d
-* Output : None
-* Return Value : ssize_t
-* Calls :
-* Called By :
-*
-*****************************************************************************/
ssize_t nsfw_base_send(int a, const void* b, size_t c, int d)
{
nsfw_call_ret(send, (a, b, c, d))
}
-/*****************************************************************************
-* Prototype : nsfw_base_read
-* Description : linux read api
-* Input : int a
-* void* b
-* size_t c
-* Output : None
-* Return Value : ssize_t
-* Calls :
-* Called By :
-*
-*****************************************************************************/
ssize_t nsfw_base_read(int a, void* b, size_t c)
{
nsfw_call_ret(read, (a, b, c))
}
-/*****************************************************************************
-* Prototype : nsfw_base_write
-* Description : linux write api
-* Input : int a
-* const void* b
-* size_t c
-* Output : None
-* Return Value : ssize_t
-* Calls :
-* Called By :
-*
-*****************************************************************************/
ssize_t nsfw_base_write(int a, const void* b, size_t c)
{
nsfw_call_ret(write, (a, b, c))
}
-/*****************************************************************************
-* Prototype : nsfw_base_writev
-* Description : linux writev api
-* Input : int a
-* const struct iovec * b
-* int c
-* Output : None
-* Return Value : ssize_t
-* Calls :
-* Called By :
-*****************************************************************************/
ssize_t nsfw_base_writev(int a, const struct iovec * b, int c)
{
nsfw_call_ret(writev, (a, b, c))
}
-/*****************************************************************************
-* Prototype : nsfw_base_readv
-* Description : linux readv api
-* Input : int a
-* const struct iovec * b
-* int c
-* Output : None
-* Return Value : ssize_t
-* Calls :
-* Called By :
-*
-*****************************************************************************/
ssize_t nsfw_base_readv(int a, const struct iovec * b, int c)
{
nsfw_call_ret(readv, (a, b, c))
}
-/*****************************************************************************
-* Prototype : nsfw_base_sendto
-* Description : linux sendto api
-* Input : int a
-* const void * b
-* size_t c
-* int d
-* const struct sockaddr *e
-* socklen_t f
-* Output : None
-* Return Value : ssize_t
-* Calls :
-* Called By :
-*****************************************************************************/
ssize_t nsfw_base_sendto(int a, const void * b, size_t c, int d, const struct sockaddr *e, socklen_t f)
{
nsfw_call_ret(sendto, (a, b, c, d, e, f))
}
-/*****************************************************************************
-* Prototype : nsfw_base_recvfrom
-* Description : linux recvfrom api
-* Input : int a
-* void *b
-* size_t c
-* int d
-* struct sockaddr *e
-* socklen_t *f
-* Output : None
-* Return Value : ssize_t
-* Calls :
-* Called By :
-*****************************************************************************/
ssize_t nsfw_base_recvfrom(int a, void *b, size_t c, int d,struct sockaddr *e, socklen_t *f)
{
nsfw_call_ret(recvfrom, (a, b, c, d, e, f))
}
-/*****************************************************************************
-* Prototype : nsfw_base_sendmsg
-* Description : linux sendmsg api
-* Input : int a
-* const struct msghdr *b
-* int flags
-* Output : None
-* Return Value : ssize_t
-* Calls :
-* Called By :
-*
-*****************************************************************************/
ssize_t nsfw_base_sendmsg(int a, const struct msghdr *b, int flags)
{
nsfw_call_ret(sendmsg, (a, b, flags))
}
-/*****************************************************************************
-* Prototype : nsfw_base_recvmsg
-* Description : linux recvmsg api
-* Input : int a
-* struct msghdr *b
-* int flags
-* Output : None
-* Return Value : ssize_t
-* Calls :
-* Called By :
-*
-*****************************************************************************/
ssize_t nsfw_base_recvmsg(int a, struct msghdr *b, int flags)
{
nsfw_call_ret(recvmsg, (a, b, flags))
}
-/*****************************************************************************
-* Prototype : nsfw_base_close
-* Description : linux close api
-* Input : int a
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
int nsfw_base_close(int a)
{
nsfw_call_ret(close, (a))
}
-/*****************************************************************************
-* Prototype : nsfw_base_select
-* Description : linux select api
-* Input : int a
-* fd_set *b
-* fd_set *c
-* fd_set *d
-* struct timeval *e
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*****************************************************************************/
int nsfw_base_select(int a, fd_set *b, fd_set *c, fd_set *d, struct timeval *e)
{
nsfw_call_ret(select, (a, b, c, d, e))
}
-/*****************************************************************************
-* Prototype : nsfw_base_ioctl
-* Description : linux ioctl api
-* Input : int a
-* unsigned long b
-* unsigned long c
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
int nsfw_base_ioctl(int a, unsigned long b, unsigned long c)
{
nsfw_call_ret(ioctl, (a, b, c))
}
-/*****************************************************************************
-* Prototype : nsfw_base_fcntl
-* Description : linux fcntl api
-* Input : int a
-* int b
-* unsigned long c
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
int nsfw_base_fcntl(int a, int b, unsigned long c)
{
nsfw_call_ret(fcntl, (a, b, c))
}
-/*****************************************************************************
-* Prototype : nsfw_base_epoll_create
-* Description : linux epoll_create api
-* Input : int a
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
int nsfw_base_epoll_create(int a)
{
nsfw_call_ret(epoll_create, (a))
}
-/*****************************************************************************
-* Prototype : nsfw_base_epoll_create1
-* Description : linux epoll_create1 api
-* Input : int a
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
int nsfw_base_epoll_create1(int a)
{
nsfw_call_ret(epoll_create1, (a))
}
-/*****************************************************************************
-* Prototype : nsfw_base_epoll_ctl
-* Description : linux epoll_ctl api
-* Input : int a
-* int b
-* int c
-* struct epoll_event *d
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
int nsfw_base_epoll_ctl(int a, int b, int c, struct epoll_event *d)
{
nsfw_call_ret(epoll_ctl, (a, b, c, d))
}
-/*****************************************************************************
-* Prototype : nsfw_base_epoll_wait
-* Description : linux epoll_wait api
-* Input : int a
-* struct epoll_event *b
-* int c
-* int d
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
int nsfw_base_epoll_wait(int a, struct epoll_event *b, int c, int d)
{
nsfw_call_ret(epoll_wait, (a, b, c, d))
}
-/*****************************************************************************
-* Prototype : nsfw_base_fork
-* Description : linux fork api
-* Input : void
-* Output : None
-* Return Value : pid_t
-* Calls :
-* Called By :
-*
-*****************************************************************************/
pid_t nsfw_base_fork(void)
{
nsfw_call_ret(fork, ())
diff --git a/src/framework/common/base/liblinuxapi/nsfw_lock_file.c b/src/framework/common/base/liblinuxapi/nsfw_lock_file.c
deleted file mode 100644
index cef8d95..0000000
--- a/src/framework/common/base/liblinuxapi/nsfw_lock_file.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-#include "types.h"
-#include "nstack_securec.h"
-#include "nsfw_init.h"
-#include "common_mem_api.h"
-
-#include "nstack_log.h"
-#include "nsfw_maintain_api.h"
-#include "nsfw_mgr_com_api.h"
-
-#include "nsfw_base_linux_api.h"
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C"{
-/* *INDENT-ON* */
-#endif /* __cplusplus */
-
-#define NSFW_FILE_PATH_LEN 128
-#define LOCK_FOLDER "/ip_module/"
-#define LOCK_SUFFIX ".pid"
-
-#define read_lock(fd, offset, whence, len) nsfw_lock_reg((fd), F_SETLK, F_RDLCK, (offset), (whence), (len))
-#define readw_lock(fd, offset, whence, len) nsfw_lock_reg((fd), F_SETLKW, F_RDLCK, (offset), (whence), (len))
-#define write_lock(fd, offset, whence, len) nsfw_lock_reg((fd), F_SETLK, F_WRLCK, (offset), (whence), (len))
-#define writew_lock(fd, offset, whence, len) nsfw_lock_reg((fd), F_SETLKW, F_WRLCK, (offset), (whence), (len))
-#define un_lock(fd, offset, whence, len) nsfw_lock_reg((fd), F_SETLK, F_UNLCK, (offset), (whence), (len))
-
-i32
-nsfw_lock_reg (i32 fd, i32 cmd, i32 type, off_t offset, i32 whence, off_t len)
-{
- struct flock lock_file;
- lock_file.l_type = type;
- lock_file.l_start = offset;
- lock_file.l_whence = whence;
- lock_file.l_len = len;
- return (fcntl (fd, cmd, &lock_file));
-}
-
-/*****************************************************************************
-* Prototype : nsfw_proc_start_with_lock
-* Description : lock file start
-* Input : u8 proc_type
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*****************************************************************************/
-i32
-nsfw_proc_start_with_lock (u8 proc_type)
-{
- NSFW_LOGINF ("lock_file init]type=%u", proc_type);
- char *module_name = nsfw_get_proc_name (proc_type);
- if (NULL == module_name)
- {
- NSFW_LOGERR ("proc type error]proc_type=%u", proc_type);
- return 0;
- }
-
- const char *directory = NSFW_DOMAIN_DIR;
- const char *home_dir = getenv ("HOME");
-
- if (getuid () != 0 && home_dir != NULL)
- {
- directory = home_dir;
- }
-
- int ret;
- char lock_fpath[NSFW_FILE_PATH_LEN] = { 0 };
- ret = STRCPY_S (lock_fpath, NSFW_FILE_PATH_LEN, directory);
- if (EOK != ret)
- {
- NSFW_LOGERR ("lock init STRCPY_S failed]ret=%d", ret);
- return -1;
- }
-
- nsfw_mgr_com_mkdir_domainpath (lock_fpath);
-
- ret = STRCAT_S (lock_fpath, NSFW_FILE_PATH_LEN, module_name);
- if (EOK != ret)
- {
- NSFW_LOGERR ("lock init STRCAT_S failed]ret=%d", ret);
- return -1;
- }
-
- ret = STRCAT_S (lock_fpath, NSFW_FILE_PATH_LEN, LOCK_SUFFIX);
- if (EOK != ret)
- {
- NSFW_LOGERR ("lock init STRCAT_S failed]ret=%d", ret);
- return -1;
- }
-
- i32 fd;
- if ((fd = open (lock_fpath, O_RDWR | O_CREAT, 0640)) == -1)
- { /* file permission no large than 0640 */
- NSFW_LOGERR ("open lock file error!]path=%s,error = %d", lock_fpath,
- errno);
- return -1;
- }
-
- int rc = nsfw_set_close_on_exec (fd);
- if (rc == -1)
- {
- (void) nsfw_base_close (fd);
- NSFW_LOGERR ("set exec err]fd=%d, errno=%d", fd, errno);
- return -1;
- }
-
- if (write_lock (fd, 0, SEEK_SET, 0) < 0)
- {
- (void) nsfw_base_close (fd);
- NSFW_LOGERR ("get lock file error!]path=%s,error = %d", lock_fpath,
- errno);
- return -1;
- }
-
- char buf[32] = { 0 };
- if (ftruncate (fd, 0) < 0)
- {
- (void) nsfw_base_close (fd);
- NSFW_LOGERR ("ftruncate file error!]path=%s,error = %d", lock_fpath,
- errno);
- return -1;
- }
-
- ret =
- SNPRINTF_S (buf, sizeof (buf), sizeof (buf) - 1, "%ld", (long) getpid ());
- if (-1 == ret)
- {
- NSTCP_LOGERR ("SNPRINTF_S failed]ret=%d", ret);
- (void) nsfw_base_close (fd);
- return -1;
- }
-
- if (write (fd, buf, strlen (buf) + 1) < 0)
- {
- (void) nsfw_base_close (fd);
- NSFW_LOGERR ("write file error!]path=%s,error = %d", lock_fpath, errno);
- return -1;
- }
-
- return 0;
-}
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif /* __cplusplus */
diff --git a/src/framework/common/data_struct/eprb_tree.c b/src/framework/common/data_struct/eprb_tree.c
index c8e616d..81ac846 100644
--- a/src/framework/common/data_struct/eprb_tree.c
+++ b/src/framework/common/data_struct/eprb_tree.c
@@ -15,6 +15,7 @@
*/
#include "eprb_tree.h"
+#include "nsfw_mem_api.h"
#ifdef __cplusplus
/* *INDENT-OFF* */
@@ -25,464 +26,455 @@ extern "C" {
/*
* This function returns the first node (in sort order) of the tree.
*/
-struct ep_rb_node *
-ep_rb_first (const struct ep_rb_root *root)
+struct ep_rb_node *ep_rb_first(const struct ep_rb_root *root)
{
- if (NULL == root)
- return NULL;
+ if (NULL == root)
+ return NULL;
- struct ep_rb_node *n;
- n = (struct ep_rb_node *) ADDR_SHTOL (root->rb_node);
+ struct ep_rb_node *n;
- if (!n)
+ n = (struct ep_rb_node *) SHMEM_ADDR_SHTOL(root->rb_node);
+
+ if (!n)
{
- return NULL;
+ return NULL;
}
- while (n->rb_left)
+ while (n->rb_left)
{
- n = (struct ep_rb_node *) ADDR_SHTOL (n->rb_left);
+ n = (struct ep_rb_node *) SHMEM_ADDR_SHTOL(n->rb_left);
}
- return n;
+ return n;
}
-void
-__ep_rb_rotate_left (struct ep_rb_node *X, struct ep_rb_root *root)
+void __ep_rb_rotate_left(struct ep_rb_node *X, struct ep_rb_root *root)
{
/**************************
* rotate Node X to left *
**************************/
- struct ep_rb_node *Y = (struct ep_rb_node *) ADDR_SHTOL (X->rb_right);
- /* establish X->Right link */
- X->rb_right = Y->rb_left;
+ struct ep_rb_node *Y =
+ (struct ep_rb_node *) SHMEM_ADDR_SHTOL(X->rb_right);
+
+ /* estblish X->Right link */
+ X->rb_right = Y->rb_left;
- if (Y->rb_left != NULL)
+ if (Y->rb_left != NULL)
{
- ((struct ep_rb_node *) ADDR_SHTOL (Y->rb_left))->rb_parent =
- (struct ep_rb_node *) ADDR_LTOSH_EXT (X);
+ ((struct ep_rb_node *) SHMEM_ADDR_SHTOL(Y->rb_left))->rb_parent =
+ (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(X);
}
- /* establish Y->Parent link */
- Y->rb_parent = X->rb_parent;
+ /* estblish Y->Parent link */
+ Y->rb_parent = X->rb_parent;
- if (X->rb_parent)
+ if (X->rb_parent)
{
- struct ep_rb_node *xParent =
- (struct ep_rb_node *) ADDR_SHTOL (X->rb_parent);
+ struct ep_rb_node *xParent =
+ (struct ep_rb_node *) SHMEM_ADDR_SHTOL(X->rb_parent);
- if (X == ADDR_SHTOL (xParent->rb_left))
+ if (X == SHMEM_ADDR_SHTOL(xParent->rb_left))
{
- xParent->rb_left = (struct ep_rb_node *) ADDR_LTOSH_EXT (Y);
+ xParent->rb_left = (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(Y);
}
- else
+ else
{
- xParent->rb_right = (struct ep_rb_node *) ADDR_LTOSH_EXT (Y);
+ xParent->rb_right = (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(Y);
}
}
- else
+ else
{
- root->rb_node = (struct ep_rb_node *) ADDR_LTOSH_EXT (Y);
+ root->rb_node = (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(Y);
}
- /* link X and Y */
- Y->rb_left = (struct ep_rb_node *) ADDR_LTOSH_EXT (X);
- X->rb_parent = (struct ep_rb_node *) ADDR_LTOSH_EXT (Y);
+ /* link X and Y */
+ Y->rb_left = (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(X);
+ X->rb_parent = (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(Y);
- return;
+ return;
}
-void
-__ep_rb_rotate_right (struct ep_rb_node *X, struct ep_rb_root *root)
+void __ep_rb_rotate_right(struct ep_rb_node *X, struct ep_rb_root *root)
{
/****************************
* rotate Node X to right *
****************************/
- struct ep_rb_node *Y = (struct ep_rb_node *) ADDR_SHTOL (X->rb_left);
- /* establish X->Left link */
- X->rb_left = Y->rb_right;
+ struct ep_rb_node *Y = (struct ep_rb_node *) SHMEM_ADDR_SHTOL(X->rb_left);
- if (Y->rb_right != NULL)
+ /* estblish X->Left link */
+ X->rb_left = Y->rb_right;
+
+ if (Y->rb_right != NULL)
{
- ((struct ep_rb_node *) ADDR_SHTOL (Y->rb_right))->rb_parent =
- (struct ep_rb_node *) ADDR_LTOSH_EXT (X);
+ ((struct ep_rb_node *) SHMEM_ADDR_SHTOL(Y->rb_right))->rb_parent =
+ (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(X);
}
- /* establish Y->Parent link */
- Y->rb_parent = X->rb_parent;
+ /* estblish Y->Parent link */
+ Y->rb_parent = X->rb_parent;
- if (X->rb_parent)
+ if (X->rb_parent)
{
- struct ep_rb_node *xParent =
- (struct ep_rb_node *) ADDR_SHTOL (X->rb_parent);
+ struct ep_rb_node *xParent =
+ (struct ep_rb_node *) SHMEM_ADDR_SHTOL(X->rb_parent);
- if (X == (struct ep_rb_node *) ADDR_SHTOL (xParent->rb_right))
+ if (X == (struct ep_rb_node *) SHMEM_ADDR_SHTOL(xParent->rb_right))
{
- xParent->rb_right = (struct ep_rb_node *) ADDR_LTOSH_EXT (Y);
+ xParent->rb_right = (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(Y);
}
- else
+ else
{
- xParent->rb_left = (struct ep_rb_node *) ADDR_LTOSH_EXT (Y);
+ xParent->rb_left = (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(Y);
}
}
- else
+ else
+ {
+ root->rb_node = (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(Y);
+ }
+
+ /* link X and Y */
+ Y->rb_right = (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(X);
+ X->rb_parent = (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(Y);
+
+ return;
+}
+
+static inline int __ep_rb_is_color_local(struct ep_rb_node *node, int color)
+{
+ return (!node || node->color == color);
+}
+
+static inline int __ep_rb_is_color(struct ep_rb_node *node, int color)
+{
+ return (!node
+ || ((struct ep_rb_node *) SHMEM_ADDR_SHTOL(node))->color ==
+ color);
+}
+
+static inline void __ep_rb_set_color(struct ep_rb_node *node, int color)
+{
+ if (node != NULL)
{
- root->rb_node = (struct ep_rb_node *) ADDR_LTOSH_EXT (Y);
+ ((struct ep_rb_node *) SHMEM_ADDR_SHTOL(node))->color = color;
}
+}
- /* link X and Y */
- Y->rb_right = (struct ep_rb_node *) ADDR_LTOSH_EXT (X);
- X->rb_parent = (struct ep_rb_node *) ADDR_LTOSH_EXT (Y);
+/* Oops... What's the proper name? */
+static inline void __ep_rb_adjust(struct ep_rb_node *X,
+ struct ep_rb_root *root,
+ struct ep_rb_node *node)
+{
+ struct ep_rb_node *Parent =
+ (struct ep_rb_node *) SHMEM_ADDR_SHTOL(node->rb_parent);
+ if (Parent)
+ {
+ if (Parent->rb_left ==
+ (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(node))
+ {
+ Parent->rb_left = (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(X);
+ }
+ else
+ {
+ Parent->rb_right = (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(X);
+ }
+ }
+ else
+ {
+ root->rb_node = (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(X);
+ }
- return;
}
-#define EP_RBTREE_PARENT(X) ((struct ep_rb_node*) ADDR_SHTOL((X)->rb_parent))
+#define EP_RBTREE_PARENT(X) ((struct ep_rb_node*) SHMEM_ADDR_SHTOL((X)->rb_parent))
#define EP_RBTREE_GRANDF(X) EP_RBTREE_PARENT(EP_RBTREE_PARENT(X))
/* X, Y are for application */
-void
-ep_rb_insert_color (struct ep_rb_node *X, struct ep_rb_root *root)
+void ep_rb_insert_color(struct ep_rb_node *X, struct ep_rb_root *root)
{
/*************************************
* maintain red-black tree balance *
* after inserting node X *
*************************************/
- /* check red-black properties */
- while (X != (struct ep_rb_node *) ADDR_SHTOL (root->rb_node)
- && EP_RBTREE_PARENT (X)->color == EP_RB_RED)
+
+ /* check red-black properties */
+ while (X != (struct ep_rb_node *) SHMEM_ADDR_SHTOL(root->rb_node)
+ && EP_RBTREE_PARENT(X)->color == EP_RB_RED)
{
- /* we have a violation */
- if (X->rb_parent == EP_RBTREE_GRANDF (X)->rb_left)
+ /* we have a violation */
+ if (X->rb_parent == EP_RBTREE_GRANDF(X)->rb_left)
{
- struct ep_rb_node *Y =
- (struct ep_rb_node *) ADDR_SHTOL (EP_RBTREE_GRANDF (X)->rb_right);
+ struct ep_rb_node *Y =
+ (struct ep_rb_node *)
+ SHMEM_ADDR_SHTOL(EP_RBTREE_GRANDF(X)->rb_right);
- if (Y && Y->color == EP_RB_RED)
+ if (!__ep_rb_is_color_local(Y, EP_RB_BLACK))
{
- /* uncle is red */
- EP_RBTREE_PARENT (X)->color = EP_RB_BLACK;
- Y->color = EP_RB_BLACK;
- EP_RBTREE_GRANDF (X)->color = EP_RB_RED;
- X = EP_RBTREE_GRANDF (X);
+ /* uncle is red */
+ EP_RBTREE_PARENT(X)->color = EP_RB_BLACK;
+ Y->color = EP_RB_BLACK;
+ EP_RBTREE_GRANDF(X)->color = EP_RB_RED;
+ X = EP_RBTREE_GRANDF(X);
}
- else
+ else
{
- /* uncle is black */
- if (X ==
- (struct ep_rb_node *)
- ADDR_SHTOL (EP_RBTREE_PARENT (X)->rb_right))
+ /* uncle is black */
+ if (X ==
+ (struct ep_rb_node *)
+ SHMEM_ADDR_SHTOL(EP_RBTREE_PARENT(X)->rb_right))
{
- /* make X a left child */
- X = EP_RBTREE_PARENT (X);
- __ep_rb_rotate_left (X, root);
+ /* make X a left child */
+ X = EP_RBTREE_PARENT(X);
+ __ep_rb_rotate_left(X, root);
}
- /* recolor and rotate */
- EP_RBTREE_PARENT (X)->color = EP_RB_BLACK;
- EP_RBTREE_GRANDF (X)->color = EP_RB_RED;
- __ep_rb_rotate_right (EP_RBTREE_GRANDF (X), root);
+ /* recolor and rotate */
+ EP_RBTREE_PARENT(X)->color = EP_RB_BLACK;
+ EP_RBTREE_GRANDF(X)->color = EP_RB_RED;
+ __ep_rb_rotate_right(EP_RBTREE_GRANDF(X), root);
}
}
- else
+ else
{
- /* mirror image of above code */
- struct ep_rb_node *Y =
- (struct ep_rb_node *) ADDR_SHTOL (EP_RBTREE_GRANDF (X)->rb_left);
+ /* miror image of above code */
+ struct ep_rb_node *Y =
+ (struct ep_rb_node *)
+ SHMEM_ADDR_SHTOL(EP_RBTREE_GRANDF(X)->rb_left);
- if (Y && (Y->color == EP_RB_RED))
+ if (!__ep_rb_is_color_local(Y, EP_RB_BLACK))
{
- /* uncle is red */
- EP_RBTREE_PARENT (X)->color = EP_RB_BLACK;
- Y->color = EP_RB_BLACK;
- EP_RBTREE_GRANDF (X)->color = EP_RB_RED;
- X = EP_RBTREE_GRANDF (X);
+ /* uncle is red */
+ EP_RBTREE_PARENT(X)->color = EP_RB_BLACK;
+ Y->color = EP_RB_BLACK;
+ EP_RBTREE_GRANDF(X)->color = EP_RB_RED;
+ X = EP_RBTREE_GRANDF(X);
}
- else
+ else
{
- /* uncle is black */
- if (X ==
- (struct ep_rb_node *)
- ADDR_SHTOL (EP_RBTREE_PARENT (X)->rb_left))
+ /* uncle is black */
+ if (X ==
+ (struct ep_rb_node *)
+ SHMEM_ADDR_SHTOL(EP_RBTREE_PARENT(X)->rb_left))
{
- X = EP_RBTREE_PARENT (X);
- __ep_rb_rotate_right (X, root);
+ X = EP_RBTREE_PARENT(X);
+ __ep_rb_rotate_right(X, root);
}
- EP_RBTREE_PARENT (X)->color = EP_RB_BLACK;
- EP_RBTREE_GRANDF (X)->color = EP_RB_RED;
- __ep_rb_rotate_left (EP_RBTREE_GRANDF (X), root);
+ EP_RBTREE_PARENT(X)->color = EP_RB_BLACK;
+ EP_RBTREE_GRANDF(X)->color = EP_RB_RED;
+ __ep_rb_rotate_left(EP_RBTREE_GRANDF(X), root);
}
}
}
- ((struct ep_rb_node *) ADDR_SHTOL (root->rb_node))->color = EP_RB_BLACK;
+ ((struct ep_rb_node *) SHMEM_ADDR_SHTOL(root->rb_node))->color =
+ EP_RB_BLACK;
- return;
+ return;
}
-void
-__ep_rb_erase_color (struct ep_rb_node *X, struct ep_rb_node *Parent,
- struct ep_rb_root *root)
+void __ep_rb_erase_color(struct ep_rb_node *X, struct ep_rb_node *Parent,
+ struct ep_rb_root *root)
{
/*************************************
* maintain red-black tree balance *
* after deleting node X *
*************************************/
- while (X != (struct ep_rb_node *) ADDR_SHTOL (root->rb_node)
- && (!X || X->color == EP_RB_BLACK))
+
+ while (X != (struct ep_rb_node *) SHMEM_ADDR_SHTOL(root->rb_node)
+ && __ep_rb_is_color_local(X, EP_RB_BLACK))
{
- if (Parent == NULL)
+ if (Parent == NULL)
{
- break;
+ break;
}
- if (X == (struct ep_rb_node *) ADDR_SHTOL (Parent->rb_left))
+ if (X == (struct ep_rb_node *) SHMEM_ADDR_SHTOL(Parent->rb_left))
{
- struct ep_rb_node *W =
- (struct ep_rb_node *) ADDR_SHTOL (Parent->rb_right);
+ struct ep_rb_node *W =
+ (struct ep_rb_node *) SHMEM_ADDR_SHTOL(Parent->rb_right);
- if (W->color == EP_RB_RED)
+ if (W->color == EP_RB_RED)
{
- W->color = EP_RB_BLACK;
- Parent->color = EP_RB_RED; /* Parent != NIL? */
- __ep_rb_rotate_left (Parent, root);
- W = (struct ep_rb_node *) ADDR_SHTOL (Parent->rb_right);
+ W->color = EP_RB_BLACK;
+ Parent->color = EP_RB_RED; /* Parent != NIL? */
+ __ep_rb_rotate_left(Parent, root);
+ W = (struct ep_rb_node *) SHMEM_ADDR_SHTOL(Parent->rb_right);
}
- if ((!W->rb_left
- || ((struct ep_rb_node *) ADDR_SHTOL (W->rb_left))->color ==
- EP_RB_BLACK) && (!W->rb_right
- || ((struct ep_rb_node *)
- ADDR_SHTOL (W->rb_right))->color ==
- EP_RB_BLACK))
+ if (__ep_rb_is_color(W->rb_left, EP_RB_BLACK)
+ && __ep_rb_is_color(W->rb_right, EP_RB_BLACK))
{
- W->color = EP_RB_RED;
- X = Parent;
- Parent = (struct ep_rb_node *) ADDR_SHTOL (X->rb_parent);
+ W->color = EP_RB_RED;
+ X = Parent;
+ Parent = (struct ep_rb_node *) SHMEM_ADDR_SHTOL(X->rb_parent);
}
- else
+ else
{
- if (!W->rb_right
- || ((struct ep_rb_node *) ADDR_SHTOL (W->rb_right))->color
- == EP_RB_BLACK)
+ if (__ep_rb_is_color(W->rb_right, EP_RB_BLACK))
{
- if (W->rb_left != NULL)
- {
- ((struct ep_rb_node *) ADDR_SHTOL (W->rb_left))->color
- = EP_RB_BLACK;
- }
-
- W->color = EP_RB_RED;
- __ep_rb_rotate_right (W, root);
- W = (struct ep_rb_node *) ADDR_SHTOL (Parent->rb_right);
+ __ep_rb_set_color(W->rb_left, EP_RB_BLACK);
+
+ W->color = EP_RB_RED;
+ __ep_rb_rotate_right(W, root);
+ W = (struct ep_rb_node *)
+ SHMEM_ADDR_SHTOL(Parent->rb_right);
}
- W->color = Parent->color;
- Parent->color = EP_RB_BLACK;
+ W->color = Parent->color;
+ Parent->color = EP_RB_BLACK;
- if (((struct ep_rb_node *) ADDR_SHTOL (W->rb_right))->color !=
- EP_RB_BLACK)
- {
- ((struct ep_rb_node *) ADDR_SHTOL (W->rb_right))->color =
- EP_RB_BLACK;
- }
+ ((struct ep_rb_node *) SHMEM_ADDR_SHTOL(W->rb_right))->color
+ = EP_RB_BLACK;
- __ep_rb_rotate_left (Parent, root);
- X = (struct ep_rb_node *) ADDR_SHTOL (root->rb_node);
- break;
+ __ep_rb_rotate_left(Parent, root);
+ X = (struct ep_rb_node *) SHMEM_ADDR_SHTOL(root->rb_node);
+ break;
}
}
- else
+ else
{
- struct ep_rb_node *W =
- (struct ep_rb_node *) ADDR_SHTOL (Parent->rb_left);
+ struct ep_rb_node *W =
+ (struct ep_rb_node *) SHMEM_ADDR_SHTOL(Parent->rb_left);
- if (W->color == EP_RB_RED)
+ if (W->color == EP_RB_RED)
{
- W->color = EP_RB_BLACK;
- Parent->color = EP_RB_RED; /* Parent != NIL? */
- __ep_rb_rotate_right (Parent, root);
- W = (struct ep_rb_node *) ADDR_SHTOL (Parent->rb_left);
+ W->color = EP_RB_BLACK;
+ Parent->color = EP_RB_RED; /* Parent != NIL? */
+ __ep_rb_rotate_right(Parent, root);
+ W = (struct ep_rb_node *) SHMEM_ADDR_SHTOL(Parent->rb_left);
}
- if ((!W->rb_left
- || (((struct ep_rb_node *) ADDR_SHTOL (W->rb_left))->color ==
- EP_RB_BLACK)) && (!W->rb_right
- ||
- (((struct ep_rb_node *)
- ADDR_SHTOL (W->rb_right))->color ==
- EP_RB_BLACK)))
+ if (__ep_rb_is_color(W->rb_left, EP_RB_BLACK)
+ && __ep_rb_is_color(W->rb_right, EP_RB_BLACK))
{
- W->color = EP_RB_RED;
- X = Parent;
- Parent = (struct ep_rb_node *) ADDR_SHTOL (X->rb_parent);
+ W->color = EP_RB_RED;
+ X = Parent;
+ Parent = (struct ep_rb_node *) SHMEM_ADDR_SHTOL(X->rb_parent);
}
- else
+ else
{
- if (!W->rb_left
- || ((struct ep_rb_node *) ADDR_SHTOL (W->rb_left))->color
- == EP_RB_BLACK)
+ if (__ep_rb_is_color(W->rb_left, EP_RB_BLACK))
{
- if (W->rb_right != NULL)
- {
- ((struct ep_rb_node *)
- ADDR_SHTOL (W->rb_right))->color = EP_RB_BLACK;
- }
-
- W->color = EP_RB_RED;
- __ep_rb_rotate_left (W, root);
- W = (struct ep_rb_node *) ADDR_SHTOL (Parent->rb_left);
+ __ep_rb_set_color(W->rb_right, EP_RB_BLACK);
+ W->color = EP_RB_RED;
+ __ep_rb_rotate_left(W, root);
+ W = (struct ep_rb_node *)
+ SHMEM_ADDR_SHTOL(Parent->rb_left);
}
- W->color = Parent->color;
- Parent->color = EP_RB_BLACK;
+ W->color = Parent->color;
+ Parent->color = EP_RB_BLACK;
- if (((struct ep_rb_node *) ADDR_SHTOL (W->rb_left))->color !=
- EP_RB_BLACK)
- {
- ((struct ep_rb_node *) ADDR_SHTOL (W->rb_left))->color =
+ ((struct ep_rb_node *) SHMEM_ADDR_SHTOL(W->rb_left))->color =
EP_RB_BLACK;
- }
- __ep_rb_rotate_right (Parent, root);
- X = (struct ep_rb_node *) ADDR_SHTOL (root->rb_node);
- break;
+ __ep_rb_rotate_right(Parent, root);
+ X = (struct ep_rb_node *) SHMEM_ADDR_SHTOL(root->rb_node);
+ break;
}
}
}
- if (X)
+ if (X)
{
- X->color = EP_RB_BLACK;
+ X->color = EP_RB_BLACK;
}
- return;
+ return;
}
-void
-ep_rb_erase (struct ep_rb_node *node, struct ep_rb_root *root)
+void ep_rb_erase(struct ep_rb_node *node, struct ep_rb_root *root)
{
- struct ep_rb_node *child, *parent;
- int color;
+ struct ep_rb_node *child, *parent;
+ int color;
- if (!node->rb_left)
+ if (!node->rb_left)
{
- child = (struct ep_rb_node *) ADDR_SHTOL (node->rb_right);
+ child = (struct ep_rb_node *) SHMEM_ADDR_SHTOL(node->rb_right);
}
- else if (!node->rb_right)
+ else if (!node->rb_right)
{
- child = (struct ep_rb_node *) ADDR_SHTOL (node->rb_left);
+ child = (struct ep_rb_node *) SHMEM_ADDR_SHTOL(node->rb_left);
}
- else
+ else
{
- struct ep_rb_node *old = node, *left;
+ struct ep_rb_node *old = node, *left;
- node = (struct ep_rb_node *) ADDR_SHTOL (node->rb_right);
+ node = (struct ep_rb_node *) SHMEM_ADDR_SHTOL(node->rb_right);
- while ((left =
- (struct ep_rb_node *) ADDR_SHTOL (node->rb_left)) != NULL)
+ while ((left =
+ (struct ep_rb_node *) SHMEM_ADDR_SHTOL(node->rb_left)) !=
+ NULL)
{
- node = left;
+ node = left;
}
- if (old->rb_parent)
- {
- struct ep_rb_node *oldParent =
- (struct ep_rb_node *) ADDR_SHTOL (old->rb_parent);
-
- if (oldParent->rb_left ==
- (struct ep_rb_node *) ADDR_LTOSH_EXT (old))
- {
- oldParent->rb_left =
- (struct ep_rb_node *) ADDR_LTOSH_EXT (node);
- }
- else
- {
- oldParent->rb_right =
- (struct ep_rb_node *) ADDR_LTOSH_EXT (node);
- }
- }
- else
- {
- root->rb_node = (struct ep_rb_node *) ADDR_LTOSH_EXT (node);
- }
+ __ep_rb_adjust(node, root, old);
- child = (struct ep_rb_node *) ADDR_SHTOL (node->rb_right);
- parent = (struct ep_rb_node *) ADDR_SHTOL (node->rb_parent);
- color = node->color;
+ child = (struct ep_rb_node *) SHMEM_ADDR_SHTOL(node->rb_right);
+ parent = (struct ep_rb_node *) SHMEM_ADDR_SHTOL(node->rb_parent);
+ color = node->color;
- if (parent == old)
+ if (parent == old)
{
- parent = node;
+ parent = node;
}
- else
+ else
{
- if (child)
+ if (child)
{
- child->rb_parent =
- (struct ep_rb_node *) ADDR_LTOSH_EXT (parent);
+ child->rb_parent =
+ (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(parent);
}
- parent->rb_left = (struct ep_rb_node *) ADDR_LTOSH_EXT (child);
+ parent->rb_left =
+ (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(child);
- node->rb_right = old->rb_right;
- ((struct ep_rb_node *) ADDR_SHTOL (old->rb_right))->rb_parent =
- (struct ep_rb_node *) ADDR_LTOSH_EXT (node);
+ node->rb_right = old->rb_right;
+ ((struct ep_rb_node *)
+ SHMEM_ADDR_SHTOL(old->rb_right))->rb_parent =
+(struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(node);
}
- node->color = old->color;
- node->rb_parent = old->rb_parent;
- node->rb_left = old->rb_left;
- ((struct ep_rb_node *) ADDR_SHTOL (old->rb_left))->rb_parent =
- (struct ep_rb_node *) ADDR_LTOSH_EXT (node);
+ node->color = old->color;
+ node->rb_parent = old->rb_parent;
+ node->rb_left = old->rb_left;
+ ((struct ep_rb_node *) SHMEM_ADDR_SHTOL(old->rb_left))->rb_parent =
+ (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(node);
- if (color == EP_RB_BLACK)
+ if (color == EP_RB_BLACK)
{
- __ep_rb_erase_color (child, parent, root);
+ __ep_rb_erase_color(child, parent, root);
}
- return;
+ return;
}
- parent = (struct ep_rb_node *) ADDR_SHTOL (node->rb_parent);
- color = node->color;
+ parent = (struct ep_rb_node *) SHMEM_ADDR_SHTOL(node->rb_parent);
+ color = node->color;
- if (child)
+ if (child)
{
- child->rb_parent = (struct ep_rb_node *) ADDR_LTOSH_EXT (parent);
+ child->rb_parent = (struct ep_rb_node *) SHMEM_ADDR_LTOSH_EXT(parent);
}
- if (parent)
- {
- if (parent->rb_left == (struct ep_rb_node *) ADDR_LTOSH_EXT (node))
- {
- parent->rb_left = (struct ep_rb_node *) ADDR_LTOSH_EXT (child);
- }
- else
- {
- parent->rb_right = (struct ep_rb_node *) ADDR_LTOSH_EXT (child);
- }
- }
- else
- {
- root->rb_node = (struct ep_rb_node *) ADDR_LTOSH_EXT (child);
- }
+ __ep_rb_adjust(child, root, node);
- if (color == EP_RB_BLACK)
+ if (color == EP_RB_BLACK)
{
- __ep_rb_erase_color (child, parent, root);
+ __ep_rb_erase_color(child, parent, root);
}
- return;
+
+ return;
}
#ifdef __cplusplus
diff --git a/src/framework/common/data_struct/list.c b/src/framework/common/data_struct/list.c
index d9ea5a4..ccdb039 100644
--- a/src/framework/common/data_struct/list.c
+++ b/src/framework/common/data_struct/list.c
@@ -17,87 +17,80 @@
#include "list.h"
/**
- * function-name : list_empty
- * description : tests whether a list is empty
- * parameter @head : the list to test.
+ * list_empty - tests whether a list is empty
+ * @head: the list to test.
*/
-inline int
-list_empty (const struct list_head *head_of_list)
+inline int list_empty(const struct list_head *head)
{
- return head_of_list->next == head_of_list;
+ return head->next == head;
}
-inline void
-list_del (struct list_head *entry)
+inline void list_del(struct list_head *entry)
{
- if (entry->prev == NULL || entry->next == NULL)
+ if (entry->prev == NULL || entry->next == NULL)
{
- return;
+ return;
}
- entry->next->prev = entry->prev;
- entry->prev->next = entry->next;
- entry->next = NULL;
- entry->prev = NULL;
+ entry->next->prev = entry->prev;
+ entry->prev->next = entry->next;
+ entry->next = NULL;
+ entry->prev = NULL;
}
/*get the first element of the list, need to check if list empty or not before calling this.*/
-inline struct list_head *
-list_get_first (struct list_head *head)
+inline struct list_head *list_get_first(struct list_head *head)
{
- return head->next;
+ return head->next;
}
-inline void
-list_add (struct list_head *newp, struct list_head *head)
+inline void list_add(struct list_head *newp, struct list_head *head)
{
- head->next->prev = newp;
- newp->next = head->next;
- newp->prev = head;
- head->next = newp;
+ head->next->prev = newp;
+ newp->next = head->next;
+ newp->prev = head;
+ head->next = newp;
}
-inline void
-list_link (struct list_head *newhead, struct list_head *head)
+inline void list_link(struct list_head *newhead, struct list_head *head)
{
- struct list_head *tmp;
+ struct list_head *tmp;
- newhead->prev->next = head;
- head->prev->next = newhead;
+ newhead->prev->next = head;
+ head->prev->next = newhead;
- tmp = newhead->prev;
- newhead->prev = head->prev;
- head->prev = tmp;
+ tmp = newhead->prev;
+ newhead->prev = head->prev;
+ head->prev = tmp;
}
-inline void
-list_add_tail (struct list_head *newp, struct list_head *head)
+inline void list_add_tail(struct list_head *newp, struct list_head *head)
{
- list_add (newp, head->prev);
+ list_add(newp, head->prev);
}
-inline void
-hlist_del_init (struct hlist_node *n)
+inline void hlist_del_init(struct hlist_node *n)
{
- struct hlist_node *next_node = n->next;
- struct hlist_node **pprev = n->pprev;
+ struct hlist_node *next = n->next;
+ struct hlist_node **pprev = n->pprev;
- if (pprev == NULL && next_node == NULL)
+ if (pprev == NULL && next == NULL)
{
- return;
+ return;
}
- if (pprev)
+ /*null pointer validation already done. */
+ if (pprev)
{
- *pprev = next_node;
+ *pprev = next;
}
- if (next_node)
+ if (next)
{
- next_node->pprev = pprev;
+ next->pprev = pprev;
}
- n->next = NULL;
- n->pprev = NULL;
+ n->next = NULL;
+ n->pprev = NULL;
}
/**
@@ -107,13 +100,12 @@ hlist_del_init (struct hlist_node *n)
* @n: new node
* @next: node in the hlist
*/
-inline void
-hlist_add_before (struct hlist_node *node, struct hlist_node *next)
+inline void hlist_add_before(struct hlist_node *n, struct hlist_node *next)
{
- node->pprev = next->pprev;
- node->next = next;
- next->pprev = &node->next;
- *(node->pprev) = node;
+ n->pprev = next->pprev;
+ n->next = next;
+ next->pprev = &n->next;
+ *(n->pprev) = n;
}
/**
@@ -123,42 +115,38 @@ hlist_add_before (struct hlist_node *node, struct hlist_node *next)
* @n: node in the hlist
* @next: new node
*/
-inline void
-hlist_add_after (struct hlist_node *node, struct hlist_node *next)
+inline void hlist_add_after(struct hlist_node *n, struct hlist_node *next)
{
- next->next = node->next;
- node->next = next;
- next->pprev = &node->next;
- if (next->next)
+ next->next = n->next;
+ n->next = next;
+ next->pprev = &n->next;
+ if (next->next)
{
- next->next->pprev = &next->next;
+ next->next->pprev = &next->next;
}
}
/* add after the head */
-inline void
-hlist_add_head (struct hlist_node *node, struct hlist_head *h)
+inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h)
{
- struct hlist_node *first = h->first;
+ struct hlist_node *first = h->first;
- node->next = first;
- if (first)
+ n->next = first;
+ if (first)
{
- first->pprev = &node->next;
+ first->pprev = &n->next;
}
- h->first = node;
- node->pprev = &h->first;
+ h->first = n;
+ n->pprev = &h->first;
}
-inline int
-hlist_unhashed (const struct hlist_node *node)
+inline int hlist_unhashed(const struct hlist_node *h)
{
- return !node->pprev;
+ return !h->pprev;
}
-inline int
-hlist_empty (const struct hlist_head *node)
+inline int hlist_empty(const struct hlist_head *h)
{
- return !node->first;
+ return !h->first;
}
diff --git a/src/framework/common/data_struct/pidinfo.c b/src/framework/common/data_struct/pidinfo.c
index 08e551f..3095c0d 100644
--- a/src/framework/common/data_struct/pidinfo.c
+++ b/src/framework/common/data_struct/pidinfo.c
@@ -17,109 +17,105 @@
#include "pidinfo.h"
#include "nstack_securec.h"
-inline i32
-nsfw_pidinfo_init (nsfw_pidinfo * pidinfo)
+inline i32 nsfw_pidinfo_init(nsfw_pidinfo * pidinfo)
{
- int retVal =
- MEMSET_S (pidinfo, sizeof (nsfw_pidinfo), 0, sizeof (nsfw_pidinfo));
- if (EOK != retVal)
+ /*add return value check */
+ int retVal =
+ memset_s(pidinfo, sizeof(nsfw_pidinfo), 0, sizeof(nsfw_pidinfo));
+ if (EOK != retVal)
{
- return -1;
+ return -1;
}
- return 0;
+ return 0;
}
-inline int
-nsfw_add_pid (nsfw_pidinfo * pidinfo, u32 pid)
+inline int nsfw_add_pid(nsfw_pidinfo * pidinfo, u32 pid)
{
- u32 i;
+ u32 i;
- for (i = 0; i < NSFW_MAX_FORK_NUM; i++)
+ for (i = 0; i < NSFW_MAX_FORK_NUM; i++)
{
- if ((0 == pidinfo->apid[i])
- && (__sync_bool_compare_and_swap (&pidinfo->apid[i], 0, pid)))
+
+ if ((0 == pidinfo->apid[i])
+ && (__sync_bool_compare_and_swap(&pidinfo->apid[i], 0, pid)))
{
- if (pidinfo->used_size < i + 1)
+ if (pidinfo->used_size < i + 1)
{
- pidinfo->used_size = i + 1;
+ pidinfo->used_size = i + 1;
}
- return 0;
+ return 0;
}
}
- return -1;
+ return -1;
}
-inline int
-nsfw_del_pid (nsfw_pidinfo * pidinfo, u32 pid)
+inline int nsfw_del_pid(nsfw_pidinfo * pidinfo, u32 pid)
{
- u32 i;
+ u32 i;
- for (i = 0; i < pidinfo->used_size && i < NSFW_MAX_FORK_NUM; i++)
+ for (i = 0; i < pidinfo->used_size && i < NSFW_MAX_FORK_NUM; i++)
{
- if (pid == pidinfo->apid[i])
+ if (pid == pidinfo->apid[i])
{
- pidinfo->apid[i] = 0;
- return 0;
+ pidinfo->apid[i] = 0;
+ return 0;
}
}
- return -1;
+ return -1;
}
-inline int
-nsfw_del_last_pid (nsfw_pidinfo * pidinfo, u32 pid)
+inline int nsfw_del_last_pid(nsfw_pidinfo * pidinfo, u32 pid)
{
- u32 i;
- int count = 0;
- int deleted = 0;
- for (i = 0; i < pidinfo->used_size && i < NSFW_MAX_FORK_NUM; i++)
+ u32 i;
+ int count = 0;
+ int deleted = 0;
+ for (i = 0; i < pidinfo->used_size && i < NSFW_MAX_FORK_NUM; i++)
{
- if (pid == pidinfo->apid[i])
+ if (pid == pidinfo->apid[i])
{
- pidinfo->apid[i] = 0;
- deleted = 1;
- continue;
+ pidinfo->apid[i] = 0;
+ deleted = 1;
+ continue;
}
- if (pidinfo->apid[i] != 0)
+ if (pidinfo->apid[i] != 0)
{
- ++count;
+ ++count;
}
}
- if (!deleted)
+ if (!deleted)
{
- return -1;
+ return -1;
}
- return count;
+ return count;
}
-inline int
-nsfw_pid_exist (nsfw_pidinfo * pidinfo, u32 pid)
+inline int nsfw_pid_exist(nsfw_pidinfo * pidinfo, u32 pid)
{
- u32 i;
+ u32 i;
- for (i = 0; i < pidinfo->used_size && i < NSFW_MAX_FORK_NUM; i++)
+ for (i = 0; i < pidinfo->used_size && i < NSFW_MAX_FORK_NUM; i++)
{
- if (pid == pidinfo->apid[i])
+ if (pid == pidinfo->apid[i])
{
- return 1;
+ return 1;
}
}
- return 0;
+ return 0;
}
-inline int
-nsfw_pidinfo_empty (nsfw_pidinfo * pidinfo)
+inline int nsfw_pidinfo_empty(nsfw_pidinfo * pidinfo)
{
- u32 i;
- for (i = 0; i < pidinfo->used_size && i < NSFW_MAX_FORK_NUM; i++)
+ u32 i;
+ for (i = 0; i < pidinfo->used_size && i < NSFW_MAX_FORK_NUM; i++)
{
- if (pidinfo->apid[i] != 0)
+ if (pidinfo->apid[i] != 0)
{
- return 0;
+ return 0;
}
}
- return 1;
+ return 1;
}
diff --git a/src/framework/common/data_struct/sha256.c b/src/framework/common/data_struct/sha256.c
deleted file mode 100644
index f0773cf..0000000
--- a/src/framework/common/data_struct/sha256.c
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
-*
-* 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.
-*/
-
-/*Possible access of out-of-bounds pointer:
- The algorithms has been tested on purify. So no
- out of bounds access possible.*/
-
-/*Possible creation of out-of-bounds pointer
- No Out of bounds pointers are created.- false positive.*/
-
-#include <string.h> /* for mem copy function etc. */
-#include "sha256.h"
-#include "nstack_securec.h"
-#include "types.h"
-#include "nstack_log.h"
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-#define rotleft32(x,n) (((x) << n) | ((x) >> (32 - n)))
-#define rotright32(x,n) (((x) >> n) | ((x) << (32 - n)))
-
-#if !defined(bswap_32)
-#define bswap_32(x) ((rotright32((x), 24) & 0x00ff00ff) | (rotright32((x), 8) & 0xff00ff00))
-#endif
-
-#ifdef LITTLE_ENDIAN
-#define SWAP_THE_BYTES
-#else
-#undef SWAP_THE_BYTES
-#endif
-
-#define ch(a,b,c) ((c) ^ ((a) & ((b) ^ (c))))
-#define maj(a,b,c) (((a) & (b)) | ((c) & ((a) ^ (b))))
-
- /* round transforms for the SHA256 & SHA512 compression functions */
-
-#define vf(m,n) v[(m - n) & 7]
-
-#define hf(n) (p[n & 15] += \
- g_1(p[(n + 14) & 15]) + p[(n + 9) & 15] + g_0(p[(n + 1) & 15]))
-
-#define v_cycle(m,n) \
-{ \
- vf(7,m) += (n ? hf(m) : p[m]) + k_0[m+n] \
- + s_1(vf(4,m)) + ch(vf(4,m),vf(5,m),vf(6,m)); \
- vf(3,m) += vf(7,m); \
- vf(7,m) += s_0(vf(0,m))+ maj(vf(0,m),vf(1,m),vf(2,m)); \
-}
-
-#define SHA256_MASK (SHA256_BLOCK_SIZE - 1) /* SHA256_MASK */
-
-#if defined(SWAP_THE_BYTES)
-#define bsw_32(p,n) \
-{ \
- u32 _i = (n); \
- while (_i--) \
- { \
- ((u32*)p)[_i] = bswap_32(((u32*)p)[_i]); \
- } \
-}
-
-#else
-#define bsw_32(p,n)
-#endif
-
-#define s_0(x) (rotright32((x), 2) ^ rotright32((x), 13) ^ rotright32((x), 22))
-#define s_1(x) (rotright32((x), 6) ^ rotright32((x), 11) ^ rotright32((x), 25))
-#define g_0(x) (rotright32((x), 7) ^ rotright32((x), 18) ^ ((x) >> 3))
-#define g_1(x) (rotright32((x), 17) ^ rotright32((x), 19) ^ ((x) >> 10))
-#define k_0 k256
-
-/* rotated SHA256 round definition. Unlike swapping the variables as in */
-/* FIPS-180, different variables are being 'rotated' on each round, */
-/* returning to their starting positions every 8 rounds */
-
-#define q(i) v##i
-
-#define one_cycle(a,b,c,d,e,f,g,h,k,w) \
- q(h) += s_1(q(e)) + ch(q(e), q(f), q(g)) + k + w; \
- q(d) += q(h); q(h) += s_0(q(a)) + maj(q(a), q(b), q(c))
-
-/*
-Description: SHA256 mixing data
-Value Range: None
-Access: Used to mix with data to create SHA256 key.
-Remarks:
-*/
-static const u32 k256[64] = {
- 010242427630, 016115642221, 026560175717, 035155355645,
- 07125541133, 013174210761, 022217701244, 025307057325,
- 033001725230, 02240655401, 04414302676, 012503076703,
- 016257456564, 020067530776, 023367003247, 030146770564,
- 034446664701, 035757443606, 01760316706, 04403120714,
- 05572226157, 011235102252, 013454124734, 016676304332,
- 023017450522, 025014343155, 026000623710, 027726277707,
- 030670005763, 032551710507, 0662461521, 02412224547,
- 04755605205, 05606620470, 011513066774, 012316006423,
- 014502471524, 016632405273, 020160544456, 022234426205,
- 024257764241, 025006463113, 030222705560, 030733050643,
- 032144564031, 032646203044, 036403432605, 02032520160,
- 03151140426, 03615666010, 04722073514, 06454136265,
- 07107006263, 011666125112, 013347145117, 015013467763,
- 016443701356, 017051261557, 020462074024, 021461601010,
- 022057577772, 024424066353, 027676321767, 030634274362,
-};
-
-#define v_ v
-#define ptr p
-
-/*===========================================================================*\
- Function :Sha256_compile__
- Description : This function generates the digest value for SHA256.
- Compile 64 bytes of hash data into SHA256 digest value
- Calls : mem copy - Secure mem copy function.
- Called by :
- Return : This is a static internal function which doesn't return any value.
- Parameters :
- SHA256_CTX ctx[1] -
- Note : this routine assumes that the byte order in the
- ctx->wbuf[] at this point is such that low address bytes in
- the ORIGINAL byte stream will go into the high end of
- words on BOTH big and little endian systems.
-\*===========================================================================*/
-NSTACK_STATIC void
-Sha256_compile__ (SHA256_CTX ctx[1])
-{
-
- /* macros defined above to this function i.e. v_ and ptr should not be removed */
- /* v_cycle - for 0 to 15 */
- u32 i;
- u32 *ptr = ctx->wbuf;
- u32 v_[8];
-
- int ret = MEMCPY_S (v_, 8 * sizeof (u32), ctx->hash, 8 * sizeof (u32));
- if (EOK != ret)
- {
- NSPOL_LOGERR ("MEMCPY_S failed");
- return;
- }
-
- for (i = 0; i < 64; i += 16)
- {
- /*v_cycle operations from 0 to 15 */
- v_cycle (0, i);
- v_cycle (1, i);
- v_cycle (2, i);
- v_cycle (3, i);
- v_cycle (4, i);
- v_cycle (5, i);
- v_cycle (6, i);
- v_cycle (7, i);
- v_cycle (8, i);
- v_cycle (9, i);
- v_cycle (10, i);
- v_cycle (11, i);
- v_cycle (12, i);
- v_cycle (13, i);
- v_cycle (14, i);
- v_cycle (15, i);
- }
-
- /* update the context */
- ctx->hash[0] += v_[0];
- ctx->hash[1] += v_[1];
- ctx->hash[2] += v_[2];
- ctx->hash[3] += v_[3];
- ctx->hash[4] += v_[4];
- ctx->hash[5] += v_[5];
- ctx->hash[6] += v_[6];
- ctx->hash[7] += v_[7];
-
- return;
-}
-
-#undef v_
-#undef ptr
-
-/*===========================================================================*\
- Function :Sha256_upd
- Description :
- Calls :
- Called by :
- Return :void -
- Parameters :
- SHA256_CTX ctx[1] -
- const unsigned char data[] -
- size_t len -
- Note :
-\*===========================================================================*/
-void
-Sha256_upd (SHA256_CTX sha256_ctx[1], const u8 data[], size_t len)
-{
- u32 pos = (u32) (sha256_ctx->count[0] & SHA256_MASK);
- u32 capacity = SHA256_BLOCK_SIZE - pos;
- const u8 *sp = data;
- int ret;
-
- if ((sha256_ctx->count[0] += (u32) len) < len)
- {
- ++(sha256_ctx->count[1]);
- }
-
- while (len >= capacity)
- {
-
- /* tranfer whole blocks while possible */
- ret =
- MEMCPY_S (((u8 *) sha256_ctx->wbuf) + pos, capacity, sp, capacity);
- if (EOK != ret)
- {
- NSPOL_LOGERR ("MEMCPY_S failed");
- return;
- }
-
- sp += capacity;
- len -= capacity;
- capacity = SHA256_BLOCK_SIZE;
- pos = 0;
- bsw_32 (sha256_ctx->wbuf, SHA256_BLOCK_SIZE >> 2);
- Sha256_compile__ (sha256_ctx);
- }
-
- if (len != 0)
- {
- ret =
- MEMCPY_S (((u8 *) sha256_ctx->wbuf) + pos, (u32) len, sp, (u32) len);
- if (EOK != ret)
- {
- NSPOL_LOGERR ("MEMCPY_S failed");
- return;
- }
- }
-
- return;
-}
-
-/* the Final padding and digest calculation of SHA256 */
-
-/*===========================================================================*\
- Function :SHA_fin1
- Description :
- Calls :
- Called by :
- Return :void -
- Parameters :
- unsigned char hval[] -
- SHA256_CTX ctx[1] -
- const unsigned int hlen -
- Note :
-\*===========================================================================*/
-NSTACK_STATIC void
-SHA_fin1 (u8 hval[], SHA256_CTX ctx[1], const unsigned int hlen)
-{
- u32 i = (u32) (ctx->count[0] & SHA256_MASK);
-
- /* Not unusual shift operation. Checked with purify. */
-
- /*put bytes in the buffer in an order in which references to */
- /*32-bit words will put bytes with lower addresses into the */
- /*top of 32 bit words on BOTH big and little endian machines */
- bsw_32 (ctx->wbuf, (i + 3) >> 2);
-
- /*now it is needed to mask valid bytes and add padding which is */
- /*a single 1 bit and as many zero bits as necessary. Note that */
- /*we can always add the first padding byte here because the */
- /*buffer always has at least one empty slot */
- ctx->wbuf[i >> 2] &= (u32) 0xffffff80 << 8 * (~i & 3);
- ctx->wbuf[i >> 2] |= (u32) 0x00000080 << 8 * (~i & 3);
-
- if (i > SHA256_BLOCK_SIZE - 9)
- {
- if (i < 60)
- {
- ctx->wbuf[15] = 0;
- }
-
- Sha256_compile__ (ctx);
- i = 0;
- }
- else
- {
- /* compute a word index for the empty buffer positions */
- i = (i >> 2) + 1;
- }
-
- while (i < 14)
- {
- /* and zero pad all but last two positions */
- ctx->wbuf[i++] = 0;
- }
-
- ctx->wbuf[14] = (ctx->count[1] << 3) | (ctx->count[0] >> 29);
- ctx->wbuf[15] = ctx->count[0] << 3;
- Sha256_compile__ (ctx);
-
- for (i = 0; i < hlen; ++i)
- {
- hval[i] = (u8) (ctx->hash[i >> 2] >> (8 * (~i & 3)));
- }
-
- return;
-}
-
-/*
-Description: Internal data for SHA256 digest calculation
-Value Range: None
-Access: Used to store internal data for SHA256 digest calculation
-Remarks:
-*/
-static const u32 g_i256[] = {
- 0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A,
- 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19
-};
-
-/*===========================================================================*\
- Function :Sha256_set
- Description :
- Calls :
- Called by :
- Return :void -
- Parameters :
- SHA256_CTX ctx[1] -
- Note :
-\*===========================================================================*/
-void
-Sha256_set (SHA256_CTX sha256_ctx[1])
-{
- int ret;
- sha256_ctx->count[0] = sha256_ctx->count[1] = 0;
-
- ret =
- MEMCPY_S (sha256_ctx->hash, sizeof (sha256_ctx->hash), g_i256,
- sizeof (g_i256));
- if (EOK != ret)
- {
- NSPOL_LOGERR ("MEMCPY_S failed");
- return;
- }
-
- return;
-}
-
-/*===========================================================================*\
- Function :Sha256_fin
- Description :
- Calls :
- Called by :
- Return :void -
- Parameters :
- SHA256_CTX ctx[1] -
- unsigned char hval[] -
- Note :
-\*===========================================================================*/
-void
-Sha256_fin (SHA256_CTX ctx[1], u8 hval[])
-{
- SHA_fin1 (hval, ctx, SHA256_DIGEST_SIZE);
-
- return;
-}
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
diff --git a/src/framework/common/include/arch/x86/dmm_atomic.h b/src/framework/common/include/arch/x86/dmm_atomic.h
deleted file mode 100644
index fae99c2..0000000
--- a/src/framework/common/include/arch/x86/dmm_atomic.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-*
-* 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.
-*/
-#ifndef _DMM_ATOMIC_H__ARCH_X86_
-#define _DMM_ATOMIC_H__ARCH_X86_
-
-#include "generic/dmm_atomic.h"
-
-#endif /* #ifndef _DMM_ATOMIC_H__ARCH_X86_ */
diff --git a/src/framework/common/include/arch/x86/dmm_barrier.h b/src/framework/common/include/arch/x86/dmm_barrier.h
deleted file mode 100644
index bf53650..0000000
--- a/src/framework/common/include/arch/x86/dmm_barrier.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-*
-* 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.
-*/
-#ifndef _DMM_BARRIER_H__ARCH_X86_
-#define _DMM_BARRIER_H__ARCH_X86_
-
-#include "generic/dmm_barrier.h"
-
-#endif /* #ifndef _DMM_BARRIER_H__ARCH_X86_ */
diff --git a/src/framework/common/include/arch/x86/dmm_pause.h b/src/framework/common/include/arch/x86/dmm_pause.h
deleted file mode 100644
index 56c60f0..0000000
--- a/src/framework/common/include/arch/x86/dmm_pause.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-*
-* 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.
-*/
-#ifndef _DMM_PAUSE_H_
-#define _DMM_PAUSE_H_
-
-#include <emmintrin.h>
-
-inline static void
-dmm_pause (void)
-{
- _mm_pause ();
-}
-
-#define DMM_PAUSE_WHILE(cond) do { dmm_pause(); } while (!!(cond))
-#define DMM_WHILE_PAUSE(cond) do { while (!!(cond)) dmm_pause(); } while (0)
-
-#endif /* #ifndef _DMM_PAUSE_H_ */
diff --git a/src/framework/common/include/arch/x86/dmm_rwlock.h b/src/framework/common/include/arch/x86/dmm_rwlock.h
deleted file mode 100644
index 0c31329..0000000
--- a/src/framework/common/include/arch/x86/dmm_rwlock.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-*
-* 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.
-*/
-#ifndef _DMM_RWLOCK_H__ARCH_X86_
-#define _DMM_RWLOCK_H__ARCH_X86_
-
-#include "generic/dmm_rwlock.h"
-
-#endif /* #ifndef _DMM_RWLOCK_H__ARCH_X86_ */
diff --git a/src/framework/common/include/arch/x86/dmm_spinlock.h b/src/framework/common/include/arch/x86/dmm_spinlock.h
deleted file mode 100644
index 69ed9a6..0000000
--- a/src/framework/common/include/arch/x86/dmm_spinlock.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-*
-* 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.
-*/
-#ifndef _DMM_SPINLOCK_H__ARCH_X86_
-#define _DMM_SPINLOCK_H__ARCH_X86_
-
-#include "generic/dmm_spinlock.h"
-
-#endif /* #ifndef _DMM_SPINLOCK_H__ARCH_X86_ */
diff --git a/src/framework/common/include/compile_config.h b/src/framework/common/include/compile_config.h
deleted file mode 100644
index 2ec5373..0000000
--- a/src/framework/common/include/compile_config.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef COMPILE_CONFIG_H
-#define COMPILE_CONFIG_H
-
-#ifndef NSTACK_STATIC
-#ifndef NSTACK_STATIC_CHECK
-#define NSTACK_STATIC static
-#else
-#define NSTACK_STATIC
-#endif
-#endif
-
-#include "compiling_check.h"
-
-#endif /*compile_config.h */
diff --git a/src/framework/common/include/compiling_check.h b/src/framework/common/include/compiling_check.h
deleted file mode 100644
index e4a7538..0000000
--- a/src/framework/common/include/compiling_check.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef COMPILING_CHECK_H
-#define COMPILING_CHECK_H
-
-/* protect the value of macro whose value impacts the version
- * compatibility, can't be changed!!! */
-#define COMPAT_PROTECT(name, value) \
-static inline char value_of_##name##_equal_to() \
-{ \
- char __dummy1[(name) - (value)]; \
- char __dummy2[(value) - (name)]; \
- return __dummy1[-1] + __dummy2[-1]; \
-}
-
-/* check whether struct size is equal to a special value */
-#define SIZE_OF_TYPE_EQUAL_TO(type, size) \
-static inline char size_of_##type##_equal_to_##size() \
-{ \
- char __dummy1[sizeof(type) - size]; \
- char __dummy2[size - sizeof(type)]; \
- return __dummy1[-1] + __dummy2[-1]; \
-}
-
-/* check whether struct size is not equal to a special value */
-#define SIZE_OF_TYPE_UNEQUAL_TO(type, size) \
-static inline char size_of_##type##_unequal_to_##size() \
-{ \
- char __dummy1[0==(10/(sizeof(type)-size))]; \
- return __dummy1[-1]; \
-}
-
-/* check whether struct size is not larger than a special value */
-#define SIZE_OF_TYPE_NOT_LARGER_THAN(type, size) \
-static inline char size_of_##type##_not_larger_than_##size() \
-{ \
- char __dummy1[size - sizeof(type)]; \
- return __dummy1[-1]; \
-}
-
-/* check whether struct size + sizeof(void*) is not larger than a special value */
-/* reserve 8 bytes for 64 bits pointers */
-#define SIZE_OF_TYPE_PLUS8_NOT_LARGER_THAN(type, size) \
-static inline char size_of_##type##_not_larger_than_##size() \
-{ \
- char __dummy1[size - sizeof(type) - sizeof(void*)]; \
- return __dummy1[-1]; \
-}
-
-/* check whether struct size is not smaller than a special value */
-#define SIZE_OF_TYPE_NOT_SMALLER_THAN(type, size) \
-static inline char size_of_##type##_not_smaller_than_##size() \
-{ \
- char __dummy1[sizeof(type) - size]; \
- return __dummy1[-1]; \
-}
-
-/* check whether struct size is smaller than a special value */
-#define SIZE_OF_TYPE_SMALLER_THAN(type, size) \
- SIZE_OF_TYPE_NOT_LARGER_THAN(type, size) \
- SIZE_OF_TYPE_UNEQUAL_TO(type, size)
-
-/* check whether struct size is larger than a special value */
-#define SIZE_OF_TYPE_LARGER_THAN(type, size) \
- SIZE_OF_TYPE_NOT_SMALLER_THAN(type, size) \
- SIZE_OF_TYPE_UNEQUAL_TO(type, size)
-
-/* check whether struct size is smaller than a special value, version 2 */
-#define SIZE_OF_TYPE_SMALLER_THAN2(type, size) \
-static inline char size_of_##type##_smaller_than2_##size() \
-{ \
- char __dummy1[size - sizeof(type) - 1]; \
- return __dummy1[-1]; \
-}
-
-/* check whether struct size is larger than a special value, version 2 */
-#define SIZE_OF_TYPE_LARGER_THAN2(type, size) \
-static inline char size_of_##type##_larger_than2_##size() \
-{ \
- char __dummy1[sizeof(type) - size - 1]; \
- return __dummy1[-1]; \
-}
-
-/* check whether struct size is equal to an integer multiple of a special value */
-#define SIZE_OF_TYPE_IS_MULTIPLE_OF(type, size) \
-static inline char size_of_##type##_is_multiple_of_##size() \
-{ \
- char __dummy1[0 - (sizeof(type) % size)]; \
- return __dummy1[-1]; \
-}
-
-#endif /*compiling_check.h */
diff --git a/src/framework/common/include/dmm_fs.h b/src/framework/common/include/dmm_fs.h
deleted file mode 100644
index 8fd9cd0..0000000
--- a/src/framework/common/include/dmm_fs.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-*
-* 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.
-*/
-#ifndef _DMM_FS_H_
-#define _DMM_FS_H_
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-static size_t
-dmm_file_size (int fd)
-{
- struct stat st;
- if (fstat (fd, &st) < 0)
- return 0;
- return st.st_size;
-}
-
-#endif /* _DMM_FS_H_ */
diff --git a/src/framework/common/include/ephlist.h b/src/framework/common/include/ephlist.h
deleted file mode 100644
index 90491b0..0000000
--- a/src/framework/common/include/ephlist.h
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _EPHLIST_H_
-#define _EPHLIST_H_
-
-#include <stdio.h>
-#include "types.h"
-#include "common_mem_pal.h"
-#include "common_mem_buf.h"
-#include "common_pal_bitwide_adjust.h"
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-struct ep_hlist_node
-{
- struct ep_hlist_node *next, **pprev;
-};
-
-struct ep_node_list
-{
- struct ep_hlist_node *head;
- struct ep_hlist_node *tail;
-};
-
-struct ep_hlist
-{
- struct ep_hlist_node node;
- struct ep_hlist_node *head;
- struct ep_hlist_node *tail;
-};
-
-#define ep_hlist_entry(ptr, type, member) container_of(ptr, type, member)
-
-#define EP_HLIST_INIT_NODE(node) {\
- (node)->next = NULL;\
- (node)->pprev = NULL; \
- }
-
-#define EP_HLIST_INIT(ptr) {\
- EP_HLIST_INIT_NODE(&((ptr)->node)); \
- (ptr)->head = (struct ep_hlist_node*)ADDR_LTOSH_EXT(&((ptr)->node)); \
- (ptr)->tail = (struct ep_hlist_node*)ADDR_LTOSH_EXT(&((ptr)->node)); \
- }
-
-#define EP_HLIST_PREV(ptr) ((struct ep_hlist_node*)(ADDR_SHTOL((ptr)->pprev)))
-/* list check may below zero check header, because if app crash before
- do list->size++, it will lead problem */
-#define EP_HLIST_EMPTY(list) (NULL == ((struct ep_hlist_node*)ADDR_SHTOL((list)->head))->next)
-#define EP_HLIST_NODE_LINKED(node) (!(!(node)->pprev))
-
-static __inline void ep_hlist_del (struct ep_hlist *list,
- struct ep_hlist_node *n);
-static __inline void ep_hlist_add_tail (struct ep_hlist *list,
- struct ep_hlist_node *node);
-
-/*
- * list , n are local pointer, don't need to cast
- */
-static __inline void
-ep_hlist_del (struct ep_hlist *list, struct ep_hlist_node *n)
-{
- if (!EP_HLIST_NODE_LINKED (n))
- return;
- EP_HLIST_PREV (n)->next = n->next;
- if (n->next)
- {
- ((struct ep_hlist_node *) ADDR_SHTOL (n->next))->pprev = n->pprev;
- }
- else
- {
- list->tail = (struct ep_hlist_node *) (n->pprev);
- }
- EP_HLIST_INIT_NODE (n);
-}
-
-/**
- * list, node are local pointer , don't need to case
- */
-static __inline void
-ep_hlist_add_tail (struct ep_hlist *list, struct ep_hlist_node *node)
-{
- struct ep_hlist_node *tail =
- (struct ep_hlist_node *) ADDR_SHTOL (list->tail);
- EP_HLIST_INIT_NODE (node);
- node->pprev = (struct ep_hlist_node **) ADDR_LTOSH_EXT (&tail->next);
- tail->next = (struct ep_hlist_node *) ADDR_LTOSH_EXT (node);
- list->tail = (struct ep_hlist_node *) ADDR_LTOSH_EXT (node);
-}
-
-/*#########################################################*/
-struct list_node
-{
- struct list_node *next;
-};
-
-struct ep_list
-{
- struct list_node node;
- struct list_node *head;
-};
-
-#define ep_list_entry(ptr, type, member) container_of(ptr, type, member)
-
-#define EP_LIST_INIT_NODE(node) {\
- (node)->next = NULL;\
- }
-
-#define EP_LIST_INIT(ptr) {\
- EP_LIST_INIT_NODE(&((ptr)->node)); \
- (ptr)->head = (struct list_node*)ADDR_LTOSH_EXT(&((ptr)->node)); \
- }
-
-#define EP_LIST_EMPTY(list) (NULL == ((struct list_node*)ADDR_SHTOL((list)->head))->next)
-
-static __inline void ep_list_del (struct ep_list *list, struct list_node *n);
-static __inline void ep_list_add_tail (struct ep_list *list,
- struct list_node *node);
-
-/*
- * list , n are local pointer, don't need to cast
- */
-static __inline void
-ep_list_del (struct ep_list *list, struct list_node *n)
-{
- if (NULL == n)
- {
- return;
- }
-
- struct list_node *p_node;
- struct list_node *p_prev = NULL;
- p_node = ((struct list_node *) ADDR_SHTOL (list->head));
- while (NULL != p_node && p_node != n)
- {
- p_prev = p_node;
- p_node = ((struct list_node *) ADDR_SHTOL (p_node->next));
- }
-
- if (p_node != n || p_prev == NULL)
- {
- return;
- }
-
- p_prev->next = n->next;
-
- EP_LIST_INIT_NODE (n);
- return;
-}
-
-/**
- * list, node are local pointer , don't need to case
- */
-static __inline void
-ep_list_add_tail (struct ep_list *list, struct list_node *node)
-{
-
- struct list_node *p_node;
- struct list_node *p_prev = NULL;
- p_node = ((struct list_node *) ADDR_SHTOL (list->head));
- while (NULL != p_node)
- {
- p_prev = p_node;
- p_node = ((struct list_node *) ADDR_SHTOL (p_node->next));
- }
-
- if (NULL == p_prev)
- {
- return;
- }
-
- EP_LIST_INIT_NODE (node);
- p_prev->next = (struct list_node *) ADDR_LTOSH_EXT (node);
- return;
-}
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
-
-#endif /* _HLIST_H_ */
diff --git a/src/framework/common/include/eprb_tree.h b/src/framework/common/include/eprb_tree.h
deleted file mode 100644
index 558ab2d..0000000
--- a/src/framework/common/include/eprb_tree.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _EPRB_TREE_H_
-#define _EPRB_TREE_H_
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "types.h"
-#include "common_mem_pal.h"
-#include "common_mem_buf.h"
-#include "common_pal_bitwide_adjust.h"
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-#define EP_RB_RED 0
-#define EP_RB_BLACK 1
-
-struct ep_rb_node
-{
- int color;
-
- struct ep_rb_node *rb_parent;
- struct ep_rb_node *rb_right;
- struct ep_rb_node *rb_left;
-};
-
-/* The alignment might seem pointless, but allegedly CRIS needs it */
-
-struct ep_rb_root
-{
- struct ep_rb_node *rb_node;
-};
-
-#define ep_rb_parent(r) ((struct ep_rb_node *)((r)->rb_parent))
-
-static inline void
-ep_rb_set_parent (struct ep_rb_node *rb, struct ep_rb_node *p)
-{
- rb->rb_parent = (struct ep_rb_node *) ADDR_LTOSH_EXT (p);
-}
-
-#define ep_rb_entry(ptr, type, member) container_of(ptr, type, member)
-
-extern void ep_rb_insert_color (struct ep_rb_node *, struct ep_rb_root *);
-extern void ep_rb_erase (struct ep_rb_node *, struct ep_rb_root *);
-struct ep_rb_node *ep_rb_first (const struct ep_rb_root *);
-
-static inline void
-ep_rb_link_node (struct ep_rb_node *node,
- struct ep_rb_node *parent, struct ep_rb_node **rb_link)
-{
-
- node->rb_parent = (struct ep_rb_node *) ADDR_LTOSH_EXT (parent);
- node->rb_left = node->rb_right = NULL;
-
- *rb_link = (struct ep_rb_node *) ADDR_LTOSH_EXT (node);
- node->color = EP_RB_RED;
-
-}
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
-
-#endif
diff --git a/src/framework/common/include/generic/dmm_atomic.h b/src/framework/common/include/generic/dmm_atomic.h
deleted file mode 100644
index 637306b..0000000
--- a/src/framework/common/include/generic/dmm_atomic.h
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
-*
-* 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.
-*/
-#ifndef _DMM_ATOMIC_H_
-#define _DMM_ATOMIC_H_
-
-/* atomic 32 bit operation */
-
-typedef struct
-{
- volatile int cnt;
-} dmm_atomic_t;
-
-inline static int
-dmm_atomic_get (dmm_atomic_t * a)
-{
- return a->cnt;
-}
-
-inline static int
-dmm_atomic_add (dmm_atomic_t * a, int n)
-{
- return __sync_fetch_and_add (&a->cnt, n);
-}
-
-inline static int
-dmm_atomic_sub (dmm_atomic_t * a, int n)
-{
- return __sync_fetch_and_sub (&a->cnt, n);
-}
-
-inline static int
-dmm_atomic_and (dmm_atomic_t * a, int n)
-{
- return __sync_fetch_and_and (&a->cnt, n);
-}
-
-inline static int
-dmm_atomic_or (dmm_atomic_t * a, int n)
-{
- return __sync_fetch_and_or (&a->cnt, n);
-}
-
-inline static int
-dmm_atomic_xor (dmm_atomic_t * a, int n)
-{
- return __sync_fetch_and_xor (&a->cnt, n);
-}
-
-inline static int
-dmm_atomic_swap (dmm_atomic_t * a, int o, int n)
-{
- return __sync_val_compare_and_swap (&a->cnt, o, n);
-}
-
-inline static int
-dmm_atomic_add_return (dmm_atomic_t * a, int n)
-{
- return __sync_add_and_fetch (&a->cnt, n);
-}
-
-inline static int
-dmm_atomic_sub_return (dmm_atomic_t * a, int n)
-{
- return __sync_sub_and_fetch (&a->cnt, n);
-}
-
-inline static int
-dmm_atomic_and_return (dmm_atomic_t * a, int n)
-{
- return __sync_and_and_fetch (&a->cnt, n);
-}
-
-inline static int
-dmm_atomic_or_return (dmm_atomic_t * a, int n)
-{
- return __sync_or_and_fetch (&a->cnt, n);
-}
-
-inline static int
-dmm_atomic_xor_return (dmm_atomic_t * a, int n)
-{
- return __sync_xor_and_fetch (&a->cnt, n);
-}
-
-/* atomit 64bit operation */
-
-typedef struct
-{
- volatile long long int cnt;
-} dmm_atomic64_t;
-
-inline static long long int
-dmm_atomic64_get (dmm_atomic64_t * a)
-{
- return a->cnt;
-}
-
-inline static long long int
-dmm_atomic64_add (dmm_atomic64_t * a, int n)
-{
- return __sync_fetch_and_add (&a->cnt, n);
-}
-
-inline static long long int
-dmm_atomic64_sub (dmm_atomic64_t * a, int n)
-{
- return __sync_fetch_and_sub (&a->cnt, n);
-}
-
-inline static long long int
-dmm_atomic64_and (dmm_atomic64_t * a, int n)
-{
- return __sync_fetch_and_and (&a->cnt, n);
-}
-
-inline static long long int
-dmm_atomic64_or (dmm_atomic64_t * a, int n)
-{
- return __sync_fetch_and_or (&a->cnt, n);
-}
-
-inline static long long int
-dmm_atomic64_xor (dmm_atomic64_t * a, int n)
-{
- return __sync_fetch_and_xor (&a->cnt, n);
-}
-
-inline static long long int
-dmm_atomic64_swap (dmm_atomic_t * a, int o, int n)
-{
- return __sync_val_compare_and_swap (&a->cnt, o, n);
-}
-
-inline static long long int
-dmm_atomic64_add_return (dmm_atomic64_t * a, int n)
-{
- return __sync_add_and_fetch (&a->cnt, n);
-}
-
-inline static long long int
-dmm_atomic64_sub_return (dmm_atomic64_t * a, int n)
-{
- return __sync_sub_and_fetch (&a->cnt, n);
-}
-
-inline static long long int
-dmm_atomic64_and_return (dmm_atomic64_t * a, int n)
-{
- return __sync_and_and_fetch (&a->cnt, n);
-}
-
-inline static long long int
-dmm_atomic64_or_return (dmm_atomic64_t * a, int n)
-{
- return __sync_or_and_fetch (&a->cnt, n);
-}
-
-inline static long long int
-dmm_atomic64_xor_return (dmm_atomic64_t * a, int n)
-{
- return __sync_xor_and_fetch (&a->cnt, n);
-}
-
-#endif /* #ifndef _DMM_ATOMIC_H_ */
diff --git a/src/framework/common/include/generic/dmm_barrier.h b/src/framework/common/include/generic/dmm_barrier.h
deleted file mode 100644
index b70fe85..0000000
--- a/src/framework/common/include/generic/dmm_barrier.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-*
-* 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.
-*/
-#ifndef _DMM_BARRIER_H_
-#define _DMM_BARRIER_H_
-
-inline static void
-dmm_barrier (void)
-{
- __sync_synchronize ();
-}
-
-#endif /* #ifndef _DMM_BARRIER_H_ */
diff --git a/src/framework/common/include/generic/dmm_pause.h b/src/framework/common/include/generic/dmm_pause.h
deleted file mode 100644
index 56c60f0..0000000
--- a/src/framework/common/include/generic/dmm_pause.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-*
-* 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.
-*/
-#ifndef _DMM_PAUSE_H_
-#define _DMM_PAUSE_H_
-
-#include <emmintrin.h>
-
-inline static void
-dmm_pause (void)
-{
- _mm_pause ();
-}
-
-#define DMM_PAUSE_WHILE(cond) do { dmm_pause(); } while (!!(cond))
-#define DMM_WHILE_PAUSE(cond) do { while (!!(cond)) dmm_pause(); } while (0)
-
-#endif /* #ifndef _DMM_PAUSE_H_ */
diff --git a/src/framework/common/include/generic/dmm_rwlock.h b/src/framework/common/include/generic/dmm_rwlock.h
deleted file mode 100644
index 93570f1..0000000
--- a/src/framework/common/include/generic/dmm_rwlock.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-*
-* 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.
-*/
-#ifndef _DMM_RWLOCK_H_
-#define _DMM_RWLOCK_H_
-
-#include "dmm_pause.h"
-
-typedef struct
-{
- volatile int lock;
-} dmm_rwlock_t;
-
-#define DMM_RWLOCK_INIT { 0 }
-
-inline static void
-dmm_rwlock_init (dmm_rwlock_t * rwlock)
-{
- rwlock->lock = 0;
-}
-
-inline static void
-dmm_read_lock (dmm_rwlock_t * rwlock)
-{
- int val;
-
- do
- {
- if ((val = rwlock->lock) < 0)
- {
- dmm_pause ();
- continue;
- }
- }
- while (!__sync_bool_compare_and_swap (&rwlock->lock, val, val + 1));
-}
-
-inline static void
-dmm_read_unlock (dmm_rwlock_t * rwlock)
-{
- __sync_sub_and_fetch (&rwlock->lock, 1);
-}
-
-inline static void
-dmm_write_lock (dmm_rwlock_t * rwlock)
-{
- do
- {
- if (rwlock->lock != 0)
- {
- dmm_pause ();
- continue;
- }
- }
- while (!__sync_bool_compare_and_swap (&rwlock->lock, 0, -1));
-}
-
-inline static void
-dmm_write_unlock (dmm_rwlock_t * rwlock)
-{
- rwlock->lock = 0;
-}
-
-#endif /* #ifndef _DMM_RWLOCK_H_ */
diff --git a/src/framework/common/include/generic/dmm_spinlock.h b/src/framework/common/include/generic/dmm_spinlock.h
deleted file mode 100644
index be183a6..0000000
--- a/src/framework/common/include/generic/dmm_spinlock.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-*
-* 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.
-*/
-#ifndef _DMM_SPINLOCK_H_
-#define _DMM_SPINLOCK_H_
-
-#include "dmm_pause.h"
-
-typedef struct
-{
- volatile int lock;
-} dmm_spinlock_t;
-
-inline static void
-dmm_spin_init (dmm_spinlock_t * spinlock)
-{
- spinlock->lock = 0;
-}
-
-inline static void
-dmm_spin_lock (dmm_spinlock_t * spinlock)
-{
- while (0 != __sync_lock_test_and_set (&spinlock->lock, 1))
- {
- DMM_PAUSE_WHILE (spinlock->lock);
- }
-}
-
-inline static int
-dmm_spin_trylock (dmm_spinlock_t * spinlock)
-{
- return 0 == __sync_lock_test_and_set (&spinlock->lock, 1);
-}
-
-inline static void
-dmm_spin_unlock (dmm_spinlock_t * spinlock)
-{
- spinlock->lock = 0;
-}
-
-#endif /* #ifndef _DMM_SPINLOCK_H_ */
diff --git a/src/framework/common/include/list.h b/src/framework/common/include/list.h
deleted file mode 100644
index 01860bc..0000000
--- a/src/framework/common/include/list.h
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef LIST_H_
-#define LIST_H_
-
-#include <signal.h>
-#include <stdio.h>
-#include <pthread.h>
-#include <unistd.h>
-
-#include "types.h"
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-struct list_head
-{
- union
- {
- struct list_head *next;
- };
-
- union
- {
- struct list_head *prev;
- };
-};
-
-struct hlist_node
-{
- /**
- * @pprev: point the previous node's next pointer
- */
- union
- {
- struct hlist_node *next;
- };
-
- union
- {
- struct hlist_node **pprev;
- };
-};
-
-struct hlist_head
-{
- struct hlist_node *first;
-};
-
-#define list_entry(ptr, type, member) \
- container_of(ptr, type, member)
-
-#define list_for_each_entry_type(tpos, typeof_tpos,pos, head, member) \
- for (pos = ((head)->next); \
- pos && pos != (head) && ({tpos = list_entry(pos, typeof_tpos, member); 1;}); \
- pos = ((pos)->next))
-
-#define LINT_LIST()
-
-#define list_for_each_entry(tpos, pos, head, member) \
- for (pos = ((head)->next); \
- pos && pos != (head) && ({tpos = list_entry(pos, typeof(*tpos), member); 1;}); \
- pos = ((pos)->next))
-
-#define list_for_each_entry_list_head(tpos, pos, head, member) \
- for (pos = (struct list_head *)((head)->next); \
- pos && pos != (struct list_head *)(head) && ({tpos = list_entry(pos, typeof(*tpos), member); 1;}); \
- pos = (pos)->next)
-#define list_for_each_safe_entry(tpos, pos, n, head, member) \
- for (pos = (head)->next,n = pos->next; \
- pos && pos != (head) && ({tpos = list_entry(pos, typeof(*tpos), member); 1;}); \
- pos = n,n = (pos)->next)
-
-#define INIT_LIST_HEAD(list) {(list)->next = (list); (list)->prev = (list);}
-
-/*
- * @head: the list to test.
- */
-inline void list_add (struct list_head *newp, struct list_head *head);
-inline void list_link (struct list_head *newhead, struct list_head *head);
-inline void list_add_tail (struct list_head *newp, struct list_head *head);
-inline int list_empty (const struct list_head *head);
-inline void list_del (struct list_head *entry);
-inline struct list_head *list_get_first (struct list_head *head);
-inline void hlist_del_init (struct hlist_node *n);
-
-struct hlist_tail
-{
- struct hlist_node *end;
-};
-
-struct hlist_ctl
-{
- struct hlist_head head;
- struct hlist_tail tail;
-};
-#define INIT_HLIST_CTRL(ptr) {(ptr)->head.first = NULL; (ptr)->tail.end = NULL;}
-
-inline int hlist_empty (const struct hlist_head *h);
-inline void hlist_add_head (struct hlist_node *n, struct hlist_head *h);
-
-#define INIT_HLIST_HEAD(ptr) ((ptr)->first = NULL)
-#define INIT_HLIST_NODE(ptr) {(ptr)->next = NULL; (ptr)->pprev = NULL;}
-#define hlist_entry(ptr, type, member) \
- container_of(ptr, type, member)
-
-/***
- * hlist_for_each_entry - iterate over list of given type
- * @member: the name of the hlist_node within the struct.
- * @head: the head for your list.
- * @pos: the &struct hlist_node to use as a loop cursor.
- * @tpos: the type * to use as a loop cursor.
- */
-#define hlist_for_each_entry(tpos, pos, head, member) \
- for (pos = (head)->first; \
- pos && ({tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
- pos = pos->next)
-
-/**
- * hlist_for_each_entry_type - iterate over list of given type
- * @member: the name of the hlist_node within the struct.
- * @head: the head for your list.
- * @pos: the &struct hlist_node to use as a loop cursor.
- * @tpos: the type * to use as a loop cursor.
- */
-#define hlist_for_each_entry_type(tpos, typeof_tpos,pos, head, member) \
- for (pos = (head)->first; \
- pos && ({tpos = hlist_entry(pos, typeof_tpos, member); 1;}); \
- pos = pos->next)
-
-inline void hlist_del_init (struct hlist_node *n);
-
-/**
- * next must be != NULL
- * add n node before next node
- *
- * @n: new node
- * @next: node in the hlist
- */
-inline void hlist_add_before (struct hlist_node *n, struct hlist_node *next);
-
-/**
- * next must be != NULL
- * add n node after next node
- * actual behavior is add after n
- * @n: node in the hlist
- * @next: new node
- */
-inline void hlist_add_after (struct hlist_node *n, struct hlist_node *next);
-
-/* add after the head */
-inline void hlist_add_head (struct hlist_node *n, struct hlist_head *h);
-
-inline int hlist_unhashed (const struct hlist_node *h);
-
-inline int hlist_empty (const struct hlist_head *h);
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-};
-/* *INDENT-ON* */
-#endif
-
-#endif /* HASH_H_ */
diff --git a/src/framework/common/include/pidinfo.h b/src/framework/common/include/pidinfo.h
deleted file mode 100644
index 7438756..0000000
--- a/src/framework/common/include/pidinfo.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _PIDINFO_H_
-#define _PIDINFO_H_
-
-#include "types.h"
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-#define NSFW_MAX_FORK_NUM 32
-typedef struct
-{
- u32 used_size;
- u32 apid[NSFW_MAX_FORK_NUM];
-} nsfw_pidinfo;
-
-inline i32 nsfw_pidinfo_init (nsfw_pidinfo * pidinfo);
-inline int nsfw_add_pid (nsfw_pidinfo * pidinfo, u32 pid);
-inline int nsfw_del_pid (nsfw_pidinfo * pidinfo, u32 pid);
-inline int nsfw_del_last_pid (nsfw_pidinfo * pidinfo, u32 pid);
-inline int nsfw_pid_exist (nsfw_pidinfo * pidinfo, u32 pid);
-inline int nsfw_pidinfo_empty (nsfw_pidinfo * pidinfo);
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-};
-/* *INDENT-ON* */
-#endif
-
-#endif /* _PIDINFO_H_ */
diff --git a/src/framework/common/include/sha256.h b/src/framework/common/include/sha256.h
deleted file mode 100644
index b1c7f3c..0000000
--- a/src/framework/common/include/sha256.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _SHA256_H_
-#define _SHA256_H_
-#include "types.h"
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-/* Note that the following function prototypes are the same */
-/* for both the bit and byte oriented implementations. But */
-/* the length fields are in bytes or bits as is appropriate */
-/* for the version used. Bit sequences are arrays of bytes */
-/* in which bit sequence indexes increase from the most to */
-/* the least significant end of each byte */
-
-#define SHA256_DIGEST_SIZE 32 /* in bytes */
-#define SHA256_BLOCK_SIZE 64 /* in bytes */
-
-typedef struct
-{
- u32 count[2];
- u32 hash[8];
- u32 wbuf[16];
-} SHA256_CTX;
-
-/* SHA256 hash data in an array of bytes into hash buffer */
-/* and call the hash_compile function as required. */
-
-/*===========================================================================*\
- Function :Sha256_upd
- Description :
- Calls :
- Called by :
- Return :void -
- Parameters :
- SHA256_CTX ctx[1] -
- const unsigned char data[] -
- size_t len -
- Note :
-\*===========================================================================*/
-void Sha256_upd (SHA256_CTX ctx[1], const u8 data[], size_t len);
-
-/* SHA256 Final padding and digest calculation */
-
-/*===========================================================================*\
- Function :Sha256_set
- Description :
- Calls :
- Called by :
- Return :void -
- Parameters :
- SHA256_CTX ctx[1] -
- Note :
-\*===========================================================================*/
-void Sha256_set (SHA256_CTX ctx[1]);
-
-/*===========================================================================*\
- Function :Sha256_fin
- Description :
- Calls :
- Called by :
- Return :void -
- Parameters :
- SHA256_CTX ctx[1] -
- unsigned char hval[] -
- Note :
-\*===========================================================================*/
-void Sha256_fin (SHA256_CTX ctx[1], u8 hval[]);
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
-
-#endif /* _SHA256_H_ */
diff --git a/src/framework/common/include/types.h b/src/framework/common/include/types.h
deleted file mode 100644
index bd4d80b..0000000
--- a/src/framework/common/include/types.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef clib_types_h
-#define clib_types_h
-#include <stddef.h>
-
-/* Standard CLIB types. */
-
-/* Define signed and unsigned 8, 16, 32, and 64 bit types
- and machine signed/unsigned word for all architectures. */
-typedef char i8;
-typedef short i16;
-
-typedef unsigned char u8;
-typedef unsigned short u16;
-
-typedef int i32;
-typedef long long i64;
-
-typedef unsigned int u32;
-typedef unsigned long long u64;
-
-#ifndef bool
-#define bool int
-#endif
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#ifndef true
-#define true 1
-#endif
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-#ifndef false
-#define false 0
-#endif
-
-#ifndef NULL
-#define NULL ((void *)0)
-#endif
-
-#define PRIMARY_ADDR
-
-typedef struct _nsfw_res
-{
- u8 alloc_flag;
- u8 u8Reserve;
- u16 chk_count;
- u32 data;
-} nsfw_res;
-
-static inline void
-res_alloc (nsfw_res * res)
-{
- res->alloc_flag = TRUE;
- res->chk_count = 0;
- res->u8Reserve = 0;
-}
-
-static inline int
-res_free (nsfw_res * res)
-{
- if (TRUE != res->alloc_flag)
- {
- return -1;
- }
- res->chk_count = 0;
- res->alloc_flag = FALSE;
- return 0;
-}
-
-#define NSFW_THREAD __thread
-
-#endif /*clib_types_h */
diff --git a/src/framework/common/mem_mgr/include/nsfw_mem_desc.h b/src/framework/common/mem_mgr/include/nsfw_mem_desc.h
deleted file mode 100644
index 9a14c8d..0000000
--- a/src/framework/common/mem_mgr/include/nsfw_mem_desc.h
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _NSFW_MEM_DESC_H
-#define _NSFW_MEM_DESC_H
-#include <sys/types.h>
-#include <unistd.h>
-#include <string.h>
-#include "nsfw_mem_api.h"
-#include "nsfw_mgr_com_api.h"
-#include "nsfw_ring_data.h"
-
-#define NSFW_MEM_NOT_INIT (0)
-#define NSFW_MEM_INIT_ERR (1)
-#define NSFW_MEM_INIT_OK (2)
-
-#define NSFW_NAME_LENCHECK_RET(name, desc) \
- { \
- i32 inamelen = strlen(name); \
- if (inamelen >= NSFW_MEM_APPNAME_LENGTH) \
- { \
- NSCOMM_LOGERR("name length check fail] desc=%s, name len=%d, expected max=%d", \
- #desc, inamelen, NSFW_MEM_APPNAME_LENGTH); \
- return NSFW_MEM_ERR; \
- } \
- }
-
-#define NSFW_NAME_LENCHECK_RET_NULL(name, desc) \
- { \
- i32 inamelen = strlen(name); \
- if (inamelen >= NSFW_MEM_APPNAME_LENGTH) \
- { \
- NSCOMM_LOGERR("name length check fail] desc=%s, name len=%d, expected max=%d", \
- #desc, inamelen, NSFW_MEM_APPNAME_LENGTH); \
- return NULL; \
- } \
- }
-
-#define NSFW_MEM_PARA_CHECK_RET(handle, pdata, desc, num) {\
- if ((NULL == (handle)) || (NULL == (pdata)) || (num <= 0)\
- || (((struct nsfw_mem_ring*)(handle))->memtype >= NSFW_MEM_TYPEMAX)) \
- { \
- NSCOMM_LOGERR("input para error] desc=%s,mhandle=%p, pdata=%p, inum=%d", desc, (handle), (pdata), num); \
- return 0; \
- } \
- }
-
-#define NSFW_MEM_ENQ_PARA_CHECK_RET(handle, desc) {\
- if ((NULL == (handle)) \
- || (((struct nsfw_mem_ring*)(handle))->memtype >= NSFW_MEM_TYPEMAX)) \
- { \
- NSCOMM_LOGERR("input para error] desc=%s,mhandle=%p", desc, (handle)); \
- return 0; \
- } \
- }
-
-#define NSFW_MEM_NAME_CHECK_RET_ERR(pname, desc) {\
- if ((NULL == (pname)) || ((pname)->entype >= NSFW_MEM_TYPEMAX)) \
- { \
- NSCOMM_LOGERR("input para error] desc=%s, pname=%p, mtype=%d", desc, pname, (pname) ? (pname)->entype:-1); \
- return NSFW_MEM_ERR; \
- } \
- }
-
-#define NSFW_MEM_NAME_CHECK_RET_NULL(pname, desc) {\
- if ((NULL == (pname)) || ((pname)->entype >= NSFW_MEM_TYPEMAX)) \
- { \
- NSCOMM_LOGERR("input para error] desc=%s, pname=%p, mtype=%d", desc, pname, (pname) ? (pname)->entype:-1); \
- return NULL; \
- } \
- }
-
-#define NSFW_MEM_RING_CHECK_RET(pringinfo, pringhandle_array, iringnum) {\
- if ((NULL == pringinfo) || (NULL == pringhandle_array) || (pringinfo[0].stname.entype >= NSFW_MEM_TYPEMAX)) \
- { \
- NSCOMM_LOGERR("input para error] pringinfo=%p, iringnum=%d, pringhandle_array=%p, mtype=%d", \
- pringinfo, iringnum, pringhandle_array, pringinfo ? pringinfo[0].stname.entype : (-1)); \
- return NSFW_MEM_ERR; \
- } \
- }
-
-#define NSFW_MEM_RINGV_CHECK_RET(pmpinfo, inum, pringhandle_array, iarray_num) { \
- if ((NULL == pmpinfo) || (NULL == pringhandle_array) \
- || (inum != iarray_num) || (inum <= 0) || (pmpinfo[0].stname.entype >= NSFW_MEM_TYPEMAX)) \
- { \
- NSCOMM_LOGERR("input para error] pmpinfo=%p, inum=%d, pringhandle_array=%p, iarray_num=%d", \
- pmpinfo, inum, pringhandle_array, iarray_num, pmpinfo ? pmpinfo[0].stname.entype : (-1)); \
- return NSFW_MEM_ERR; \
- } \
- }
-
-#define NSFW_MEM_MBUF_CHECK_RET_ERR(mhandle, entype, desc) {\
- if ((NULL == mhandle) || (entype >= NSFW_MEM_TYPEMAX)) \
- { \
- NSCOMM_LOGERR("input para error] desc=%s, mhandle=%p, mtype=%d", desc, mhandle, entype); \
- return NSFW_MEM_ERR; \
- } \
- }
-
-#define NSFW_MEM_MBUF_CHECK_RET_NULL(mhandle, entype, desc) {\
- if ((NULL == mhandle) || (entype >= NSFW_MEM_TYPEMAX)) \
- { \
- NSCOMM_LOGERR("input para error] desc=%s, mhandle=%p, mtype=%d", desc, mhandle, entype); \
- return NULL; \
- } \
- }
-
-/*memory access inferface define*/
-typedef struct
-{
- i32 (*mem_ops_init) (nsfw_mem_para * para);
- void (*mem_ops_destroy) (void);
- mzone_handle (*mem_ops_zone_create) (nsfw_mem_zone * pinfo);
- i32 (*mem_ops_zone_createv) (nsfw_mem_zone * pmeminfo, i32 inum,
- mzone_handle * paddr_array, i32 iarray_num);
- mzone_handle (*mem_ops_zone_lookup) (nsfw_mem_name * pname);
- i32 (*mem_ops_mzone_release) (nsfw_mem_name * pname);
- mpool_handle (*mem_ops_mbfmp_create) (nsfw_mem_mbfpool * pbufinfo);
- i32 (*mem_ops_mbfmp_createv) (nsfw_mem_mbfpool * pmbfname, i32 inum,
- mpool_handle * phandle_array,
- i32 iarray_num);
- mbuf_handle (*mem_ops_mbf_alloc) (mpool_handle mhandle);
- i32 (*mem_ops_mbf_free) (mbuf_handle mhandle);
- mpool_handle (*mem_ops_mbfmp_lookup) (nsfw_mem_name * pmbfname);
- i32 (*mem_ops_mbfmp_release) (nsfw_mem_name * pname);
- mring_handle (*mem_ops_sp_create) (nsfw_mem_sppool * pmpinfo);
- i32 (*mem_ops_sp_createv) (nsfw_mem_sppool * pmpinfo, i32 inum,
- mring_handle * pringhandle_array,
- i32 iarray_num);
- i32 (*mem_ops_spring_create) (nsfw_mem_mring * prpoolinfo,
- mring_handle * pringhandle_array,
- i32 iringnum);
- i32 (*mem_ops_sp_release) (nsfw_mem_name * pname);
- mring_handle (*mem_ops_sp_lookup) (nsfw_mem_name * pname);
- mring_handle (*mem_ops_ring_create) (nsfw_mem_mring * pringinfo);
- mring_handle (*mem_ops_ring_lookup) (nsfw_mem_name * pname);
- i32 (*mem_ops_ring_release) (nsfw_mem_name * pname);
- ssize_t (*mem_ops_mem_statics) (void *handle, nsfw_mem_struct_type type);
- i32 (*mem_ops_mbuf_recycle) (mpool_handle handle);
- i32 (*mem_ops_sp_iterator) (mpool_handle handle, u32 start, u32 end,
- nsfw_mem_item_fun fun, void *argv);
- i32 (*mem_ops_mbuf_iterator) (mpool_handle handle, u32 start, u32 end,
- nsfw_mem_item_fun fun, void *argv);
-} nsfw_mem_ops;
-
-typedef struct
-{
- nsfw_mem_type entype;
- nsfw_mem_ops *stmemop;
-} nsfw_mem_attr;
-
-typedef struct
-{
- fw_poc_type enflag; /*app, nStackMain, Master */
-} nsfw_mem_localdata;
-
-extern nsfw_mem_attr g_nsfw_mem_ops[];
-extern i32 g_mem_type_num;
-#endif
diff --git a/src/framework/common/mem_mgr/include/nsfw_ring_data.h b/src/framework/common/mem_mgr/include/nsfw_ring_data.h
deleted file mode 100644
index e6007ab..0000000
--- a/src/framework/common/mem_mgr/include/nsfw_ring_data.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _NSFW_RING_DATA_H_
-#define _NSFW_RING_DATA_H_
-
-#include <stdint.h>
-#include "types.h"
-#include "common_mem_api.h"
-
-#define VALUE_LEN 40
-
-/*
-Ring Data has two part; Ver&Data
-val is a pointer offset base on rte_perf_ring::Addrbase, this struct support 1TB, it's enough now;
-future __int128 maybe used, this type can perfectly solve the version & address rang problem.
-*/
-union RingData_U
-{
- struct RingData_S
- {
- /*
- value of data, indeed it's a pointer offset base on rte_perf_ring::Addrbase;40bit is enough for user space addr
- ver must using 24bit, so val using 40bit; a CAS now just support 64bit; in future, we may using __int128,now __int128 not support well.
- */
- volatile unsigned long long val:VALUE_LEN;
- /*
- version of data, using 16b store version flg is more suitable for Address save, but using 16b version is too short, it's value range is [0-65535];
- between two cpu schedule time (TM-SPACE) of one process/thread, other processes/threads do N times queue oper. if N > 65535, still have a chance of ABA.
- if using a 24bit save version flg, if ABA happened, 16777216 times queue oper need done in one TM-SPACE, it's impossible for today cpu.
- */
- volatile unsigned long long ver:(64 - VALUE_LEN);
- } data_s;
- u64 data_l;
-};
-
-/*
- this high perf Ring rely on the init value of Ring Slot;
- Ring Must init using PerfRingInit, Pool Must init using PerfPoolInit
-
- the addrbase is base addr for all element; now we support 1024G offset;
- for nstack the Ring element is from hugepage, and the addr is in stack space.
-
- 1. not support a ring who's element space range bigger than 1024GB
- [if one element from heep, one from stack, range will bigger than 1024GB, we not support]
- 2. one more thing addr from mmap is in stack
- 3. rte_perf_ring must create by rte_perf_ring_create/rte_perf_pool_create
-*/
-struct nsfw_mem_ring
-{
- u8 memtype; //shared, no shared
- u8 ringflag; //scmp, scsp, mcsp,mcmp
- u16 reserv; //reserv data
- u32 size; //size of the Ring, must 2^n
- u32 eltsize; //for s-pool, it is the size of per buf, if is ring, eltsize is zero.
- u32 mask; //mask of the Ring, used mask mod Head/Tail to get real pos, must 2^n-1
- void *Addrbase; /*Cause the Addr we support just 40b(1024G), we using a basAddr+offset to get the real addr; ring[x].data_s.val just store offset;
- * not used when no shared mode
- */
- volatile u32_t prodhflag; //for nshmem fork recover
- volatile u32_t prodtflag; //for nshmem fork recover
- volatile u32_t conshflag; //for nshmem fork recover
- volatile u32_t constflag; //for nshmem fork recover
- nsfw_res res_chk;
-
- struct
- {
- volatile u32 head; //Head of the Ring, used to indicate pos where to pull a val
- volatile u32 tail; //for nshmem, shmem not used.
- } prod;
- struct
- {
- volatile u32 head; //for nshmem, shmem not used.
- volatile u32 tail; //Tail of the Ring, used to indicate pos where to push a val
- } cons;
- u32 uireserv[4]; //reserved for update
- union RingData_U ring[0]; //Value of Ring
-};
-
-#define PERFRING_ADDR_RANGE (0xFFFFFFFFFFL)
-
-#endif /*_NSFW_RING_DATA_H_*/
diff --git a/src/framework/common/mem_mgr/include/nsfw_ring_fun.h b/src/framework/common/mem_mgr/include/nsfw_ring_fun.h
deleted file mode 100644
index d74cc4b..0000000
--- a/src/framework/common/mem_mgr/include/nsfw_ring_fun.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _NSFW_RING_FUN_H_
-#define _NSFW_RING_FUN_H_
-
-#include <stdint.h>
-#include "common_pal_bitwide_adjust.h"
-#include "nsfw_mem_api.h"
-#include "nsfw_ring_data.h"
-
-/*
- for nstack I advise addrbase set to lowest of mmaped hugepage Addr.
- to simple:
- 1. ring element is from mmaped mem, set Addrbase to 0x7fffffffffff - 0xffffffffff is OK;
- 1. ring element is from heap, set Addrbase to NULL is ok;
-*/
-static inline void
-nsfw_mem_ring_init (struct nsfw_mem_ring *ring, unsigned int size,
- void *addrbase, unsigned char memtype, unsigned char flag)
-{
- unsigned int loop = 0;
-
- if (!ring)
- {
- return;
- }
-
- ring->prod.head = 0;
- ring->prod.tail = 0;
- ring->cons.head = 0;
- ring->cons.tail = 0;
- ring->size = size;
- ring->eltsize = 0;
- ring->mask = size - 1;
- ring->memtype = memtype;
- ring->ringflag = flag;
- ring->prodtflag = ring->prodhflag = get_sys_pid ();
- ring->conshflag = ring->constflag = get_sys_pid ();
- /*if shmem, addrbase already changed to primary memory address */
- ring->Addrbase = addrbase;
- ring->uireserv[0] = 0;
- ring->uireserv[1] = 0;
- ring->uireserv[2] = 0;
- ring->uireserv[3] = 0;
-
- /*init Ring */
- for (loop = 0; loop < size; loop++)
- {
- /*
- for a empty ring, version is the mapping head val - size
- so the empty ring's ver is loop-size;
- */
- ring->ring[loop].data_s.ver = (loop - size);
- ring->ring[loop].data_s.val = 0;
- }
-}
-
-/*
-another way to init Pool while no continuous space
-1. init a empty rte_perf_ring
-2. add element to PerRing.
-*/
-static inline void
-nsfw_mem_pool_head_init (struct nsfw_mem_ring *ring, unsigned int size,
- unsigned int eltsize, void *addrbase,
- nsfw_mem_type memtype, nsfw_mpool_type flag)
-{
- ring->prod.head = size;
- ring->prod.tail = size;
- ring->cons.head = 0;
- ring->cons.tail = 0;
- ring->size = size;
- ring->eltsize = eltsize;
- ring->mask = size - 1;
- ring->memtype = memtype;
- ring->ringflag = flag;
- ring->prodtflag = ring->prodhflag = get_sys_pid ();
- ring->conshflag = ring->constflag = get_sys_pid ();
- /*if shmem, addrbase already changed to primary memory address */
- ring->Addrbase = addrbase;
- ring->uireserv[0] = 0;
- ring->uireserv[1] = 0;
- ring->uireserv[2] = 0;
- ring->uireserv[3] = 0;
- return;
-}
-
-#define NSFW_RING_FLAG_CHECK_RET(handle, desc) {\
- if (((struct nsfw_mem_ring*)mhandle)->ringflag >= NSFW_MPOOL_TYPEMAX) \
- { \
- NSCOMM_LOGERR("invalid ring] desc=%s, ringflag=%d", desc, ((struct nsfw_mem_ring*)mhandle)->ringflag); \
- return 0; \
- } \
- }
-
-#endif /*_NSFW_RING_FUN_H_*/
diff --git a/src/framework/common/mem_mgr/nsfw_mem_api.c b/src/framework/common/mem_mgr/nsfw_mem_api.c
deleted file mode 100644
index c89ada1..0000000
--- a/src/framework/common/mem_mgr/nsfw_mem_api.c
+++ /dev/null
@@ -1,879 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include <sys/types.h>
-#include <unistd.h>
-#include "nsfw_mem_desc.h"
-#include "nstack_securec.h"
-
-#ifdef SYS_MEM_RES_STAT
-#include "common_mem_ring.h"
-#include "common_mem_mempool.h"
-#endif
-
-#define MEM_OP_CALL_OK_RET(mtype, fun, para) { \
- if (g_nsfw_mem_ops[mtype].stmemop->fun) \
- { \
- return g_nsfw_mem_ops[mtype].stmemop->fun para; \
- } \
- }
-
-/*****************************************************************************
-* Prototype : nsfw_mem_init
-* Description : memory mgr module init
-* Input : point to nstack_fwmem_para
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-i32
-nsfw_mem_init (void *para)
-{
- nsfw_mem_para *ptempara = NULL;
- i32 iret = NSFW_MEM_OK;
- i32 icount = 0;
- i32 iindex = 0;
-
- if (NULL == para)
- {
- NSCOMM_LOGERR ("ns mem init input error");
- return NSFW_MEM_ERR;
- }
-
- ptempara = (nsfw_mem_para *) para;
-
- if (ptempara->enflag >= NSFW_PROC_MAX)
- {
- NSCOMM_LOGERR ("ns mem init input enflag invalid] enflag=%d",
- ptempara->enflag);
- return NSFW_MEM_ERR;
- }
-
- NSCOMM_LOGINF ("ns mem init begin] enflag=%d, iargsnum=%d",
- ptempara->enflag, ptempara->iargsnum);
-
- for (iindex = 0; iindex < ptempara->iargsnum; iindex++)
- {
- NSCOMM_LOGINF ("%s", ptempara->pargs[iindex]);
- }
-
- for (icount = 0; icount < g_mem_type_num; icount++)
- {
- if ((NULL != g_nsfw_mem_ops[icount].stmemop)
- && (NULL != g_nsfw_mem_ops[icount].stmemop->mem_ops_init))
- {
- iret = g_nsfw_mem_ops[icount].stmemop->mem_ops_init (ptempara);
-
- if (NSFW_MEM_OK != iret)
- {
- NSCOMM_LOGERR ("mem init failed]index=%d, memtype=%d", icount,
- g_nsfw_mem_ops[icount].entype);
- break;
- }
- }
- }
-
- /*if some module init fail, destory the modules that success */
- if (icount < g_mem_type_num)
- {
- for (iindex = 0; iindex < icount; iindex++)
- {
- if (g_nsfw_mem_ops[icount].stmemop->mem_ops_destroy)
- {
- g_nsfw_mem_ops[icount].stmemop->mem_ops_destroy ();
- }
- }
-
- return NSFW_MEM_ERR;
- }
-
- NSCOMM_LOGINF ("ns mem init end");
- return NSFW_MEM_OK;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_zone_create
-* Description : create a block memory with name
-* nsfw_mem_zone::stname
-* nsfw_mem_zone::isize
-* note : 1. the length of name must be less than NSFW_MEM_APPNAME_LENGTH.
-* Input : nsfw_mem_zone* pinfo
-* Output : None
-* Return Value : mzone_handle
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-mzone_handle
-nsfw_mem_zone_create (nsfw_mem_zone * pinfo)
-{
-
- if ((NULL == pinfo) || (pinfo->stname.entype >= NSFW_MEM_TYPEMAX))
- {
- NSCOMM_LOGERR ("zone create input para error] pinfo=%p, mtype=%d",
- pinfo, pinfo ? pinfo->stname.entype : (-1));
- return NULL;
- }
-
- MEM_OP_CALL_OK_RET (pinfo->stname.entype, mem_ops_zone_create, (pinfo));
- NSCOMM_LOGINF ("mem create fail] memtype=%d, name=%s, size=%zu",
- pinfo->stname.entype, pinfo->stname.aname, pinfo->length);
- return NULL;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_zone_createv
-* Description : create some memory blocks
-* note : 1. the length of name must be less than NSFW_MEM_APPNAME_LENGTH.
-* Input : nsfw_mem_zone* pmeminfo
-* i32 inum
-* mzone_handle* paddr_array
-* i32 iarray_num
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-i32
-nsfw_mem_zone_createv (nsfw_mem_zone * pmeminfo, i32 inum,
- mzone_handle * paddr_array, i32 iarray_num)
-{
- if ((NULL == pmeminfo) || (NULL == paddr_array)
- || (inum != iarray_num) || (inum <= 0)
- || (pmeminfo[0].stname.entype >= NSFW_MEM_TYPEMAX))
- {
- NSCOMM_LOGERR
- ("input para error] pmeminfo=%p, inum=%d, paddr_array=%p, iarray_num=%d, mtype=%d",
- pmeminfo, inum, paddr_array, iarray_num,
- pmeminfo ? pmeminfo[0].stname.entype : (-1));
- return NSFW_MEM_ERR;
- }
-
- MEM_OP_CALL_OK_RET (pmeminfo[0].stname.entype, mem_ops_zone_createv,
- (pmeminfo, inum, paddr_array, iarray_num));
- NSCOMM_LOGINF ("mem create fail] memtype=%d", pmeminfo[0].stname.entype);
- return NSFW_MEM_ERR;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_zone_lookup
-* Description : look up a memory
-* 1. the length of name must be less than NSFW_MEM_APPNAME_LENGTH.
-* 2. if the memory is shared, pname->enowner indicate that who create this memory.
-* note : 1. when calling any shared memory create inferface, the name of memory end with _0 created by nStackMain,
-* end with none created by nStackMaster, and end with _<pid> created by other.
-* 2. pname->enowner is available only when call look up shared memory.
-* 3. if the roles of process is NSFW_PROC_MASTER but the memory was created by others, or pname->enowner is NSFW_PROC_NULL,
-* the name must be full name.
-* for examles if the memory was created by nStackMain and pname->enowner is NSFW_PROC_NULL,
-* must add '_0' at the end of name, if the memory was created by app and the role of process is NSFW_PROC_MASTER, must add
-* _(pid) at the end of name, nstack_123.
-* Input : nsfw_mem_name* pname
-* Output : None
-* Return Value : mzone_handle
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-mzone_handle
-nsfw_mem_zone_lookup (nsfw_mem_name * pname)
-{
- NSFW_MEM_NAME_CHECK_RET_NULL (pname, "mem zone look up");
- MEM_OP_CALL_OK_RET (pname->entype, mem_ops_zone_lookup, (pname));
- NSCOMM_LOGERR ("mem lookup fail] memtype=%d, name=%s ", pname->entype,
- pname->aname);
- return NULL;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_zone_release
-* Description : release a memory
-* Input : nsfw_mem_name* pname
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-i32
-nsfw_mem_zone_release (nsfw_mem_name * pname)
-{
- NSFW_MEM_NAME_CHECK_RET_ERR (pname, "mem zone release");
- MEM_OP_CALL_OK_RET (pname->entype, mem_ops_mzone_release, (pname));
- NSCOMM_LOGERR ("mem release fail] memtype=%d, name=%s", pname->entype,
- pname->aname);
- return NSFW_MEM_ERR;
-
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_mbfmp_create
-* Description : create a mbuf pool
-* Input : nsfw_mem_mbfpool* pbufinfo
-* Output : None
-* Return Value : mpool_handle
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-mpool_handle
-nsfw_mem_mbfmp_create (nsfw_mem_mbfpool * pbufinfo)
-{
- if ((NULL == pbufinfo) || (pbufinfo->stname.entype >= NSFW_MEM_TYPEMAX))
- {
- NSCOMM_LOGERR ("input para error] pbufinfo=%p, mtype=%d", pbufinfo,
- pbufinfo ? pbufinfo->stname.entype : (-1));
- return NULL;
- }
-
- MEM_OP_CALL_OK_RET (pbufinfo->stname.entype, mem_ops_mbfmp_create,
- (pbufinfo));
- NSCOMM_LOGERR ("mbufmp create fail] memtype=%d, name=%s ",
- pbufinfo->stname.entype, pbufinfo->stname.aname);
- return NULL;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_mbfmp_createv
-* Description : create some mbuf pools
-* 1. the name of length must be less than NSFW_MEM_APPNAME_LENGTH.
-* Input : nsfw_mem_mbfpool* pmbfname
-* i32 inum
-* mpool_handle* phandle_array
-* i32 iarray_num
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-i32
-nsfw_mem_mbfmp_createv (nsfw_mem_mbfpool * pmbfname, i32 inum,
- mpool_handle * phandle_array, i32 iarray_num)
-{
- if ((NULL == pmbfname) || (NULL == phandle_array)
- || (inum != iarray_num) || (inum <= 0)
- || (pmbfname[0].stname.entype >= NSFW_MEM_TYPEMAX))
- {
- NSCOMM_LOGERR
- ("input para error] pmbfname=%p, inum=%d, phandle_array=%p, iarray_num=%d",
- pmbfname, inum, phandle_array, iarray_num,
- pmbfname ? pmbfname[0].stname.entype : (-1));
- return NSFW_MEM_ERR;
- }
-
- MEM_OP_CALL_OK_RET (pmbfname[0].stname.entype, mem_ops_mbfmp_createv,
- (pmbfname, inum, phandle_array, iarray_num));
- NSCOMM_LOGERR ("mbufmp createv fail] memtype=%d",
- pmbfname[0].stname.entype);
- return NSFW_MEM_ERR;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_mbf_alloc
-* Description : alloc a mbuf from mbuf pool
-* Input : mpool_handle mhandle
-* nsfw_mem_type entype
-* Output : None
-* Return Value : mbuf_handle
-* Calls :
-* Called By :
-*****************************************************************************/
-mbuf_handle
-nsfw_mem_mbf_alloc (mpool_handle mhandle, nsfw_mem_type entype)
-{
- NSFW_MEM_MBUF_CHECK_RET_NULL (mhandle, entype, "mbf alloc");
- MEM_OP_CALL_OK_RET (entype, mem_ops_mbf_alloc, (mhandle));
- NSCOMM_LOGERR ("mbf alloc fail] handle=%p, type=%d", mhandle, entype);
- return NULL;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_mbf_free
-* Description : put a mbuf backintp mbuf pool
-* Input : mbuf_handle mhandle
-* nsfw_mem_type entype
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-i32
-nsfw_mem_mbf_free (mbuf_handle mhandle, nsfw_mem_type entype)
-{
- NSFW_MEM_MBUF_CHECK_RET_ERR (mhandle, entype, "mbuf free");
- MEM_OP_CALL_OK_RET (entype, mem_ops_mbf_free, (mhandle));
- NSCOMM_LOGERR ("mbf free fail] handle=%p, type=%d", mhandle, entype);
- return NSFW_MEM_ERR;
-
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_mbfmp_lookup
-* Description : look up mbuf mpool
-* 1. the length of name must be less than NSFW_MEM_APPNAME_LENGTH.
-* 2. if the memory is shared, pname->enowner indicate that who create this memory.
-* note : 1. when calling any shared memory create inferface, the name of memory end with _0 created by nStackMain,
-* end with none created by nStackMaster, and end with _<pid> created by other.
-* 2. pname->enowner is available only when call look up shared memory.
-* 3. if the roles of process is NSFW_PROC_MASTER but the memory was created by others, or pname->enowner is NSFW_PROC_NULL,
-* the name must be full name.
-* for examles if the memory was created by nStackMain and pname->enowner is NSFW_PROC_NULL,
-* must add '_0' at the end of name, if the memory was created by app and the role of process is NSFW_PROC_MASTER, must add
-* _(pid) at the end of name, nstack_123.
-* Input : nsfw_mem_name* pmbfname
-* Output : None
-* Return Value : mpool_handle
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-mpool_handle
-nsfw_mem_mbfmp_lookup (nsfw_mem_name * pmbfname)
-{
- NSFW_MEM_NAME_CHECK_RET_NULL (pmbfname, "mbuf pool look up");
- MEM_OP_CALL_OK_RET (pmbfname->entype, mem_ops_mbfmp_lookup, (pmbfname));
- NSCOMM_LOGERR ("mbufmp lookup fail] memtype=%d, name=%s ", pmbfname->entype,
- pmbfname->aname);
- return NULL;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_mbfmp_release
-* Description : release mbuf pool
-* note : 1. the length of name must be less than NSFW_MEM_APPNAME_LENGTH.
-* Input : nsfw_mem_name* pname
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-i32
-nsfw_mem_mbfmp_release (nsfw_mem_name * pname)
-{
- NSFW_MEM_NAME_CHECK_RET_ERR (pname, "mbuf mp release");
- MEM_OP_CALL_OK_RET (pname->entype, mem_ops_mbfmp_release, (pname));
- NSCOMM_LOGERR ("mbfmp release fail] memtype=%d, name=%s", pname->entype,
- pname->aname);
- return NSFW_MEM_ERR;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_sp_create
-* Description : create a simple pool
-* note : 1. the length of name must be less than NSFW_MEM_APPNAME_LENGTH.
-* Input : nsfw_mem_sppool* pmpinfo
-* Output : None
-* Return Value : mring_handle
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-mring_handle
-nsfw_mem_sp_create (nsfw_mem_sppool * pmpinfo)
-{
- if ((NULL == pmpinfo) || (pmpinfo->stname.entype >= NSFW_MEM_TYPEMAX))
- {
- NSCOMM_LOGERR ("input para error] pmpinfo=%p, mtype=%d", pmpinfo,
- pmpinfo ? pmpinfo->stname.entype : (-1));
- return NULL;
- }
-
- MEM_OP_CALL_OK_RET (pmpinfo->stname.entype, mem_ops_sp_create, (pmpinfo));
- NSCOMM_LOGERR ("sp create fail] memtype=%d, name=%s ",
- pmpinfo->stname.entype, pmpinfo->stname.aname);
- return NULL;
-
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_sp_createv
-* Description : create some simple pools one time
-* note : 1. the length of name must be less than NSFW_MEM_APPNAME_LENGTH.
-* Input : nsfw_mem_sppool* pmpinfo
-* i32 inum
-* mring_handle* pringhandle_array
-* i32 iarray_num
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-i32
-nsfw_mem_sp_createv (nsfw_mem_sppool * pmpinfo, i32 inum,
- mring_handle * pringhandle_array, i32 iarray_num)
-{
- NSFW_MEM_RINGV_CHECK_RET (pmpinfo, inum, pringhandle_array, iarray_num);
- MEM_OP_CALL_OK_RET (pmpinfo[0].stname.entype, mem_ops_sp_createv,
- (pmpinfo, inum, pringhandle_array, iarray_num));
- NSCOMM_LOGERR ("sp createv fail] memtype=%d", pmpinfo[0].stname.entype);
- return NSFW_MEM_ERR;
-
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_sp_ring_create
-* Description : create a simple pool with many rings
-* note : 1. the length of name must be less than NSFW_MEM_APPNAME_LENGTH.
-* Input : nsfw_mem_mring* pringinfo
-* mring_handle* pringhandle_array
-* i32 iringnum
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-i32
-nsfw_mem_sp_ring_create (nsfw_mem_mring * pringinfo,
- mring_handle * pringhandle_array, i32 iringnum)
-{
- NSFW_MEM_RING_CHECK_RET (pringinfo, pringhandle_array, iringnum);
- MEM_OP_CALL_OK_RET (pringinfo[0].stname.entype, mem_ops_spring_create,
- (pringinfo, pringhandle_array, iringnum));
- NSCOMM_LOGERR ("mppool spring creat fail] memtype=%d",
- pringinfo[0].stname.entype);
- return NSFW_MEM_ERR;
-
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_sp_release
-* Description : release a simple mempool
-* note : 1. the length of name must be less than NSFW_MEM_APPNAME_LENGTH.
-* Input : nsfw_mem_name* pname
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*****************************************************************************/
-i32
-nsfw_mem_sp_release (nsfw_mem_name * pname)
-{
- NSFW_MEM_NAME_CHECK_RET_ERR (pname, "sp release");
- MEM_OP_CALL_OK_RET (pname->entype, mem_ops_sp_release, (pname));
- NSCOMM_LOGERR ("sp release fail] memtype=%d, name=%s ", pname->entype,
- pname->aname);
- return NSFW_MEM_ERR;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_sp_lookup
-* Description : look up a simpile ring
-* 1. the length of name must be less than NSFW_MEM_APPNAME_LENGTH.
-* 2. if the memory is shared, pname->enowner indicate that who create this memory.
-* note : 1. when calling any shared memory create inferface, the name of memory end with _0 created by nStackMain,
-* end with none created by nStackMaster, and end with _<pid> created by other.
-* 2. pname->enowner is available only when call look up shared memory.
-* 3. if the roles of process is NSFW_PROC_MASTER but the memory was created by others, or pname->enowner is NSFW_PROC_NULL,
-* the name must be full name.
-* for examles if the memory was created by nStackMain and pname->enowner is NSFW_PROC_NULL,
-* must add '_0' at the end of name, if the memory was created by app and the role of process is NSFW_PROC_MASTER, must add
-* _(pid) at the end of name, nstack_123.
-* Input : nsfw_mem_name* pname
-* Output : None
-* Return Value : mring_handle
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-mring_handle
-nsfw_mem_sp_lookup (nsfw_mem_name * pname)
-{
- NSFW_MEM_NAME_CHECK_RET_NULL (pname, "sp look up");
- MEM_OP_CALL_OK_RET (pname->entype, mem_ops_sp_lookup, (pname));
- NSCOMM_LOGERR ("sp lookup fail] memtype=%d, name=%s", pname->entype,
- pname->aname);
- return NULL;
-
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_ring_create
-* Description : create a ring
-* note : 1. the length of name must be less than NSFW_MEM_APPNAME_LENGTH.
-* 2. shared memory ring (NSFW_SHMEM) just can put a pointer into the queue, the queue also point to a shared block memory.
-* no shared memory ring(NSFW_NSHMEM) is other wise.
-* Input : nsfw_mem_mring* pringinfo
-* Output : None
-* Return Value : mring_handle
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-mring_handle
-nsfw_mem_ring_create (nsfw_mem_mring * pringinfo)
-{
- if ((NULL == pringinfo) || (pringinfo->stname.entype >= NSFW_MEM_TYPEMAX))
- {
- NSCOMM_LOGERR ("input para error] pmpinfo=%p, mtype=%d", pringinfo,
- pringinfo ? pringinfo->stname.entype : (-1));
- return NULL;
- }
-
- MEM_OP_CALL_OK_RET (pringinfo->stname.entype, mem_ops_ring_create,
- (pringinfo));
- NSCOMM_LOGERR ("ring create fail] memtype=%d, name=%s ",
- pringinfo->stname.entype, pringinfo->stname.aname);
- return NULL;
-
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_ring_lookup
-* Description : look up a ring by name
-* 1. the length of name must be less than NSFW_MEM_APPNAME_LENGTH.
-* 2. if the memory is shared, pname->enowner indicate that who create this memory.
-* note:
-* 1. when calling any shared memory create inferface, the name of memory end with _0 created by nStackMain,
-* end with none created by nStackMaster, and end with _<pid> created by other.
-* 2. pname->enowner is available only when call look up shared memory.
-* 3. if the roles of process is NSFW_PROC_MASTER but the memory was created by others, or pname->enowner is NSFW_PROC_NULL,
-* the name must be full name.
-* for examles if the memory was created by nStackMain and pname->enowner is NSFW_PROC_NULL,
-* must add '_0' at the end of name, if the memory was created by app and the role of process is NSFW_PROC_MASTER, must add
-* _(pid) at the end of name, nstack_123.
-* Input : nsfw_mem_name* pname
-* Output : None
-* Return Value : mring_handle
-* Calls :
-* Called By :
-*
-*
-*****************************************************************************/
-mring_handle
-nsfw_mem_ring_lookup (nsfw_mem_name * pname)
-{
- NSFW_MEM_NAME_CHECK_RET_NULL (pname, "ring lookup");
- MEM_OP_CALL_OK_RET (pname->entype, mem_ops_ring_lookup, (pname));
- NSCOMM_LOGERR ("ring lookup fail] memtype=%d, name=%s", pname->entype,
- pname->aname);
- return NULL;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_ring_reset
-* Description : reset the number of producer and consumer, also, the
-* state of ring reset to empty
-* notes : must be called before doing any operations base on the ring
-* Input : mring_handle mhandle
-* nsfw_mpool_type entype
-* Output : None
-* Return Value : void
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-void
-nsfw_mem_ring_reset (mring_handle mhandle, nsfw_mpool_type entype)
-{
- u32 loop = 0;
- struct nsfw_mem_ring *ring = (struct nsfw_mem_ring *) mhandle;
-
- if (!ring)
- {
- return;
- }
-
- ring->prod.head = 0;
- ring->cons.tail = 0;
- ring->ringflag = (u8) entype;
-
- /*init Ring */
- for (loop = 0; loop < ring->size; loop++)
- {
- /*
- for a empty ring, version is the mapping head val - size
- so the empty ring's ver is loop-size;
- */
- ring->ring[loop].data_s.ver = (loop - ring->size);
- ring->ring[loop].data_s.val = 0;
- }
-
- return;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_ring_free_count
-* Description : get the free number of ring
-* Input : mring_handle mhandle
-* Output : None
-* Return Value : u32
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-u32
-nsfw_mem_ring_free_count (mring_handle mhandle)
-{
- struct nsfw_mem_ring *temp = NULL;
- u32 thead = 0;
- u32 ttail = 0;
- if (NULL == mhandle)
- {
- NSCOMM_LOGERR ("input para error] mhandle=%p", mhandle);
- return 0;
- }
-
- temp = (struct nsfw_mem_ring *) mhandle;
- thead = temp->prod.head;
- ttail = temp->cons.tail;
- return ttail + temp->size - thead;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_ring_using_count
-* Description : get the in using number of ring
-* Input : mring_handle mhandle
-* Output : None
-* Return Value : u32
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-u32
-nsfw_mem_ring_using_count (mring_handle mhandle)
-{
- struct nsfw_mem_ring *temp = NULL;
- u32 thead = 0;
- u32 ttail = 0;
- if (NULL == mhandle)
- {
- NSCOMM_LOGERR ("input para error] mhandle=%p", mhandle);
- return 0;
- }
-
- temp = (struct nsfw_mem_ring *) mhandle;
- thead = temp->prod.head;
- ttail = temp->cons.tail;
- return thead - ttail;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_ring_size
-* Description : get size of ring
-* Input : mring_handle mhandle
-* Output : None
-* Return Value : u32
-* Calls :
-* Called By :
-*****************************************************************************/
-u32
-nsfw_mem_ring_size (mring_handle mhandle)
-{
- struct nsfw_mem_ring *temp = NULL;
-
- if (NULL == mhandle)
- {
- NSCOMM_LOGERR ("input para error] mhandle=%p", mhandle);
- return 0;
- }
-
- temp = (struct nsfw_mem_ring *) mhandle;
-
- return temp->size;
-}
-
-#ifdef SYS_MEM_RES_STAT
-/*****************************************************************************
-* Prototype : nsfw_mem_mbfpool_free_count
-* Description : get the free mbuf count of a mbuf pool
-* Input : mpool_handle mhandle
-* Output : None
-* Return Value : u32
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-u32
-nsfw_mem_mbfpool_free_count (mpool_handle mhandle)
-{
- if (!mhandle)
- {
- NSCOMM_LOGERR ("input para error] mhandle=%p", mhandle);
- return 0;
- }
- struct common_mem_mempool *mp = (struct common_mem_mempool *) mhandle;
- struct common_mem_ring *mp_ring =
- (struct common_mem_ring *) (mp->ring_align);
- if (!mp_ring)
- {
- NSCOMM_LOGERR ("ring is null");
- return 0;
- }
- u32 p_head = mp_ring->prod.head;
- u32 c_tail = mp_ring->cons.tail;
-
- return p_head - c_tail;
-}
-#endif /* SYS_MEM_RES_STAT */
-
-/*****************************************************************************
-* Prototype : nsfw_mem_ring_release
-* Description : release a ring memory
-* notes : the length of name must be less than NSFW_MEM_APPNAME_LENGTH
-* Input : nsfw_mem_name* pname
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*****************************************************************************/
-i32
-nsfw_mem_ring_release (nsfw_mem_name * pname)
-{
- NSFW_MEM_NAME_CHECK_RET_ERR (pname, "ring release");
- MEM_OP_CALL_OK_RET (pname->entype, mem_ops_ring_release, (pname));
- NSCOMM_LOGERR ("ring release fail] name=%s, type=%d", pname->aname,
- pname->entype);
- return NSFW_MEM_ERR;
-
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_get_len
-* Description : statics mbufpool, sppool, ring mem size.
-* return: <=0, err happen, >0 mem size
-* NSFW_MEM_MZONE: not surport because you already know the length when create
-* Input : void * handle
-* nsfw_mem_struct_type type
-* Output : None
-* Return Value : ssize_t
-* Calls :
-* Called By :
-*****************************************************************************/
-ssize_t
-nsfw_mem_get_len (void *handle, nsfw_mem_struct_type type)
-{
- if (NULL == handle)
- {
- NSCOMM_LOGERR ("input para error] handle=%p", handle);
- return -1;
- }
- if ((NSFW_MEM_SPOOL == type) || (NSFW_MEM_RING == type))
- {
- struct nsfw_mem_ring *ring = (struct nsfw_mem_ring *) handle;
- if (ring->memtype >= NSFW_MEM_TYPEMAX)
- {
- NSCOMM_LOGERR ("invalid ring] ring type=%u ,handle=%p",
- ring->memtype, handle);
- return -1;
- }
- MEM_OP_CALL_OK_RET (ring->memtype, mem_ops_mem_statics, (handle, type));
- }
- else
- {
- MEM_OP_CALL_OK_RET (NSFW_SHMEM, mem_ops_mem_statics, (handle, type));
- }
- return -1;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_mbuf_pool_recycle
-* Description : recycle mbuf
-* Input : mpool_handle handle
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*****************************************************************************/
-i32
-nsfw_mem_mbuf_pool_recycle (mpool_handle handle)
-{
- MEM_OP_CALL_OK_RET (NSFW_SHMEM, mem_ops_mbuf_recycle, (handle));
- return -1;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_sp_iterator
-* Description : spool iterator
-* Input : mpool_handle handle
-* u32 start
-* u32 end
-* nsfw_mem_item_fun fun
-* void *argv
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-i32
-nsfw_mem_sp_iterator (mpool_handle handle, u32 start, u32 end,
- nsfw_mem_item_fun fun, void *argv)
-{
- MEM_OP_CALL_OK_RET (NSFW_SHMEM, mem_ops_sp_iterator,
- (handle, start, end, fun, argv));
- return -1;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_mbuf_iterator
-* Description : mbuf iterator
-* Input : mpool_handle handle
-* u32 start
-* u32 end
-* nsfw_mem_item_fun fun
-* void *argv
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-i32
-nsfw_mem_mbuf_iterator (mpool_handle handle, u32 start, u32 end,
- nsfw_mem_item_fun fun, void *argv)
-{
- MEM_OP_CALL_OK_RET (NSFW_SHMEM, mem_ops_mbuf_iterator,
- (handle, start, end, fun, argv));
- return -1;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_dfx_ring_print
-* Description : print ring info
-* Input : mring_handle mhandle
-* Output : None
-* Return Value : if no err happen, return the length of string print, 0 or -1 maybe err happen
-* Calls :
-* Called By :
-*****************************************************************************/
-i32
-nsfw_mem_dfx_ring_print (mring_handle mhandle, char *pbuf, int length)
-{
- struct nsfw_mem_ring *temp = (struct nsfw_mem_ring *) mhandle;
- u32 head = 0;
- u32 tail = 0;
- int ret = 0;
- if ((!temp) || (!pbuf) || (length <= 0))
- {
- return 0;
- }
- head = temp->prod.head;
- tail = temp->cons.tail;
- ret =
- SPRINTF_S (pbuf, length,
- "[.Head=%u,\n .Tail=%u,\n .(|Tail-Head|)=%u,\n .size=%u,\n .mask=%u]\n",
- head, tail, (tail >= head) ? (tail - head) : (head - tail),
- temp->size, temp->mask);
- return ret;
-}
diff --git a/src/framework/common/mem_mgr/nsfw_mem_construct.c b/src/framework/common/mem_mgr/nsfw_mem_construct.c
deleted file mode 100644
index ed6fe27..0000000
--- a/src/framework/common/mem_mgr/nsfw_mem_construct.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include "nsfw_init.h"
-#include "nsfw_mem_api.h"
-
-NSFW_MODULE_NAME (NSFW_MEM_MGR_MODULE)
-NSFW_MODULE_PRIORITY (10) NSFW_MODULE_INIT (nsfw_mem_init)
diff --git a/src/framework/common/mem_mgr/nsfw_mem_desc.c b/src/framework/common/mem_mgr/nsfw_mem_desc.c
deleted file mode 100644
index d0fbfd3..0000000
--- a/src/framework/common/mem_mgr/nsfw_mem_desc.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include <sys/types.h>
-#include <unistd.h>
-#include "nsfw_mem_desc.h"
-#include "nsfw_shmem_mdesc.h"
-#include "nsfw_nshmem_mdesc.h"
-#include "nsfw_shmem_ring.h"
-#include "nsfw_nshmem_ring.h"
-
-/* *INDENT-OFF* */
-/*the order you add must be NSFW_SHMEM, NSFW_NSHMEM*/
-nsfw_mem_attr g_nsfw_mem_ops[] =
-{
- {NSFW_SHMEM, &g_shmem_ops},
- {NSFW_NSHMEM, &g_nshmem_ops},
-};
-
-i32 g_mem_type_num = sizeof(g_nsfw_mem_ops) / sizeof(nsfw_mem_attr);
-
-
-nsfw_ring_ops g_ring_ops_arry[NSFW_MEM_TYPEMAX][NSFW_MPOOL_TYPEMAX] = {
- {
- {
- (nsfw_mem_ring_enqueue_fun)nsfw_shmem_ring_sp_enqueue, \
- (nsfw_mem_ring_dequeue_fun)nsfw_shmem_ring_sc_dequeue, \
- (nsfw_mem_ring_dequeuev_fun)nsfw_shmem_ring_sc_dequeuev
- },
- {
- (nsfw_mem_ring_enqueue_fun)nsfw_shmem_ring_mp_enqueue, \
- (nsfw_mem_ring_dequeue_fun)nsfw_shmem_ring_sc_dequeue, \
- (nsfw_mem_ring_dequeuev_fun)nsfw_shmem_ring_sc_dequeuev
- },
- {
- (nsfw_mem_ring_enqueue_fun)nsfw_shmem_ring_sp_enqueue, \
- (nsfw_mem_ring_dequeue_fun)nsfw_shmem_ring_mc_dequeue, \
- (nsfw_mem_ring_dequeuev_fun)nsfw_shmem_ring_mc_dequeuev
- },
- {
- (nsfw_mem_ring_enqueue_fun)nsfw_shmem_ring_mp_enqueue, \
- (nsfw_mem_ring_dequeue_fun)nsfw_shmem_ring_mc_dequeue, \
- (nsfw_mem_ring_dequeuev_fun)nsfw_shmem_ring_mc_dequeuev
- },
- {
- (nsfw_mem_ring_enqueue_fun)nsfw_shmem_ring_singlethread_enqueue, \
- (nsfw_mem_ring_dequeue_fun)nsfw_shmem_ring_singlethread_dequeue, \
- (nsfw_mem_ring_dequeuev_fun)nsfw_shmem_ring_singlethread_dequeuev
- }
- },
- {
- {
- (nsfw_mem_ring_enqueue_fun)nsfw_nshmem_ring_sp_enqueue, \
- (nsfw_mem_ring_dequeue_fun)nsfw_nshmem_ring_sc_dequeue, \
- (nsfw_mem_ring_dequeuev_fun)nsfw_nshmem_ring_sc_dequeuev
- },
- {
- (nsfw_mem_ring_enqueue_fun)nsfw_nshmem_ring_mp_enqueue, \
- (nsfw_mem_ring_dequeue_fun)nsfw_nshmem_ring_sc_dequeue, \
- (nsfw_mem_ring_dequeuev_fun)nsfw_nshmem_ring_sc_dequeuev
- },
- {
- (nsfw_mem_ring_enqueue_fun)nsfw_nshmem_ring_sp_enqueue, \
- (nsfw_mem_ring_dequeue_fun)nsfw_nshmem_ring_mc_dequeue, \
- (nsfw_mem_ring_dequeuev_fun)nsfw_nshmem_ring_mc_dequeuev
- },
- {
- (nsfw_mem_ring_enqueue_fun)nsfw_nshmem_ring_mp_enqueue, \
- (nsfw_mem_ring_dequeue_fun)nsfw_nshmem_ring_mc_dequeue, \
- (nsfw_mem_ring_dequeuev_fun)nsfw_nshmem_ring_mc_dequeuev
- },
- {
- (nsfw_mem_ring_enqueue_fun)nsfw_nshmem_ring_singlethread_enqueue, \
- (nsfw_mem_ring_dequeue_fun)nsfw_nshmem_ring_singlethread_dequeue, \
- (nsfw_mem_ring_dequeuev_fun)nsfw_nshmem_ring_singlethread_dequeuev
- }
- }
-};
-/* *INDENT-ON* */
diff --git a/src/framework/common/mem_mgr/nsfw_mem_stat.c b/src/framework/common/mem_mgr/nsfw_mem_stat.c
deleted file mode 100644
index f7a1f41..0000000
--- a/src/framework/common/mem_mgr/nsfw_mem_stat.c
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include <stdlib.h>
-#include "types.h"
-#include "nstack_securec.h"
-#include "nsfw_init.h"
-
-#include "nstack_log.h"
-#include "nsfw_maintain_api.h"
-#include "nsfw_mem_api.h"
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C"{
-/* *INDENT-ON* */
-#endif /* __cplusplus */
-
-#define NSFW_MEM_STAT_NUM 512
-
-#define NSFW_MEM_STAT_MODULE "nsfw_mem_stat_module"
-
-typedef struct _nsfw_mem_stat
-{
- u8 mem_type;
- u8 alloc_flag;
- char module[NSFW_MEM_MODULE_LEN];
- char mem_name[NSFW_MEM_NAME_LEN];
- u32 mem_size;
-} nsfw_mem_stat_t;
-
-nsfw_mem_stat_t g_mem_stat[NSFW_MEM_STAT_NUM];
-
-#ifdef SYS_MEM_RES_STAT
-#define MAX_STAT_ITEM_NUM 20
-typedef struct _mem_stat_item_t
-{
- char name[32];
- u64 size;
-} mem_stat_item_t;
-
-typedef struct _mem_stat_mgr_t
-{
- u32 item_num;
- mem_stat_item_t item[MAX_STAT_ITEM_NUM];
-} mem_stat_mgr;
-
-mem_stat_mgr g_max_mem_list;
-#endif
-
-/*****************************************************************************
-* Prototype : nsfw_mem_stat
-* Description : add memory stat
-* Input : char *module
-* char *mem_name
-* u8 mem_type
-* u32 mem_size
-* Output : None
-* Return Value : void
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-void
-nsfw_mem_stat (char *module, char *mem_name, u8 mem_type, u32 mem_size)
-{
- if (NULL == module || NULL == mem_name)
- {
- NSFW_LOGERR ("argv err]module=%p,mem_name=%p", module, mem_name);
- return;
- }
-
- int i;
- nsfw_mem_stat_t *mem_stat_item = NULL;
- for (i = 0; i < NSFW_MEM_STAT_NUM; i++)
- {
- if (FALSE == g_mem_stat[i].alloc_flag)
- {
- g_mem_stat[i].alloc_flag = TRUE;
- mem_stat_item = &g_mem_stat[i];
- break;
- }
- }
-
- if (NULL == mem_stat_item)
- {
- NSFW_LOGERR ("mem stat full]module=%s,type=%u,name=%s,size=%u",
- module, mem_type, mem_name, mem_size);
- return;
- }
-
- mem_stat_item->mem_type = mem_type;
- mem_stat_item->mem_size = mem_size;
-
- if (EOK != STRCPY_S (mem_stat_item->module, NSFW_MEM_MODULE_LEN, module))
- {
- NSFW_LOGERR ("STRNCPY_S failed");
- return;
- }
- if (EOK != STRCPY_S (mem_stat_item->mem_name, NSFW_MEM_NAME_LEN, mem_name))
- {
- NSFW_LOGERR ("STRNCPY_S failed");
- return;
- }
-
- return;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_stat_print
-* Description : print all memory info
-* Input : None
-* Output : None
-* Return Value : void
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-void
-nsfw_mem_stat_print ()
-{
- int i;
- for (i = 0; i < NSFW_MEM_STAT_NUM; i++)
- {
- if (TRUE == g_mem_stat[i].alloc_flag)
- {
- NSFW_LOGINF ("mem_module=%s,name=%s,type=%u,size=%u",
- g_mem_stat[i].module, g_mem_stat[i].mem_name,
- g_mem_stat[i].mem_type, g_mem_stat[i].mem_size);
- }
- }
-
-}
-
-#ifdef SYS_MEM_RES_STAT
-void
-clear_mem_stat_item ()
-{
- if (EOK != MEMSET_S ((char *) &g_max_mem_list, sizeof (mem_stat_mgr),
- 0, sizeof (mem_stat_mgr)))
- {
- NSFW_LOGERR ("MEMSET_S failed");
- }
-}
-
-void
-insert_mem_stat_item (char *name, u64 len)
-{
- int j, temp;
-
- if (g_max_mem_list.item_num == 0)
- {
- if (EOK !=
- STRCPY_S (g_max_mem_list.item[0].name,
- sizeof (g_max_mem_list.item[0].name), name))
- {
- NSFW_LOGERR ("STRCPY_S failed");
- }
- g_max_mem_list.item[0].size = len;
- g_max_mem_list.item_num++;
- return;
- }
- else if (g_max_mem_list.item_num < MAX_STAT_ITEM_NUM)
- {
- if (len <= g_max_mem_list.item[g_max_mem_list.item_num - 1].size)
- {
- if (EOK !=
- STRCPY_S (g_max_mem_list.item[g_max_mem_list.item_num].name,
- sizeof (g_max_mem_list.item
- [g_max_mem_list.item_num].name), name))
- {
- NSFW_LOGERR ("STRCPY_S failed");
- }
- g_max_mem_list.item[g_max_mem_list.item_num].size = len;
- g_max_mem_list.item_num++;
- return;
- }
- j = 0;
- temp = g_max_mem_list.item_num;
- while (j < temp)
- {
- if (len >= g_max_mem_list.item[j].size)
- {
- goto insert_it;
- }
- j++;
- }
- if (j == temp)
- {
- if (EOK !=
- STRCPY_S (g_max_mem_list.item[j].name,
- sizeof (g_max_mem_list.item[j].name), name))
- {
- NSFW_LOGERR ("STRCPY_S failed");
- }
- g_max_mem_list.item[j].size = len;
- g_max_mem_list.item_num++;
- return;
- }
- }
- else
- {
- j = 0;
- temp = MAX_STAT_ITEM_NUM - 1;
- while (j < MAX_STAT_ITEM_NUM)
- {
- if (len >= g_max_mem_list.item[j].size)
- {
- goto insert_it;
- }
- j++;
- }
- }
-
- return;
-
-insert_it:
- while (temp - 1 >= j)
- {
- if (EOK !=
- STRCPY_S (g_max_mem_list.item[temp].name,
- sizeof (g_max_mem_list.item[temp].name),
- g_max_mem_list.item[temp - 1].name))
- {
- NSFW_LOGERR ("STRCPY_S failed");
- }
- g_max_mem_list.item[temp].size = g_max_mem_list.item[temp - 1].size;
- temp--;
- }
- if (EOK !=
- STRCPY_S (g_max_mem_list.item[j].name,
- sizeof (g_max_mem_list.item[j].name), name))
- {
- NSFW_LOGERR ("STRCPY_S failed");
- }
- g_max_mem_list.item[j].size = len;
- g_max_mem_list.item_num++;
- return;
-}
-
-int
-get_mem_stat_item (int idx, char **name, u64 * len)
-{
- if (idx < 0 || idx >= MAX_STAT_ITEM_NUM)
- {
- return -1;
- }
-
- *name = g_max_mem_list.item[idx].name;
- *len = g_max_mem_list.item[idx].size;
-
- return 0;
-}
-#endif
-
-static int nsfw_mem_stat_init (void *param);
-static int
-nsfw_mem_stat_init (void *param)
-{
- MEM_STAT (NSFW_MEM_STAT_MODULE, "g_mem_stat", NSFW_NSHMEM,
- sizeof (g_mem_stat));
- nsfw_mem_stat_print ();
-#ifdef SYS_MEM_RES_STAT
- clear_mem_stat_item ();
-#endif
- return 0;
-}
-
-/* *INDENT-OFF* */
-NSFW_MODULE_NAME (NSFW_MEM_STAT_MODULE)
-NSFW_MODULE_PRIORITY (99)
-NSFW_MODULE_INIT (nsfw_mem_stat_init)
-/* *INDENT-ON* */
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif /* __cplusplus */
diff --git a/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_mdesc.c b/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_mdesc.c
deleted file mode 100644
index fdb2079..0000000
--- a/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_mdesc.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include "nsfw_mem_desc.h"
-#include "nsfw_nshmem_mng.h"
-#include "nsfw_nshmem_mdesc.h"
-
-/*no share memory access inferface*/
-nsfw_mem_ops g_nshmem_ops = {
- nsfw_nshmem_init,
- nsfw_nshmem_destory,
- nsfw_nshmem_create,
- NULL,
- nsfw_nshmem_lookup,
- nsfw_nshmem_release,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- nsfw_nshmem_spcreate,
- NULL,
- NULL,
- nsfw_nshmem_sprelease,
- nsfw_nshmem_sp_lookup,
- nsfw_nshmem_ringcreate,
- NULL,
- nsfw_nshmem_ringrelease,
- nsfw_nshmem_static,
- NULL,
- NULL, /*mem_ops_sp_iterator */
- NULL, /*mem_ops_mbuf_iterator */
-};
diff --git a/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_mdesc.h b/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_mdesc.h
deleted file mode 100644
index 1b63520..0000000
--- a/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_mdesc.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _NSFW_NSHMEM_MDESC_H
-#define _NSFW_NSHMEM_MDESC_H
-
-extern nsfw_mem_ops g_nshmem_ops;
-
-#endif
diff --git a/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_mng.c b/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_mng.c
deleted file mode 100644
index 49e3769..0000000
--- a/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_mng.c
+++ /dev/null
@@ -1,544 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include <stdlib.h>
-#include "nstack_log.h"
-#include "nstack_securec.h"
-#include "nsfw_mem_desc.h"
-#include "nsfw_ring_fun.h"
-#include "nsfw_nshmem_ring.h"
-#include "nsfw_nshmem_mng.h"
-
-#include "common_func.h"
-
-#define nsfw_get_glb_lock() (&g_nshmem_internal_cfg->mlock)
-
-#define NSFW_NSHMEM_INIT_CHK_RET_NULL() \
- if ((!g_nshmem_internal_cfg) || (!g_nshmem_localdata)) \
- { \
- NSCOMM_LOGDBG("Error] g_nshmem_internal_cfg=%p, g_nshmem_localdata=%p", g_nshmem_internal_cfg, g_nshmem_localdata); \
- return NULL; \
- }
-
-#define NSFW_NSHMEM_INIT_CHK_RET() \
- if ((!g_nshmem_internal_cfg) || (!g_nshmem_localdata)) \
- { \
- NSCOMM_LOGDBG("Error] g_nshmem_internal_cfg=%p, g_nshmem_localdata=%p", g_nshmem_internal_cfg, g_nshmem_localdata); \
- return NSFW_MEM_ERR; \
- }
-
-nsfw_mem_localdata *g_nshmem_localdata = NULL;
-nsfw_nshmem_cfg *g_nshmem_internal_cfg = NULL;
-
-/*look up a mem zone*/
-NSTACK_STATIC inline nsfw_nshmem_mzone *
-nsfw_nshmem_get_free_zone (void)
-{
- int icnt = 0;
-
- /*g_nshmem_internal_cfg must not be null if come here */
- for (icnt = 0; icnt < COMMON_MEM_MAX_MEMZONE; icnt++)
- {
- if (g_nshmem_internal_cfg->amemzone[icnt].addr == NULL)
- {
- return &g_nshmem_internal_cfg->amemzone[icnt];
- }
- }
-
- return NULL;
-}
-
-NSTACK_STATIC inline void
-nsfw_nshmem_free_zone (nsfw_nshmem_mzone * pzone)
-{
- nsfw_nshmem_mzone *pzonebase = &g_nshmem_internal_cfg->amemzone[0];
- nsfw_nshmem_mzone *pzoneend =
- &g_nshmem_internal_cfg->amemzone[NSFW_NSHMEM_ZONE_MAX - 1];
-
- if ((((int) ((char *) pzone - (char *) pzonebase) < 0)
- || ((int) ((char *) pzone - (char *) pzoneend) > 0))
- && ((unsigned int) ((char *) pzone - (char *) pzonebase) %
- sizeof (nsfw_nshmem_mzone) != 0))
- {
- NSCOMM_LOGERR ("nshmem free fail] mem=%p", pzone);
- return;
- }
- if (pzone->addr)
- {
- free (pzone->addr);
- }
- pzone->addr = NULL;
-
- int ret = MEMSET_S ((void *) pzone, sizeof (nsfw_nshmem_mzone), 0,
- sizeof (nsfw_nshmem_mzone));
- if (EOK != ret)
- {
- NSCOMM_LOGERR ("MEMSET_S failed] mem=%p, ret=%d", pzone, ret);
- }
- return;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_nshmem_init
-* Description : nsh module init
-* Input : nsfw_mem_para* para
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*****************************************************************************/
-i32
-nsfw_nshmem_init (nsfw_mem_para * para)
-{
- i32 iret = NSFW_MEM_OK;
- NSCOMM_LOGINF ("nsfw nshmem init begin");
- g_nshmem_localdata =
- (nsfw_mem_localdata *) malloc (sizeof (nsfw_mem_localdata));
-
- if (NULL == g_nshmem_localdata)
- {
- NSCOMM_LOGERR ("nshmem init g_nshmem_localdata malloc fail");
- return NSFW_MEM_ERR;
- }
-
- iret =
- MEMSET_S (g_nshmem_localdata, sizeof (nsfw_mem_localdata), 0,
- sizeof (nsfw_mem_localdata));
-
- if (EOK != iret)
- {
- NSCOMM_LOGERR ("nshmem init g_nshmem_localdata MEMSET_S fail");
- goto ERROR;
- }
-
- g_nshmem_internal_cfg =
- (nsfw_nshmem_cfg *) malloc (sizeof (nsfw_nshmem_cfg));
-
- if (NULL == g_nshmem_internal_cfg)
- {
- NSCOMM_LOGERR ("nshmem init g_nshmem_internal_cfg malloc fail");
- goto ERROR;
- }
-
- iret =
- MEMSET_S (g_nshmem_internal_cfg, sizeof (nsfw_nshmem_cfg), 0,
- sizeof (nsfw_nshmem_cfg));
-
- if (EOK != iret)
- {
- NSCOMM_LOGERR ("nshmem init g_nshmem_internal_cfg MEMSET_S fail");
- goto ERROR;
- }
-
- g_nshmem_localdata->enflag = para->enflag;
- NSCOMM_LOGINF ("nsfw nshmem init end");
- goto OK;
-
-ERROR:
- iret = NSFW_MEM_ERR;
- nsfw_nshmem_destory ();
- return iret;
-OK:
- iret = NSFW_MEM_OK;
- return iret;
-}
-
-/*
- * memory destory
- */
-void
-nsfw_nshmem_destory (void)
-{
- if (g_nshmem_localdata)
- {
- free (g_nshmem_localdata);
- g_nshmem_localdata = NULL;
- }
-
- if (g_nshmem_internal_cfg)
- {
- free (g_nshmem_internal_cfg);
- g_nshmem_internal_cfg = NULL;
- }
-
- return;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_nshmem_reserv_safe
-* Description : malloc a memory and save to memzone
-* Input : const char* name
-* size_t length
-* Output : None
-* Return Value : mzone_handle
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-mzone_handle
-nsfw_nshmem_reserv_safe (const char *name, size_t length)
-{
- void *addr = NULL;
- i32 iret = NSFW_MEM_OK;
- nsfw_nshmem_mzone *pmemzone = NULL;
-
- if (length <= 0)
- {
- return NULL;
- }
-
- nsfw_write_lock (nsfw_get_glb_lock ());
-
- addr = malloc (length);
- if (!addr)
- {
- NSCOMM_LOGERR ("nshmem malloc addr fail] addr=%p", addr);
- nsfw_write_unlock (nsfw_get_glb_lock ());
- return NULL;
- }
-
- iret = MEMSET_S (addr, length, 0, length);
- if (EOK != iret)
- {
- NSCOMM_LOGERR ("nshmem malloc addr MEMSET_S fail] addr=%p", addr);
- free (addr);
- nsfw_write_unlock (nsfw_get_glb_lock ());
- return NULL;
- }
-
- pmemzone = nsfw_nshmem_get_free_zone ();
-
- if (!pmemzone)
- {
- NSCOMM_LOGERR ("nshmem get free zone fail");
- free (addr);
- nsfw_write_unlock (nsfw_get_glb_lock ());
- return NULL;
- }
-
- pmemzone->addr = addr;
- pmemzone->length = length;
- /*name must be less than NSFW_MEM_APPNAME_LENGTH */
- if (EOK !=
- STRCPY_S ((char *) pmemzone->aname, sizeof (pmemzone->aname), name))
- {
- NSCOMM_LOGERR ("STRCPY_S failed]name=%s", name);
- free (addr);
- nsfw_write_unlock (nsfw_get_glb_lock ());
- return NULL;
- }
-
- nsfw_write_unlock (nsfw_get_glb_lock ());
- return addr;
-}
-
-/*
- * create no shared memory
- * nsfw_mem_zone::stname no shared memory name
- * nsfw_mem_zone::isize memory size
- */
-mzone_handle
-nsfw_nshmem_create (nsfw_mem_zone * pinfo)
-{
-
- NSFW_NAME_LENCHECK_RET_NULL (pinfo->stname.aname, "nshmem create");
- NSFW_NSHMEM_INIT_CHK_RET_NULL ();
- return nsfw_nshmem_reserv_safe (pinfo->stname.aname, pinfo->length);
-}
-
-/*****************************************************************************
-* Prototype : nsfw_nshmem_lookup
-* Description : find a block memory by name
-* Input : nsfw_mem_name* pname
-* Output : None
-* Return Value : mzone_handle
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-mzone_handle
-nsfw_nshmem_lookup (nsfw_mem_name * pname)
-{
- int icnt = 0;
- nsfw_nshmem_mzone *mz = NULL;
-
- NSFW_NAME_LENCHECK_RET_NULL (pname->aname, "nshmem lookup");
- NSFW_NSHMEM_INIT_CHK_RET_NULL ();
- nsfw_read_lock (nsfw_get_glb_lock ());
-
- for (icnt = 0; icnt < NSFW_NSHMEM_ZONE_MAX; icnt++)
- {
- mz = &g_nshmem_internal_cfg->amemzone[icnt];
-
- if (mz->addr != NULL
- && !strncmp (pname->aname, mz->aname, NSFW_MEM_NAME_LENGTH))
- {
- nsfw_read_unlock (nsfw_get_glb_lock ());
- return mz->addr;
- }
- }
-
- nsfw_read_unlock (nsfw_get_glb_lock ());
- return NULL;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_nshmem_release
-* Description : free a block memory
-* Input : nsfw_mem_name* pname
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-i32
-nsfw_nshmem_release (nsfw_mem_name * pname)
-{
- int icnt = 0;
- nsfw_nshmem_mzone *mz = NULL;
-
- NSFW_NAME_LENCHECK_RET (pname->aname, "nshmem release");
- NSFW_NSHMEM_INIT_CHK_RET ();
- nsfw_read_lock (nsfw_get_glb_lock ());
-
- for (icnt = 0; icnt < NSFW_NSHMEM_ZONE_MAX; icnt++)
- {
- mz = &g_nshmem_internal_cfg->amemzone[icnt];
-
- if (mz->addr != NULL
- && !strncmp (pname->aname, mz->aname, NSFW_MEM_NAME_LENGTH))
- {
- nsfw_nshmem_free_zone (mz);
- nsfw_read_unlock (nsfw_get_glb_lock ());
- return NSFW_MEM_OK;
- }
- }
-
- nsfw_read_unlock (nsfw_get_glb_lock ());
- return NSFW_MEM_OK;
-
-}
-
-/*****************************************************************************
-* Prototype : nsfw_nshmem_spcreate
-* Description : create a memory pool by ring
-* Input : nsfw_mem_sppool* pmpinfo
-* Output : None
-* Return Value : mring_handle
-* Calls :
-* Called By :
-*****************************************************************************/
-mring_handle
-nsfw_nshmem_spcreate (nsfw_mem_sppool * pmpinfo)
-{
- size_t len = 0;
- unsigned int usnum = common_mem_align32pow2 (pmpinfo->usnum + 1);
- unsigned int uselt_size = pmpinfo->useltsize;
- struct nsfw_mem_ring *pringhead = NULL;
- unsigned int uscnt = 0;
- char *pmz = NULL;
- NSFW_NAME_LENCHECK_RET_NULL (pmpinfo->stname.aname, "nshmem sp create");
- NSFW_NSHMEM_INIT_CHK_RET_NULL ();
-
- len =
- sizeof (struct nsfw_mem_ring) +
- (size_t) usnum *sizeof (union RingData_U) + (size_t) usnum *uselt_size;
- pringhead =
- (struct nsfw_mem_ring *) nsfw_nshmem_reserv_safe (pmpinfo->stname.aname,
- len);
-
- if (!pringhead)
- {
- NSCOMM_LOGERR ("nshmem sp create mzone reserv fail");
- return NULL;
- }
-
- nsfw_mem_ring_init (pringhead, usnum, pringhead, NSFW_NSHMEM,
- pmpinfo->enmptype);
- pmz =
- ((char *) pringhead + sizeof (struct nsfw_mem_ring) +
- usnum * sizeof (union RingData_U));
-
- for (uscnt = 0; uscnt < usnum; uscnt++)
- {
- if (0 ==
- g_ring_ops_arry[pringhead->memtype][pringhead->
- ringflag].ring_ops_enqueue
- (pringhead, (void *) pmz))
- {
- NSCOMM_LOGERR ("nsfw_nshmem_ringenqueue enqueue fail] uscnt=%u",
- uscnt);
- }
-
- pmz = pmz + uselt_size;
- }
-
- return pringhead;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_nshmem_sp_lookup
-* Description : look up a sppool memory
-* Input : nsfw_mem_name* pname
-* Output : None
-* Return Value : mring_handle
-* Calls :
-* Called By :
-*****************************************************************************/
-mring_handle
-nsfw_nshmem_sp_lookup (nsfw_mem_name * pname)
-{
- return nsfw_nshmem_lookup (pname);
-}
-
-/*****************************************************************************
-* Prototype : nsfw_nshmem_sprelease
-* Description : release a sp pool
-* Input : nsfw_mem_name* pname
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-i32
-nsfw_nshmem_sprelease (nsfw_mem_name * pname)
-{
- NSFW_NAME_LENCHECK_RET (pname->aname, "nshmem sp mempool release");
- NSFW_NSHMEM_INIT_CHK_RET ();
- return nsfw_nshmem_release (pname);
-}
-
-/*****************************************************************************
-* Prototype : nsfw_nshmem_ringcreate
-* Description : create a ring
-* Input : nsfw_mem_mring* pringinfo
-* Output : None
-* Return Value : mring_handle
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-mring_handle
-nsfw_nshmem_ringcreate (nsfw_mem_mring * pringinfo)
-{
- size_t len = 0;
- unsigned int usnum = common_mem_align32pow2 (pringinfo->usnum + 1);
- struct nsfw_mem_ring *pringhead = NULL;
- NSFW_NAME_LENCHECK_RET_NULL (pringinfo->stname.aname, "nshmem ring create");
- NSFW_NSHMEM_INIT_CHK_RET_NULL ();
-
- len = sizeof (struct nsfw_mem_ring) + usnum * sizeof (union RingData_U);
- pringhead =
- (struct nsfw_mem_ring *) nsfw_nshmem_reserv_safe (pringinfo->stname.aname,
- len);
-
- if (!pringhead)
- {
- NSCOMM_LOGERR ("nshmem ring create mzone reserv fail");
- return NULL;
- }
-
- nsfw_mem_ring_init (pringhead, usnum, (void *) pringhead, NSFW_NSHMEM,
- pringinfo->enmptype);
- return pringhead;
-
-}
-
-/*****************************************************************************
-* Prototype : nsfw_nshmem_ringrelease
-* Description : release a nsh ring memory
-* Input : nsfw_mem_name* pname
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-i32
-nsfw_nshmem_ringrelease (nsfw_mem_name * pname)
-{
- NSFW_NAME_LENCHECK_RET (pname->aname, "nshmem ring mempool release");
- NSFW_NSHMEM_INIT_CHK_RET ();
- return nsfw_nshmem_release (pname);
-}
-
-/*****************************************************************************
-* Prototype : nsfw_nshmem_sppool_statics
-* Description : static the memory size of sppool
-* Input : mring_handle sppool
-* Output : None
-* Return Value : ssize_t
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-ssize_t
-nsfw_nshmem_sppool_statics (mring_handle sppool)
-{
- struct nsfw_mem_ring *phead = (struct nsfw_mem_ring *) sppool;
-
- return sizeof (struct nsfw_mem_ring) +
- (ssize_t) phead->size * sizeof (union RingData_U) +
- (ssize_t) phead->size * phead->eltsize;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_nshmem_ring_statics
-* Description : static the memory size of ring
-* Input : mring_handle handle
-* Output : None
-* Return Value : ssize_t
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-ssize_t
-nsfw_nshmem_ring_statics (mring_handle handle)
-{
- struct nsfw_mem_ring *ring = (struct nsfw_mem_ring *) handle;
- return ring->size * sizeof (union RingData_U) +
- sizeof (struct nsfw_mem_ring);
-}
-
-/*****************************************************************************
-* Prototype : nsfw_nshmem_static
-* Description : static the memory size according to mem type
-* Input : void* handle
-* nsfw_mem_struct_type type
-* Output : None
-* Return Value : ssize_t
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-ssize_t
-nsfw_nshmem_static (void *handle, nsfw_mem_struct_type type)
-{
- switch (type)
- {
- case NSFW_MEM_MBUF:
- return -1;
- case NSFW_MEM_SPOOL:
- return nsfw_nshmem_sppool_statics (handle);
- case NSFW_MEM_RING:
- return nsfw_nshmem_ring_statics (handle);
- default:
- break;
- }
- return -1;
-}
diff --git a/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_mng.h b/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_mng.h
deleted file mode 100644
index 06ab562..0000000
--- a/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_mng.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _NSFW_NSHMEM_MNG_H_
-#define _NSFW_NSHMEM_MNG_H_
-
-#include "generic/common_mem_rwlock.h"
-
-#include "common_func.h"
-
-#define NSFW_NSHMEM_ZONE_MAX 2560
-
-typedef struct
-{
- i8 aname[NSFW_MEM_NAME_LENGTH];
- void *addr;
- int length;
-} nsfw_nshmem_mzone;
-
-typedef struct
-{
- nsfw_nshmem_mzone amemzone[NSFW_NSHMEM_ZONE_MAX];
- common_mem_rwlock_t mlock;
-} nsfw_nshmem_cfg;
-
-/*
- * no share memory module init
- */
-i32 nsfw_nshmem_init (nsfw_mem_para * para);
-
-/*
- * no share memory module destory
- */
-void nsfw_nshmem_destory (void);
-
-/*
- * create a no shared memory
- */
-mzone_handle nsfw_nshmem_create (nsfw_mem_zone * pinfo);
-
-mzone_handle nsfw_nshmem_lookup (nsfw_mem_name * pname);
-
-i32 nsfw_nshmem_release (nsfw_mem_name * pname);
-
-mring_handle nsfw_nshmem_spcreate (nsfw_mem_sppool * pmpinfo);
-
-i32 nsfw_nshmem_sprelease (nsfw_mem_name * pname);
-
-mring_handle nsfw_nshmem_sp_lookup (nsfw_mem_name * pname);
-
-mring_handle nsfw_nshmem_ringcreate (nsfw_mem_mring * pringinfo);
-
-i32 nsfw_nshmem_ringrelease (nsfw_mem_name * pname);
-
-ssize_t nsfw_nshmem_static (void *handle, nsfw_mem_struct_type type);
-
-#endif
diff --git a/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_ring.c b/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_ring.c
deleted file mode 100644
index 7e56f3c..0000000
--- a/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_ring.c
+++ /dev/null
@@ -1,437 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include <string.h>
-#include <sched.h>
-#include "nstack_securec.h"
-
-#include "nsfw_mem_desc.h"
-#include "nsfw_nshmem_ring.h"
-#include "nsfw_ring_fun.h"
-#include "common_func.h"
-
-/*copy the data to obj*/
-NSTACK_STATIC inline void
-nsfw_nshmem_ring_obj_copy (struct nsfw_mem_ring *r, uint32_t cons_head,
- void **obj_table, unsigned n)
-{
- uint32_t idx = cons_head & r->mask;
- unsigned i = 0;
- const uint32_t size = r->size;
-
- if (likely (idx + n < size))
- {
- for (i = 0; i < (n & (~(unsigned) 0x3)); i += 4, idx += 4)
- {
- obj_table[i] = (void *) r->ring[idx].data_l;
- obj_table[i + 1] = (void *) r->ring[idx + 1].data_l;
- obj_table[i + 2] = (void *) r->ring[idx + 2].data_l;
- obj_table[i + 3] = (void *) r->ring[idx + 3].data_l;
- }
- switch (n & 0x3)
- {
- case 3:
- obj_table[i++] = (void *) r->ring[idx++].data_l;
-
- case 2:
- obj_table[i++] = (void *) r->ring[idx++].data_l;
-
- case 1:
- obj_table[i++] = (void *) r->ring[idx++].data_l;
- }
- }
- else
- {
- for (i = 0; idx < size; i++, idx++)
- {
- obj_table[i] = (void *) r->ring[idx].data_l;
- }
-
- for (idx = 0; i < n; i++, idx++)
- {
- obj_table[i] = (void *) r->ring[idx].data_l;
- }
- }
-}
-
-/*fork recover*/
-NSTACK_STATIC inline void
-nsfw_nshmem_enqueue_fork_recov (struct nsfw_mem_ring *r)
-{
- u32_t pidflag = 0;
- u32_t curpid = get_sys_pid ();
- int success = 0;
- /*if pid is not the same, maybe mult thread fork happen */
- pidflag = r->prodhflag;
-
- if (unlikely (pidflag != curpid))
- {
- success = common_mem_atomic32_cmpset (&r->prodhflag, pidflag, curpid);
-
- if (unlikely (success != 0))
- {
- /*recover it */
- if (r->prod.tail != r->prod.head)
- {
- r->prod.head = r->prod.tail;
- }
-
- r->prodtflag = curpid;
- }
- }
-
- return;
-}
-
-NSTACK_STATIC inline void
-nsfw_nshmem_dequeue_fork_recov (struct nsfw_mem_ring *r)
-{
- u32_t pidflag = 0;
- u32_t curpid = get_sys_pid ();
- int success = 0;
- /*if pid is not the same, maybe mult thread fork happen */
- pidflag = r->conshflag;
-
- if (unlikely (pidflag != curpid))
- {
- success = common_mem_atomic32_cmpset (&r->conshflag, pidflag, curpid);
-
- if (unlikely (success != 0))
- {
- /*recover it */
- if (r->cons.tail != r->cons.head)
- {
- r->cons.head = r->cons.tail;
- }
-
- r->constflag = curpid;
- }
- }
-
- return;
-}
-
-/*
-this is a multi thread/process enqueue function, please pay attention to the bellow point
-1. while Enqueue corrupt, we may lose one element; because no one to add the Head
-*/
-int
-nsfw_nshmem_ring_mp_enqueue (struct nsfw_mem_ring *mem_ring, void *obj_table)
-{
- uint32_t producer_head, producer_next;
- uint32_t consumer_tail, free_entries;
- int success;
- unsigned rep = 0;
- uint32_t mask = mem_ring->mask;
- uint32_t size = mem_ring->size;
- uint32_t n = 1;
-
- /* move prod.head atomically */
- do
- {
-
- producer_head = mem_ring->prod.head;
- consumer_tail = mem_ring->cons.tail;
- /* The subtraction is done between two unsigned 32bits value
- * (the result is always modulo 32 bits even if we have
- * producer_head > consumer_tail). So 'free_entries' is always between 0
- * and size(ring)-1. */
- free_entries = (size + consumer_tail - producer_head);
-
- /* check that we have enough room in ring */
- if (unlikely (n > free_entries))
- {
- return 0;
- /* Below code is commented currenlty as its a dead code. */
- }
-
- /*if pid is not the same, maybe mult thread fork happen */
- nsfw_nshmem_enqueue_fork_recov (mem_ring);
-
- while (unlikely
- ((mem_ring->prod.tail != mem_ring->prod.head)
- || (mem_ring->prodtflag != mem_ring->prodhflag)))
- {
- common_mem_pause ();
- }
-
- producer_next = producer_head + n;
- success =
- common_mem_atomic32_cmpset (&mem_ring->prod.head, producer_head,
- producer_next);
- }
- while (unlikely (success == 0));
-
- mem_ring->ring[producer_head & mask].data_l = (u64) obj_table;
-
- /*
- * If there are other enqueues in progress that preceded us,
- * we need to wait for them to complete
- */
- while (unlikely (mem_ring->prod.tail != producer_head))
- {
- common_mem_pause ();
-
- /* Set COMMON_RING_PAUSE_REP_COUNT to avoid spin too long waiting
- * for other thread finish. It gives pre-emptied thread a chance
- * to proceed and finish with ring dequeue operation. */
- /* check the queue can be operate */
- if (++rep == 5)
- {
- rep = 0;
- (void) sched_yield ();
- }
- }
-
- mem_ring->prod.tail = producer_next;
- return (int) n;
-}
-
-/*
- this is a single thread/process enqueue function
- */
-int
-nsfw_nshmem_ring_sp_enqueue (struct nsfw_mem_ring *r, void *obj_table)
-{
- uint32_t producer_head, consumer_tail;
- uint32_t producer_next, free_entries;
- uint32_t mask = r->mask;
- uint32_t n = 1;
- uint32_t size = r->size;
-
- producer_head = r->prod.head;
- consumer_tail = r->cons.tail;
- /* The subtraction is done between two unsigned 32bits value
- * (the result is always modulo 32 bits even if we have
- * producer_head > consumer_tail). So 'free_entries' is always between 0
- * and size(ring)-1. */
- free_entries = size + consumer_tail - producer_head;
-
- /* check that we have enough room in ring */
- if (unlikely (n > free_entries))
- {
- return 0;
- }
-
- nsfw_nshmem_enqueue_fork_recov (r);
-
- producer_next = producer_head + n;
- r->prod.head = producer_next;
-
- r->ring[producer_head & mask].data_l = (u64) obj_table;
-
- r->prod.tail = producer_next;
- return (int) n;
-}
-
-/*
- this is enhanced mc_ring_dequeue, support dequeue multi element one time.
-*/
-int
-nsfw_nshmem_ring_mc_dequeuev (struct nsfw_mem_ring *r, void **obj_table,
- unsigned int n)
-{
- uint32_t consumer_head, producer_tail;
- uint32_t consumer_next, entries;
- int success;
- unsigned rep = 0;
- uint32_t num = n;
-
- /* Avoid the unnecessary cmpset operation below, which is also
- * potentially harmful when n equals 0. */
- if (unlikely (num == 0))
- {
- return 0;
- }
-
- nsfw_nshmem_dequeue_fork_recov (r);
-
- /* move cons.head atomically */
- do
- {
- num = n;
- consumer_head = r->cons.head;
- producer_tail = r->prod.tail;
- /* The subtraction is done between two unsigned 32bits value
- * (the result is always modulo 32 bits even if we have
- * cons_head > prod_tail). So 'entries' is always between 0
- * and size(ring)-1. */
- entries = (producer_tail - consumer_head);
-
- /* Set the actual entries for dequeue */
- if (unlikely (num > entries))
- {
- if (likely (entries > 0))
- {
- num = entries;
- }
- else
- {
- return 0;
- }
- }
-
- /* check the queue can be operate */
- while (unlikely
- ((r->cons.tail != r->cons.head)
- || (r->conshflag != r->constflag)))
- {
- common_mem_pause ();
- }
-
- consumer_next = consumer_head + num;
-
- success =
- common_mem_atomic32_cmpset (&r->cons.head, consumer_head,
- consumer_next);
- }
- while (unlikely (success == 0));
-
- nsfw_nshmem_ring_obj_copy (r, consumer_head, obj_table, num);
-
- /*
- * If there are other dequeues in progress that preceded us,
- * we need to wait for them to complete
- */
- while (unlikely (r->cons.tail != consumer_head))
- {
- common_mem_pause ();
-
- /* Set COMMON_RING_PAUSE_REP_COUNT to avoid spin too long waiting
- * for other thread finish. It gives pre-emptied thread a chance
- * to proceed and finish with ring dequeue operation. */
- /* check the queue can be operate */
- if (++rep == 5)
- {
- rep = 0;
- (void) sched_yield ();
- }
- }
-
- r->cons.tail = consumer_next;
-
- return (int) num;
-}
-
-/*this is a multi thread/process dequeue function, please pay attention to the bellow point
-1. while dequeue corrupt, the tail no one added, may multi the try times.
-*/
-int
-nsfw_nshmem_ring_mc_dequeue (struct nsfw_mem_ring *ring, void **box)
-{
- return nsfw_nshmem_ring_mc_dequeuev (ring, box, 1);
-}
-
-/*
- this is a single thread/process dequeue function
-*/
-int
-nsfw_nshmem_ring_sc_dequeuev (struct nsfw_mem_ring *r, void **obj_table,
- unsigned int n)
-{
- uint32_t consumer_head, producer_tail;
- uint32_t consumer_next, entries;
- uint32_t inum = n;
- consumer_head = r->cons.head;
- producer_tail = r->prod.tail;
- /* The subtraction is done between two unsigned 32bits value
- * (the result is always modulo 32 bits even if we have
- * cons_head > prod_tail). So 'entries' is always between 0
- * and size(ring)-1. */
- entries = producer_tail - consumer_head;
-
- if (unlikely (inum > entries))
- {
- if (likely (entries > 0))
- {
- inum = entries;
- }
- else
- {
- return 0;
- }
- }
-
- nsfw_nshmem_dequeue_fork_recov (r);
-
- consumer_next = consumer_head + inum;
- r->cons.head = consumer_next;
-
- nsfw_nshmem_ring_obj_copy (r, consumer_head, obj_table, inum);
-
- r->cons.tail = consumer_next;
- return (int) inum;
-}
-
-/*
- this is enhanced mc_ring_dequeue, support dequeue multi element one time.
-*/
-int
-nsfw_nshmem_ring_sc_dequeue (struct nsfw_mem_ring *ring, void **box)
-{
- return nsfw_nshmem_ring_sc_dequeuev (ring, box, 1);
-}
-
-/*stack just using one thread, for performance using que not support multi thread*/
-int
-nsfw_nshmem_ring_singlethread_enqueue (struct nsfw_mem_ring *ring, void *box)
-{
- u32 head = 0;
-
- /*if queue is full, just return 0 */
- if (unlikely (ring->prod.head >= (ring->size + ring->cons.tail)))
- {
- return 0;
- }
-
- head = ring->prod.head;
- ring->ring[head & ring->mask].data_l = (u64) box;
- ring->prod.head++;
- return 1;
-}
-
-/*stack just using one thread, for performance using que not support multi thread*/
-int
-nsfw_nshmem_ring_singlethread_dequeue (struct nsfw_mem_ring *ring, void **box)
-{
- return nsfw_nshmem_ring_singlethread_dequeuev (ring, box, 1);
-}
-
-/*stack just using one thread, for performance using que not support multi thread*/
-int
-nsfw_nshmem_ring_singlethread_dequeuev (struct nsfw_mem_ring *ring,
- void **box, unsigned int n)
-{
- u32 tail = 0;
- u32 num = 0;
-
- while (num < n)
- {
- tail = ring->cons.tail;
-
- /* if all entries are dequeued return 0 */
- if (unlikely (ring->prod.head == ring->cons.tail))
- {
- return num;
- }
-
- box[num] = (void *) ring->ring[tail & ring->mask].data_l;
- ring->cons.tail++;
- num++;
- }
-
- return num;
-}
diff --git a/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_ring.h b/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_ring.h
deleted file mode 100644
index 93a4d4a..0000000
--- a/src/framework/common/mem_mgr/nsfw_nshmem/nsfw_nshmem_ring.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _NSFW_NSHMEM_RING_H_
-#define _NSFW_NSHMEM_RING_H_
-
-#include <stdint.h>
-
-int nsfw_nshmem_ring_mp_enqueue (struct nsfw_mem_ring *ring, void *box);
-int nsfw_nshmem_ring_sp_enqueue (struct nsfw_mem_ring *ring, void *box);
-int nsfw_nshmem_ring_mc_dequeue (struct nsfw_mem_ring *ring, void **box);
-int nsfw_nshmem_ring_mc_dequeuev (struct nsfw_mem_ring *ring, void **box,
- unsigned int n);
-int nsfw_nshmem_ring_sc_dequeue (struct nsfw_mem_ring *ring, void **box);
-int nsfw_nshmem_ring_sc_dequeuev (struct nsfw_mem_ring *ring, void **box,
- unsigned int n);
-int nsfw_nshmem_ring_singlethread_enqueue (struct nsfw_mem_ring *ring,
- void *box);
-int nsfw_nshmem_ring_singlethread_dequeue (struct nsfw_mem_ring *ring,
- void **box);
-int nsfw_nshmem_ring_singlethread_dequeuev (struct nsfw_mem_ring *ring,
- void **box, unsigned int n);
-
-#endif /*_NSFW_NSHMEM_RING_H_*/
diff --git a/src/framework/common/mem_mgr/nsfw_res_mgr.c b/src/framework/common/mem_mgr/nsfw_res_mgr.c
deleted file mode 100644
index c4d8010..0000000
--- a/src/framework/common/mem_mgr/nsfw_res_mgr.c
+++ /dev/null
@@ -1,429 +0,0 @@
-/*
-*
-* 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.
-*/
-
-/*==============================================*
- * include header files *
- *----------------------------------------------*/
-
-/*==============================================*
- * constants or macros define *
- *----------------------------------------------*/
-
-/*==============================================*
- * project-wide global variables *
- *----------------------------------------------*/
-
-/*==============================================*
- * routines' or functions' implementations *
- *----------------------------------------------*/
-
-#include <stdlib.h>
-#include "types.h"
-#include "nstack_securec.h"
-#include "nsfw_init.h"
-#include "common_mem_mbuf.h"
-
-#include "nstack_log.h"
-#include "nsfw_maintain_api.h"
-
-#include "nsfw_mem_api.h"
-#include "nsfw_fd_timer_api.h"
-#include "nsfw_ring_data.h"
-
-#include "common_func.h"
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C"{
-/* *INDENT-ON* */
-#endif /* __cplusplus */
-
-nsfw_res_mgr_item_cfg g_all_res_can[NSFW_MAX_RES_SCAN_COUNT];
-
-#define NSFW_RES_SCAN_TVLAUE_DEF 60
-#define NSFW_RES_SCAN_TVLAUE (g_scan_cfg.scan_tvalue)
-
-typedef struct _nsfw_res_scan_init_cfg
-{
- nsfw_timer_info *scan_timer;
- u16 scan_tvalue;
-} nsfw_res_scan_init_cfg;
-nsfw_res_scan_init_cfg g_scan_cfg;
-
-u8
-nsfw_res_mgr_reg (nsfw_res_scn_cfg * cfg)
-{
- if (NULL == cfg)
- {
- NSFW_LOGERR ("argv err!");
- return FALSE;
- }
-
- u32 i;
- for (i = 0; i < NSFW_MAX_RES_SCAN_COUNT; i++)
- {
- if ((NULL == g_all_res_can[i].scn_cfg.free_fun)
- &&
- (__sync_bool_compare_and_swap
- (&g_all_res_can[i].scn_cfg.free_fun, 0, cfg->free_fun)))
- {
- g_all_res_can[i].scn_cfg = *cfg;
- NSFW_LOGINF ("reg res_mgr fun suc]fun=%p,data=%p", cfg->free_fun,
- cfg->data);
- return TRUE;
- }
- }
-
- NSFW_LOGERR
- ("reg]type=%u,per=%u,chk=%u,cyc=%u,total=%u,size=%u,offset=%u,fun=%p,data=%p",
- cfg->type, cfg->force_free_percent, cfg->force_free_chk_num,
- cfg->num_per_cyc, cfg->total_num, cfg->elm_size, cfg->res_mem_offset,
- cfg->res_mem_offset, cfg->free_fun, cfg->data);
- return FALSE;
-}
-
-static inline u32
-nsfw_get_alloc_count (u32 head, u32 tail)
-{
- if (head >= tail)
- {
- return head - tail;
- }
-
- return head + (0xFFFFFFFF - tail);
-}
-
-int
-nsfw_res_sp_item_chk (void *data, void *argv)
-{
- nsfw_res_mgr_item_cfg *res_scn_item = (nsfw_res_mgr_item_cfg *) argv;
- nsfw_res_scn_cfg *scn_cfg = &res_scn_item->scn_cfg;
- char *elm = (char *) data;
-
- if (NULL == scn_cfg || NULL == elm)
- {
- return FALSE;
- }
-
- nsfw_res *res_item = NULL;
- res_item = (nsfw_res *) (elm + scn_cfg->res_mem_offset);
- if (0 == res_item->chk_count)
- {
- res_item->data = res_scn_item->cons_head;
- }
- res_item->chk_count++;
-
- if (res_item->chk_count < scn_cfg->force_free_chk_num)
- {
- return FALSE;
- }
-
- if (res_scn_item->free_percent > scn_cfg->force_free_percent)
- {
- return FALSE;
- }
-
- if (scn_cfg->total_num * scn_cfg->alloc_speed_factor >
- nsfw_get_alloc_count (res_scn_item->cons_head, res_item->data))
- {
- return FALSE;
- }
-
- if (NULL == scn_cfg->free_fun)
- {
- return FALSE;
- }
-
- if (TRUE == scn_cfg->free_fun ((void *) elm))
- {
- res_scn_item->force_count++;
- }
-
- res_item->chk_count = 0;
- return TRUE;
-}
-
-int
-nsfw_res_flash_data (nsfw_res_mgr_item_cfg * res_scn_item)
-{
- nsfw_res_scn_cfg *scn_cfg = &res_scn_item->scn_cfg;
-
- u32 cur_head = 0;
- u32 cur_tail = 0;
- u32 elm_num = 0;
- u32 free_count = 0;
-
- switch (scn_cfg->type)
- {
- case NSFW_RES_SCAN_MBUF:
- {
- struct common_mem_ring *ring =
- (struct common_mem_ring *) scn_cfg->mgr_ring;
- struct common_mem_mempool *mp =
- (struct common_mem_mempool *) scn_cfg->data;
- if (NULL == ring)
- {
- ring = mp->pool_data;
- if (NULL == ring)
- return FALSE;
- }
- cur_head = ring->prod.head;
- cur_tail = ring->cons.head;
- elm_num = mp->size;
- }
- break;
- case NSFW_RES_SCAN_SPOOL:
- {
- struct nsfw_mem_ring *mem_ring =
- (struct nsfw_mem_ring *) scn_cfg->mgr_ring;
- if (NULL == mem_ring)
- {
- mem_ring = (struct nsfw_mem_ring *) scn_cfg->data;
- if (NULL == mem_ring)
- return FALSE;
- }
-
- cur_head = mem_ring->prod.head;
- cur_tail = mem_ring->cons.tail;
- elm_num = mem_ring->size;
- }
- break;
- case NSFW_RES_SCAN_ARRAY:
- {
- struct nsfw_mem_ring *mem_ring =
- (struct nsfw_mem_ring *) scn_cfg->mgr_ring;
- if (NULL == mem_ring)
- {
- return FALSE;
- }
-
- cur_head = mem_ring->prod.head;
- cur_tail = mem_ring->cons.tail;
- elm_num = scn_cfg->total_num;
- }
- break;
- default:
- return FALSE;
- }
-
- free_count = nsfw_get_alloc_count (cur_head, cur_tail);
-
- res_scn_item->cons_head = cur_head;
- res_scn_item->prod_head = cur_tail;
- if (0 != elm_num)
- {
- res_scn_item->free_percent = free_count * 100 / elm_num;
- }
- else
- {
- res_scn_item->free_percent = 100;
- }
-
- scn_cfg->total_num = elm_num;
- return TRUE;
-}
-
-void
-nsfw_res_scan_mem (nsfw_res_mgr_item_cfg * res_scn_item)
-{
- if (NULL == res_scn_item)
- {
- return;
- }
-
- nsfw_res_scn_cfg *scn_cfg = &res_scn_item->scn_cfg;
- if (NULL == scn_cfg->data)
- {
- return;
- }
-
- u32 start = res_scn_item->last_scn_idx;
- u32 end = start + scn_cfg->num_per_cyc;
- int res_chk_number = 0;
- if (NSFW_RES_SCAN_SPOOL == scn_cfg->type)
- {
- res_chk_number =
- nsfw_mem_sp_iterator (scn_cfg->data, start, end,
- nsfw_res_sp_item_chk, (void *) res_scn_item);
- }
- else
- {
- res_chk_number =
- nsfw_mem_mbuf_iterator (scn_cfg->data, start, end,
- nsfw_res_sp_item_chk, (void *) res_scn_item);
- }
-
- if (0 == res_chk_number)
- {
- res_scn_item->last_scn_idx = 0;
- start = res_scn_item->last_scn_idx;
- end = start + scn_cfg->num_per_cyc;
- if (NSFW_RES_SCAN_SPOOL == scn_cfg->type)
- {
- res_chk_number =
- nsfw_mem_sp_iterator (scn_cfg->data, start, end,
- nsfw_res_sp_item_chk,
- (void *) res_scn_item);
- }
- else
- {
- res_chk_number =
- nsfw_mem_mbuf_iterator (scn_cfg->data, start, end,
- nsfw_res_sp_item_chk,
- (void *) res_scn_item);
- }
- }
-
- if (res_chk_number + start < end)
- {
- res_scn_item->last_scn_idx = 0;
- }
- else
- {
- res_scn_item->last_scn_idx += res_chk_number;
- }
-
- return;
-}
-
-void
-nsfw_res_scan_array (nsfw_res_mgr_item_cfg * res_scn_item)
-{
- if (NULL == res_scn_item)
- {
- return;
- }
-
- nsfw_res_scn_cfg *scn_cfg = &res_scn_item->scn_cfg;
- if (NULL == scn_cfg->data)
- {
- return;
- }
-
- u32 i;
- char *elm =
- (char *) scn_cfg->data + (res_scn_item->last_scn_idx * scn_cfg->elm_size);
- for (i = res_scn_item->last_scn_idx; i < scn_cfg->total_num; i++)
- {
- if (i >= res_scn_item->last_scn_idx + scn_cfg->num_per_cyc)
- {
- break;
- }
-
- if (TRUE == nsfw_res_sp_item_chk (elm, (void *) res_scn_item))
- {
- NSFW_LOGINF ("force free item]data=%p,cfg=%p", elm, res_scn_item);
- }
-
- elm += scn_cfg->elm_size;
- }
-
- if (i >= scn_cfg->total_num)
- {
- res_scn_item->last_scn_idx = 0;
- }
- else
- {
- res_scn_item->last_scn_idx = i;
- }
-
- return;
-}
-
-void
-nsfw_res_scan_proc (nsfw_res_mgr_item_cfg * res_scn_item)
-{
- (void) nsfw_res_flash_data (res_scn_item);
- switch (res_scn_item->scn_cfg.type)
- {
- case NSFW_RES_SCAN_ARRAY:
- nsfw_res_scan_array (res_scn_item);
- break;
- case NSFW_RES_SCAN_SPOOL:
- case NSFW_RES_SCAN_MBUF:
- nsfw_res_scan_mem (res_scn_item);
- break;
- default:
- break;
- }
-}
-
-int
-nsfw_res_scan_all (u32 timer_type, void *data)
-{
- NSFW_LOGDBG ("scan start!");
- struct timespec time_left = { NSFW_RES_SCAN_TVLAUE, 0 };
- g_scan_cfg.scan_timer =
- nsfw_timer_reg_timer (0, NULL, nsfw_res_scan_all, time_left);
-
- if (g_hbt_switch)
- {
- return TRUE;
- }
-
- int i;
- for (i = 0; i < NSFW_MAX_RES_SCAN_COUNT; i++)
- {
- /*last fun */
- if (NULL == g_all_res_can[i].scn_cfg.data)
- {
- break;
- }
-
- nsfw_res_scan_proc (&g_all_res_can[i]);
- }
-
- return TRUE;
-}
-
-static int nsfw_resmgr_module_init (void *param);
-static int
-nsfw_resmgr_module_init (void *param)
-{
- u8 proc_type = (u8) ((long long) param);
- NSFW_LOGINF ("res mgr module init]type=%u", proc_type);
- g_scan_cfg.scan_tvalue = NSFW_RES_SCAN_TVLAUE_DEF;
- switch (proc_type)
- {
- case NSFW_PROC_MAIN:
- {
- struct timespec time_left = { NSFW_RES_SCAN_TVLAUE, 0 };
- g_scan_cfg.scan_timer =
- nsfw_timer_reg_timer (0, NULL, nsfw_res_scan_all, time_left);
- return 0;
- }
- default:
- if (proc_type < NSFW_PROC_MAX)
- {
- break;
- }
- return -1;
- }
-
- return 0;
-}
-
-/* *INDENT-OFF* */
-NSFW_MODULE_NAME(NSFW_RES_MGR_MODULE)
-NSFW_MODULE_PRIORITY(99)
-NSFW_MODULE_INIT(nsfw_resmgr_module_init)
-/* *INDENT-ON* */
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif /* __cplusplus */
diff --git a/src/framework/common/mem_mgr/nsfw_shmem/nsfw_rshmem_mng.c b/src/framework/common/mem_mgr/nsfw_shmem/nsfw_rshmem_mng.c
deleted file mode 100644
index c29b108..0000000
--- a/src/framework/common/mem_mgr/nsfw_shmem/nsfw_rshmem_mng.c
+++ /dev/null
@@ -1,987 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include <stdint.h>
-#include "nstack_securec.h"
-#include "nstack_log.h"
-#include "nsfw_ring_fun.h"
-#include "nsfw_shmem_ring.h"
-#include "nsfw_shmem_mng.h"
-#include "common_mem_buf.h"
-#include "common_mem_common.h"
-
-#include "common_func.h"
-
-/*get the base address of msg data */
-#define NSFW_SHMEM_GET_DATA(pmsg, type) (type *)&((pmsg)->aidata[0])
-
-/*if input point is nun, just return null*/
-#define NSFW_POINT_CHK_RET_NULL(p, desc) \
- if (NULL == (p)) \
- { \
- NSCOMM_LOGERR("point check fail] desc_para=%s", desc); \
- return NULL; \
- }
-
-/*if input point is nun, just return err num*/
-#define NSFW_POINT_CHK_RET_ERR(p, desc) \
- if (NULL == (p)) \
- { \
- NSCOMM_LOGDBG("point check fail] desc_para=%s", desc); \
- return NSFW_MEM_ERR; \
- }
-
-/*if input point is nun, goto flag*/
-#define NSFW_POINT_CHK_RET_GOTO(p, gotoflag, desc) \
- if (NULL == (p)) \
- { \
- NSCOMM_LOGERR("point check fail] desc_para=%s", desc); \
- goto gotoflag; \
- }
-
-/*init the msg head*/
-#define NSFW_SHMEM_MSG_HEAD_INIT(pmsg, type, length) { \
- (pmsg)->usmsg_type = (type); \
- (pmsg)->uslength = (length); \
- }
-
-/*rsp msg head check, and if err goto*/
-#define NSFW_SHMEM_MSGHEAD_CHK_GOTO(pmsg, type, length, gotoflag) { \
- if (((type) != pmsg->usmsg_type) && ((length) != pmsg->uslength)) \
- { \
- NSCOMM_LOGERR("check fail] msgtype=%d, type_para=%d, len=%d", (pmsg->usmsg_type), (type), (length)); \
- goto gotoflag; \
- } \
- }
-
-/*rsp check the state*/
-#define NSFW_SHMEM_ACKSTATE_CHK_GOTO(expret, ret, expseg, seg, gotoflag) { \
- if (((ret) != (expret)) || ((expseg) != (seg))) \
- { \
- NSCOMM_LOGERR("ackstate check fail]msgack exp=%d, real=%d,eseg=%d, rseg=%d", (expret), (ret), (expseg), (seg)); \
- goto gotoflag; \
- } \
- }
-
-/*mzone msg init*/
-#define NSFW_SHMEM_MZONE_DATA_INIT(pdata, slength, seg, socketid) { \
- (pdata)->isocket_id = (socketid); \
- (pdata)->length = (slength); \
- (pdata)->usseq = (seg); \
- (pdata)->ireserv = 0; \
- }
-
-/*mbuf msg init*/
-#define NSFW_SHMEM_MBUF_DATA_INIT(pdata, seg, num, cashsize, priv_size, data_room, flag, socketid) { \
- (pdata)->usseq = (seg); \
- (pdata)->usnum = (num); \
- (pdata)->uscash_size = (cashsize); \
- (pdata)->uspriv_size = (priv_size); \
- (pdata)->usdata_room = (data_room); \
- (pdata)->enmptype = (flag); \
- (pdata)->isocket_id = (socketid); \
- (pdata)->ireserv = 0; \
- }
-
-/*mpool msg init*/
-#define NSFW_SHMEM_MPOOL_DATA_INIT(pdata, seg, num, eltsize, flag, socketid) { \
- (pdata)->usseq = (seg); \
- (pdata)->usnum = (num); \
- (pdata)->useltsize = (eltsize); \
- (pdata)->enmptype = (flag); \
- (pdata)->isocket_id = (socketid); \
- (pdata)->ireserv = 0; \
- }
-
-/*mring msg init*/
-#define NSFW_SHMEM_MRING_DATA_INIT(pdata, seg, num, flag, socketid) { \
- (pdata)->usseq = (seg); \
- (pdata)->usnum = (num); \
- (pdata)->enmptype = (flag); \
- (pdata)->isocket_id = (socketid); \
- (pdata)->ireserv = 0; \
- }
-
-#define NSFW_SHMEM_MSG_FREE(pmsg, prsp_msg) {\
- if (pmsg) \
- { \
- nsfw_mgr_msg_free(pmsg); \
- } \
- if (prsp_msg) \
- { \
- nsfw_mgr_msg_free(prsp_msg); \
- } \
-}
-
-/*
- * create a block memory by send a msg
- *
- */
-mzone_handle
-nsfw_memzone_remote_reserv (const i8 * name, size_t mlen, i32 socket_id)
-{
- /*msg point define */
- nsfw_mgr_msg *pmsg = NULL;
- nsfw_mgr_msg *prsp_msg = NULL;
-
- /*msg head point define */
- nsfw_shmem_msg_head *pdata_head = NULL;
-
- /*msg data point define */
- nsfw_shmem_reserv_req *pdata = NULL;
- nsfw_shmem_msg_head *pack_head = NULL;
-
- /*ack msg define */
- nsfw_shmem_ack *pack_data = NULL;
-
- mzone_handle hhandle = NULL;
- u8 ucret = TRUE;
- i32 iretval = NSFW_MEM_OK;
-
- //pmsg = nsfw_mgr_msg_alloc(MGR_MSG_MEM_ALLOC_REQ, NSFW_PROC_MASTER);
- pmsg = nsfw_mgr_msg_alloc (MGR_MSG_MEM_ALLOC_REQ, NSFW_PROC_MAIN);
- NSFW_POINT_CHK_RET_NULL (pmsg, "remote reserv pmsg alloc");
-
- prsp_msg = nsfw_mgr_null_rspmsg_alloc ();
- NSFW_POINT_CHK_RET_GOTO (prsp_msg, release, "remote reserv rspmsg alloc");
-
- /*msg head init */
- pdata_head = GET_USER_MSG (nsfw_shmem_msg_head, pmsg);
- NSFW_SHMEM_MSG_HEAD_INIT (pdata_head, NSFW_RESERV_REQ_MSG,
- sizeof (nsfw_shmem_reserv_req));
-
- /*msg data init */
- pdata = NSFW_SHMEM_GET_DATA (pdata_head, nsfw_shmem_reserv_req);
- iretval = STRCPY_S (pdata->aname, sizeof (pdata->aname), name);
- if (EOK != iretval)
- {
- NSCOMM_LOGERR ("reserv mem copy name fail] ret=%d", iretval);
- goto release;
- }
-
- /*fill msg data */
- NSFW_SHMEM_MZONE_DATA_INIT (pdata, mlen, (u16) 0, socket_id);
-
- ucret = nsfw_mgr_send_req_wait_rsp (pmsg, prsp_msg);
-
- if (FALSE == ucret)
- {
- NSCOMM_LOGERR ("reserv mem req rsp fail] ret=%u", ucret);
- goto release;
- }
-
- /*interrupt msg head */
- pack_head = GET_USER_MSG (nsfw_shmem_msg_head, prsp_msg);
- NSFW_SHMEM_MSGHEAD_CHK_GOTO (pack_head, NSFW_RESERV_ACK_MSG,
- sizeof (nsfw_shmem_ack), release);
-
- pack_data = NSFW_SHMEM_GET_DATA (pack_head, nsfw_shmem_ack);
- NSFW_SHMEM_ACKSTATE_CHK_GOTO (NSFW_MEM_ALLOC_SUCC, pack_data->cstate, 0,
- pack_data->usseq, release);
-
- hhandle = (mzone_handle) ADDR_SHTOL (pack_data->pbase_addr);
- NSCOMM_LOGDBG ("mem reserve] name=%s, handle=%p, seg=%u", name, hhandle,
- pack_data->usseq);
-release:
- NSFW_SHMEM_MSG_FREE (pmsg, prsp_msg);
- return hhandle;
-}
-
-/*
- *create some memories by send a msg
- */
-i32
-nsfw_memzone_remote_reserv_v (nsfw_mem_zone * pmeminfo,
- mzone_handle * paddr_array, i32 inum, pid_t pid)
-{
- /*msg point define */
- nsfw_mgr_msg *pmsg = NULL;
- nsfw_mgr_msg *prsp_msg = NULL;
- nsfw_shmem_msg_head *pdata_head = NULL;
- nsfw_shmem_reserv_req *pdata = NULL;
- nsfw_shmem_reserv_req *ptempdata = NULL;
- nsfw_shmem_msg_head *pack_head = NULL;
-
- nsfw_shmem_ack *pack_data = NULL;
- u8 ucret = TRUE;
- i32 iretval = NSFW_MEM_OK;
- i32 icount = 0;
- i32 itindex = 0;
- i32 iindex = 0;
- u16 ussegbase = 0;
- u16 ustempv = 0;
- i32 ieltnum = 0;
- i32 ieltnum_max =
- (NSFW_MGR_MSG_BODY_LEN -
- sizeof (nsfw_shmem_msg_head)) / sizeof (nsfw_shmem_reserv_req);
-
- //pmsg = nsfw_mgr_msg_alloc(MGR_MSG_MEM_ALLOC_REQ, NSFW_PROC_MASTER);
- pmsg = nsfw_mgr_msg_alloc (MGR_MSG_MEM_ALLOC_REQ, NSFW_PROC_MAIN);
- NSFW_POINT_CHK_RET_GOTO (pmsg, err, "remote reserv_v msg alloc");
-
- prsp_msg = nsfw_mgr_null_rspmsg_alloc ();
- NSFW_POINT_CHK_RET_GOTO (prsp_msg, err, "remote reserv_v rspmsg alloc");
-
- pdata_head = GET_USER_MSG (nsfw_shmem_msg_head, pmsg);
-
- ptempdata = pdata = NSFW_SHMEM_GET_DATA (pdata_head, nsfw_shmem_reserv_req);
-
- do
- {
- icount++;
- ieltnum++;
-
- if (((icount % ieltnum_max) == 0) || (icount >= inum))
- {
- NSFW_SHMEM_MSG_HEAD_INIT (pdata_head, NSFW_RESERV_REQ_MSG,
- ieltnum * sizeof (nsfw_shmem_reserv_req));
-
- itindex = icount - 1;
- int retVal =
- SPRINTF_S (ptempdata->aname, sizeof (ptempdata->aname), "%s_%x",
- pmeminfo[itindex].stname.aname, pid);
- if (-1 == retVal)
- {
- NSCOMM_LOGERR ("SPRINTF_S failed]ret=%d", retVal);
- }
- NSFW_SHMEM_MZONE_DATA_INIT (ptempdata, pmeminfo[itindex].length,
- (u16) itindex,
- pmeminfo[itindex].isocket_id);
-
- ucret = nsfw_mgr_send_req_wait_rsp (pmsg, prsp_msg);
-
- if (FALSE == ucret)
- {
- NSCOMM_LOGERR ("reserv v mem req rsp fail] ret=%u", ucret);
- goto err;
- }
-
- pack_head = GET_USER_MSG (nsfw_shmem_msg_head, prsp_msg);
- NSFW_SHMEM_MSGHEAD_CHK_GOTO (pack_head, NSFW_RESERV_ACK_MSG,
- ieltnum * sizeof (nsfw_shmem_ack),
- err);
-
- pack_data = NSFW_SHMEM_GET_DATA (pack_head, nsfw_shmem_ack);
-
- for (iindex = 0; iindex < ieltnum; iindex++)
- {
- ustempv = ussegbase + iindex;
-
- NSFW_SHMEM_ACKSTATE_CHK_GOTO (NSFW_MEM_ALLOC_SUCC,
- pack_data->cstate, ustempv,
- (u16) pack_data->usseq, err);
-
- paddr_array[ustempv] = ADDR_SHTOL (pack_data->pbase_addr);
- NSCOMM_LOGDBG ("remote reserve]index=%u, seg=%u, handle=%p",
- ustempv, pack_data->usseq, paddr_array[ustempv]);
- pack_data++;
- }
-
- ussegbase = icount;
- ieltnum = 0;
- ptempdata = pdata;
- }
- else
- {
- itindex = icount - 1;
- int retVal =
- SPRINTF_S (ptempdata->aname, sizeof (ptempdata->aname), "%s_%x",
- pmeminfo[itindex].stname.aname, pid);
- if (-1 == retVal)
- {
- NSCOMM_LOGERR ("SPRINTF_S failed]ret=%d", retVal);
- }
- NSFW_SHMEM_MZONE_DATA_INIT (ptempdata, pmeminfo[itindex].length,
- (u16) itindex,
- pmeminfo[itindex].isocket_id);
- ptempdata++;
- }
- }
- while (icount < inum);
-
- iretval = NSFW_MEM_OK;
- goto free;
-
-err:
- iretval = NSFW_MEM_ERR;
-free:
- NSFW_SHMEM_MSG_FREE (pmsg, prsp_msg);
- return iretval;
-}
-
-/*
- *release a block memory with name by send msg
- */
-i32
-nsfw_remote_free (const i8 * name, nsfw_mem_struct_type entype)
-{
- /*msg point define */
- nsfw_mgr_msg *pmsg = NULL;
- nsfw_mgr_msg *prsp_msg = NULL;
-
- nsfw_shmem_msg_head *pdata_head = NULL;
-
- nsfw_shmem_free_req *pdata = NULL;
-
- nsfw_shmem_msg_head *pack_head = NULL;
- nsfw_shmem_ack *pack_data = NULL;
- u8 ucret = TRUE;
- i32 iretval = NSFW_MEM_OK;
-
- pmsg = nsfw_mgr_msg_alloc (MGR_MSG_MEM_ALLOC_REQ, NSFW_PROC_MAIN);
- NSFW_POINT_CHK_RET_ERR (pmsg, "remote free msg alloc");
-
- prsp_msg = nsfw_mgr_null_rspmsg_alloc ();
- NSFW_POINT_CHK_RET_GOTO (prsp_msg, terr, "remote free rspmsg alloc");
-
- pdata_head = GET_USER_MSG (nsfw_shmem_msg_head, pmsg);
- NSFW_SHMEM_MSG_HEAD_INIT (pdata_head, NSFW_RELEASE_REQ_MSG,
- sizeof (nsfw_shmem_free_req));
-
- pdata = NSFW_SHMEM_GET_DATA (pdata_head, nsfw_shmem_free_req);
- if (EOK != STRCPY_S (pdata->aname, sizeof (pdata->aname), name))
- {
- NSCOMM_LOGERR ("STRCPY_S failed]name=%s", name);
- }
- pdata->usseq = 0;
- pdata->ustype = entype;
- pdata->ireserv = 0;
-
- ucret = nsfw_mgr_send_req_wait_rsp (pmsg, prsp_msg);
-
- if (FALSE == ucret)
- {
- NSCOMM_LOGERR ("free mem req rsp fail] ret=%u", ucret);
- goto release;
- }
-
- pack_head = GET_USER_MSG (nsfw_shmem_msg_head, prsp_msg);
- NSFW_SHMEM_MSGHEAD_CHK_GOTO (pack_head, NSFW_RELEASE_ACK_MSG,
- sizeof (nsfw_shmem_ack), terr);
-
- pack_data = NSFW_SHMEM_GET_DATA (pack_head, nsfw_shmem_ack);
- NSFW_SHMEM_ACKSTATE_CHK_GOTO (NSFW_MEM_ALLOC_SUCC, pack_data->cstate, 0,
- pack_data->usseq, terr);
-
- iretval = NSFW_MEM_OK;
- goto release;
-terr:
- iretval = NSFW_MEM_ERR;
-release:
- NSFW_SHMEM_MSG_FREE (pmsg, prsp_msg);
- return iretval;
-}
-
-/*
- *create a mbuf pool by send a msg
- */
-mpool_handle
-nsfw_remote_shmem_mbf_create (const i8 * name, unsigned n,
- unsigned cache_size, unsigned priv_size,
- unsigned data_room_size, i32 socket_id,
- nsfw_mpool_type entype)
-{
- /*msg point define */
- nsfw_mgr_msg *pmsg = NULL;
- nsfw_mgr_msg *prsp_msg = NULL;
- nsfw_shmem_msg_head *pdata_head = NULL;
- nsfw_shmem_mbuf_req *pdata = NULL;
- nsfw_shmem_msg_head *tpack_head = NULL;
- nsfw_shmem_ack *tpack_data = NULL;
- mpool_handle hhandle = NULL;
- u8 ucret = TRUE;
- i32 iretval = NSFW_MEM_OK;
-
- pmsg = nsfw_mgr_msg_alloc (MGR_MSG_MEM_ALLOC_REQ, NSFW_PROC_MAIN);
- NSFW_POINT_CHK_RET_NULL (pmsg, "remote mbf create pmsg alloc");
-
- prsp_msg = nsfw_mgr_null_rspmsg_alloc ();
- NSFW_POINT_CHK_RET_GOTO (prsp_msg, release, "remote mbf create msg alloc");
-
- pdata_head = GET_USER_MSG (nsfw_shmem_msg_head, pmsg);
- NSFW_SHMEM_MSG_HEAD_INIT (pdata_head, NSFW_MBUF_REQ_MSG,
- sizeof (nsfw_shmem_mbuf_req));
-
- pdata = NSFW_SHMEM_GET_DATA (pdata_head, nsfw_shmem_mbuf_req);
- iretval = STRCPY_S (pdata->aname, sizeof (pdata->aname), name);
- if (EOK != iretval)
- {
- NSCOMM_LOGERR ("mbf create name cpy fail] ret=%d", iretval);
- goto release;
- }
-
- NSFW_SHMEM_MBUF_DATA_INIT (pdata, 0, n, cache_size, priv_size,
- data_room_size, (u16) entype, socket_id);
-
- ucret = nsfw_mgr_send_req_wait_rsp (pmsg, prsp_msg);
-
- if (FALSE == ucret)
- {
- NSCOMM_LOGERR ("mbf create mem req rsp fail] ret=%u", ucret);
- goto release;
- }
-
- tpack_head = GET_USER_MSG (nsfw_shmem_msg_head, prsp_msg);
- NSFW_SHMEM_MSGHEAD_CHK_GOTO (tpack_head, NSFW_MBUF_ACK_MSG,
- sizeof (nsfw_shmem_ack), release);
-
- tpack_data = NSFW_SHMEM_GET_DATA (tpack_head, nsfw_shmem_ack);
- NSFW_SHMEM_ACKSTATE_CHK_GOTO (NSFW_MEM_ALLOC_SUCC, tpack_data->cstate, 0,
- tpack_data->usseq, release);
-
- hhandle = ADDR_SHTOL (tpack_data->pbase_addr);
- NSCOMM_LOGDBG ("mbf create] name=%s, handle=%p, seg=%u", name, hhandle,
- tpack_data->usseq);
-release:
- NSFW_SHMEM_MSG_FREE (pmsg, prsp_msg);
- return hhandle;
-}
-
-/*
- *create some mbuf pools
- */
-i32
-nsfw_remote_shmem_mbf_createv (nsfw_mem_mbfpool * pmbfname,
- mpool_handle * phandle_array, i32 inum,
- pid_t pid)
-{
- /*msg point define */
- nsfw_mgr_msg *mbpmsg = NULL;
- nsfw_mgr_msg *prsp_msg = NULL;
- nsfw_shmem_msg_head *pdata_head = NULL;
-
- nsfw_shmem_mbuf_req *pdata = NULL;
- nsfw_shmem_mbuf_req *ptempdata = NULL;
-
- nsfw_shmem_msg_head *pack_head = NULL;
-
- nsfw_shmem_ack *pack_data = NULL;
- mpool_handle hhandle = NULL;
- u8 ucret = TRUE;
- i32 iretval = NSFW_MEM_OK;
- i32 icount = 0;
- i32 itindex = 0;
- i32 iindex = 0;
- i32 isegbase = 0;
- i32 ieltnum = 0;
- i32 ieltnum_max =
- (NSFW_MGR_MSG_BODY_LEN -
- sizeof (nsfw_shmem_msg_head)) / sizeof (nsfw_shmem_mbuf_req);
-
- mbpmsg = nsfw_mgr_msg_alloc (MGR_MSG_MEM_ALLOC_REQ, NSFW_PROC_MAIN);
- NSFW_POINT_CHK_RET_GOTO (mbpmsg, lerr, "remote mbf createv msg alloc");
-
- prsp_msg = nsfw_mgr_null_rspmsg_alloc ();
- NSFW_POINT_CHK_RET_GOTO (prsp_msg, lerr, "remote mbf createv rspmsg alloc");
-
- pdata_head = GET_USER_MSG (nsfw_shmem_msg_head, mbpmsg);
-
- ptempdata = pdata = NSFW_SHMEM_GET_DATA (pdata_head, nsfw_shmem_mbuf_req);
-
- do
- {
- icount++;
- ieltnum++;
-
- if (((icount % ieltnum_max) == 0) || (icount >= inum))
- {
- NSFW_SHMEM_MSG_HEAD_INIT (pdata_head, NSFW_MBUF_REQ_MSG,
- ieltnum * sizeof (nsfw_shmem_mbuf_req));
-
- /*fill msg data */
- itindex = icount - 1;
- if (-1 ==
- SPRINTF_S (ptempdata->aname, sizeof (ptempdata->aname), "%s_%x",
- pmbfname[itindex].stname.aname, pid))
- {
- NSCOMM_LOGERR ("SPRINTF_S failed]");
- goto lerr;
- }
- NSFW_SHMEM_MBUF_DATA_INIT (ptempdata, (u16) itindex,
- pmbfname[itindex].usnum,
- pmbfname[itindex].uscash_size,
- pmbfname[itindex].uspriv_size,
- pmbfname[itindex].usdata_room,
- pmbfname[itindex].enmptype,
- pmbfname[itindex].isocket_id);
-
- ucret = nsfw_mgr_send_req_wait_rsp (mbpmsg, prsp_msg);
-
- if (FALSE == ucret)
- {
- NSCOMM_LOGERR ("mbf createv mem req rsp fail] ret=%d", ucret);
- goto lerr;
- }
-
- /*interrupt msg head */
- pack_head = GET_USER_MSG (nsfw_shmem_msg_head, prsp_msg);
- NSFW_SHMEM_MSGHEAD_CHK_GOTO (pack_head, NSFW_MBUF_ACK_MSG,
- ieltnum * sizeof (nsfw_shmem_ack),
- lerr);
-
- pack_data = NSFW_SHMEM_GET_DATA (pack_head, nsfw_shmem_ack);
-
- for (iindex = 0; iindex < ieltnum; iindex++)
- {
- NSFW_SHMEM_ACKSTATE_CHK_GOTO (NSFW_MEM_ALLOC_SUCC,
- pack_data->cstate,
- (isegbase + iindex),
- (u16) pack_data->usseq, lerr);
- phandle_array[isegbase + iindex] =
- ADDR_SHTOL (pack_data->pbase_addr);
- NSCOMM_LOGDBG ("mbf createv] seg=%d, handle=%p",
- pack_data->usseq, hhandle);
- pack_data++;
- }
-
- isegbase = icount;
- ieltnum = 0;
- ptempdata = pdata;
- }
- else
- {
- itindex = icount - 1;
- if (-1 ==
- SPRINTF_S (ptempdata->aname, sizeof (ptempdata->aname), "%s_%x",
- pmbfname[itindex].stname.aname, pid))
- {
- NSCOMM_LOGERR ("SPRINTF_S failed]");
- goto lerr;
- }
- NSFW_SHMEM_MBUF_DATA_INIT (ptempdata, (u16) itindex,
- pmbfname[itindex].usnum,
- pmbfname[itindex].uscash_size,
- pmbfname[itindex].uspriv_size,
- pmbfname[itindex].usdata_room,
- pmbfname[itindex].enmptype,
- pmbfname[itindex].isocket_id);
- ptempdata++;
- }
- }
- while (icount < inum);
-
- /*release memory */
- iretval = NSFW_MEM_OK;
- goto release;
-
-lerr:
- iretval = NSFW_MEM_ERR;
-release:
- NSFW_SHMEM_MSG_FREE (mbpmsg, prsp_msg);
- return iretval;
-}
-
-/*
- *create a simpile pool
- */
-mring_handle
-nsfw_remote_shmem_mpcreate (const char *name, unsigned int n,
- unsigned int elt_size, i32 socket_id,
- nsfw_mpool_type entype)
-{
- /*msg point define */
- nsfw_mgr_msg *pmsg = NULL;
- nsfw_mgr_msg *prsp_msg = NULL;
- nsfw_shmem_msg_head *pdata_head = NULL;
- nsfw_shmem_sppool_req *pdata = NULL;
- nsfw_shmem_msg_head *mppack_head = NULL;
- nsfw_shmem_ack *mppack_data = NULL;
- mring_handle hhandle = NULL;
- u8 ucret = TRUE;
- i32 iretval = NSFW_MEM_OK;
-
- pmsg = nsfw_mgr_msg_alloc (MGR_MSG_MEM_ALLOC_REQ, NSFW_PROC_MAIN);
- NSFW_POINT_CHK_RET_NULL (pmsg, "remote mbf mpcreate pmsg alloc");
-
- prsp_msg = nsfw_mgr_null_rspmsg_alloc ();
- NSFW_POINT_CHK_RET_GOTO (prsp_msg, release, "remote mpcreate rspmsg alloc");
-
- /*init msg head */
- pdata_head = GET_USER_MSG (nsfw_shmem_msg_head, pmsg);
- NSFW_SHMEM_MSG_HEAD_INIT (pdata_head, NSFW_SPPOOL_REQ_MSG,
- sizeof (nsfw_shmem_sppool_req));
-
- /*fill msg data */
- pdata = NSFW_SHMEM_GET_DATA (pdata_head, nsfw_shmem_sppool_req);
- iretval = STRCPY_S (pdata->aname, sizeof (pdata->aname), name);
- if (EOK != iretval)
- {
- NSCOMM_LOGERR ("mp create copy name fail] ret=%d", iretval);
- goto release;
- }
-
- /*fill msg data */
- NSFW_SHMEM_MPOOL_DATA_INIT (pdata, 0, n, elt_size, entype, socket_id);
-
- ucret = nsfw_mgr_send_req_wait_rsp (pmsg, prsp_msg);
-
- if (FALSE == ucret)
- {
- NSCOMM_LOGERR ("mp create rsp fail] ret=%d", ucret);
- goto release;
- }
-
- /*get msg head */
- mppack_head = GET_USER_MSG (nsfw_shmem_msg_head, prsp_msg);
- NSFW_SHMEM_MSGHEAD_CHK_GOTO (mppack_head, NSFW_SPPOOL_ACK_MSG,
- sizeof (nsfw_shmem_ack), release);
-
- mppack_data = NSFW_SHMEM_GET_DATA (mppack_head, nsfw_shmem_ack);
- NSFW_SHMEM_ACKSTATE_CHK_GOTO (NSFW_MEM_ALLOC_SUCC, mppack_data->cstate, 0,
- mppack_data->usseq, release);
-
- hhandle = ADDR_SHTOL (mppack_data->pbase_addr);
- NSCOMM_LOGDBG ("mpcreate] name=%s, handle=%p, seg=%d", name, hhandle,
- mppack_data->usseq);
-release:
- NSFW_SHMEM_MSG_FREE (pmsg, prsp_msg);
- return hhandle;
-}
-
-/*
- *create some simpile pools by send a msg
- */
-i32
-nsfw_remote_shmem_mpcreatev (nsfw_mem_sppool * pmpinfo,
- mring_handle * pringhandle_array, i32 inum,
- pid_t pid)
-{
- /*msg point define */
- nsfw_mgr_msg *pmsg = NULL;
- nsfw_mgr_msg *prsp_msg = NULL;
-
- /*msg head define */
- nsfw_shmem_msg_head *pdata_head = NULL;
-
- /*msg data define */
- nsfw_shmem_sppool_req *pdata = NULL;
- nsfw_shmem_sppool_req *ptempdata = NULL;
-
- /*ack msg define */
- nsfw_shmem_msg_head *pack_head = NULL;
-
- nsfw_shmem_ack *pack_data = NULL;
- mring_handle hhandle = NULL;
- u8 ucret = TRUE;
- i32 iretval = NSFW_MEM_OK;
- i32 icount = 0;
- i32 itindex = 0;
- i32 iindex = 0;
- i32 isegbase = 0;
- i32 ieltnum = 0;
- /*the max members that a msg can take */
- i32 ieltnum_max =
- (NSFW_MGR_MSG_BODY_LEN -
- sizeof (nsfw_shmem_msg_head)) / sizeof (nsfw_shmem_sppool_req);
-
- /*alloc a msg */
- //pmsg = nsfw_mgr_msg_alloc(MGR_MSG_MEM_ALLOC_REQ, NSFW_PROC_MASTER);
- pmsg = nsfw_mgr_msg_alloc (MGR_MSG_MEM_ALLOC_REQ, NSFW_PROC_MAIN);
- NSFW_POINT_CHK_RET_GOTO (pmsg, mperr, "remote mpcreatev pmsg alloc");
-
- /*alloc rsp msg */
- prsp_msg = nsfw_mgr_null_rspmsg_alloc ();
- NSFW_POINT_CHK_RET_GOTO (prsp_msg, mperr, "remote mpcreatev rspmsg alloc");
-
- pdata_head = GET_USER_MSG (nsfw_shmem_msg_head, pmsg);
-
- ptempdata = pdata = NSFW_SHMEM_GET_DATA (pdata_head, nsfw_shmem_sppool_req);
-
- do
- {
- icount++;
- ieltnum++;
-
- /*if the element num reach the bigest, or already send all, just deal */
- if (((icount % ieltnum_max) == 0) || (icount >= inum))
- {
- /*init msg header */
- NSFW_SHMEM_MSG_HEAD_INIT (pdata_head, NSFW_SPPOOL_REQ_MSG,
- ieltnum * sizeof (nsfw_shmem_sppool_req));
-
- /*fill the msg data */
- itindex = icount - 1;
-
- int retVal =
- SPRINTF_S (ptempdata->aname, sizeof (ptempdata->aname), "%s_%x",
- pmpinfo[itindex].stname.aname, pid);
- if (-1 == retVal)
- {
- NSCOMM_LOGERR ("SPRINTF_S fail]ret=%d", retVal);
- goto mperr;
- }
- NSFW_SHMEM_MPOOL_DATA_INIT (ptempdata, itindex,
- pmpinfo[itindex].usnum,
- pmpinfo[itindex].useltsize,
- pmpinfo[itindex].enmptype,
- pmpinfo[itindex].isocket_id);
-
- ucret = nsfw_mgr_send_req_wait_rsp (pmsg, prsp_msg);
-
- if (FALSE == ucret)
- {
- NSCOMM_LOGERR ("mpcreatev create fail] ret=%u", ucret);
- goto mperr;
- }
-
- /*interrupt mgs head */
- pack_head = GET_USER_MSG (nsfw_shmem_msg_head, prsp_msg);
- NSFW_SHMEM_MSGHEAD_CHK_GOTO (pack_head, NSFW_SPPOOL_ACK_MSG,
- ieltnum * sizeof (nsfw_shmem_ack),
- mperr);
-
- pack_data = NSFW_SHMEM_GET_DATA (pack_head, nsfw_shmem_ack);
-
- for (iindex = 0; iindex < ieltnum; iindex++)
- {
- NSFW_SHMEM_ACKSTATE_CHK_GOTO (NSFW_MEM_ALLOC_SUCC,
- pack_data->cstate,
- (isegbase + iindex),
- (u16) pack_data->usseq, mperr);
- pringhandle_array[isegbase + iindex] =
- ADDR_SHTOL (pack_data->pbase_addr);
- NSCOMM_LOGDBG ("mpcreatev] seg=%u, handle=%p", pack_data->usseq,
- hhandle);
- pack_data++;
- }
-
- isegbase = icount;
- ieltnum = 0;
- ptempdata = pdata;
- }
- else
- {
- itindex = icount - 1;
- int retVal =
- SPRINTF_S (ptempdata->aname, sizeof (ptempdata->aname), "%s_%x",
- pmpinfo[itindex].stname.aname, pid);
- if (-1 == retVal)
- {
- NSCOMM_LOGERR ("SPRINTF_S fail]ret=%d", retVal);
- goto mperr;
- }
- NSFW_SHMEM_MPOOL_DATA_INIT (ptempdata, itindex,
- pmpinfo[itindex].usnum,
- pmpinfo[itindex].useltsize,
- pmpinfo[itindex].enmptype,
- pmpinfo[itindex].isocket_id);
-
- ptempdata++;
- }
- }
- while (icount < inum);
-
- /*release the memory */
- iretval = NSFW_MEM_OK;
- goto release;
-
-mperr:
- iretval = NSFW_MEM_ERR;
-release:
- NSFW_SHMEM_MSG_FREE (pmsg, prsp_msg);
- return iretval;
-}
-
-/*
- *create a ring
- */
-mring_handle
-nsfw_remote_shmem_ringcreate (const char *name, unsigned int n, i32 socket_id,
- nsfw_mpool_type entype)
-{
- /*msg point define */
- nsfw_mgr_msg *pmsg = NULL;
- nsfw_mgr_msg *prsp_msg = NULL;
-
- /*msg head define */
- nsfw_shmem_msg_head *pdata_head = NULL;
-
- /*msg data define */
- nsfw_shmem_ring_req *pdata = NULL;
- /*ack msg define */
- nsfw_shmem_msg_head *pack_head = NULL;
- nsfw_shmem_ack *ppack_data = NULL;
- mring_handle hhandle = NULL;
- u8 ucret = TRUE;
- i32 iretval = NSFW_MEM_OK;
-
- //pmsg = nsfw_mgr_msg_alloc(MGR_MSG_MEM_ALLOC_REQ, NSFW_PROC_MASTER);
- pmsg = nsfw_mgr_msg_alloc (MGR_MSG_MEM_ALLOC_REQ, NSFW_PROC_MAIN);
- NSFW_POINT_CHK_RET_NULL (pmsg, "remote ringcreate pmsg alloc");
-
- prsp_msg = nsfw_mgr_null_rspmsg_alloc ();
- NSFW_POINT_CHK_RET_GOTO (prsp_msg, release,
- "remote ringcreate rspmsg alloc");
-
- /*fill msg head */
- pdata_head = GET_USER_MSG (nsfw_shmem_msg_head, pmsg);
- NSFW_SHMEM_MSG_HEAD_INIT (pdata_head, NSFW_RING_REQ_MSG,
- sizeof (nsfw_shmem_ring_req));
-
- /*fill msg data */
- pdata = NSFW_SHMEM_GET_DATA (pdata_head, nsfw_shmem_ring_req);
- iretval = STRCPY_S (pdata->aname, sizeof (pdata->aname), name);
- if (EOK != iretval)
- {
- NSCOMM_LOGERR ("ring create cpy name fail] ret=%d", iretval);
- goto release;
- }
-
- /*fill msg data */
- NSFW_SHMEM_MRING_DATA_INIT (pdata, 0, n, entype, socket_id);
-
- ucret = nsfw_mgr_send_req_wait_rsp (pmsg, prsp_msg);
-
- if (FALSE == ucret)
- {
- NSCOMM_LOGERR ("ring create rsp fail] ret=%d", ucret);
- goto release;
- }
-
- /*interrupt mgs head */
- pack_head = GET_USER_MSG (nsfw_shmem_msg_head, prsp_msg);
- NSFW_SHMEM_MSGHEAD_CHK_GOTO (pack_head, NSFW_RING_ACK_MSG,
- sizeof (nsfw_shmem_ack), release);
-
- ppack_data = NSFW_SHMEM_GET_DATA (pack_head, nsfw_shmem_ack);
- NSFW_SHMEM_ACKSTATE_CHK_GOTO (NSFW_MEM_ALLOC_SUCC, ppack_data->cstate, 0,
- ppack_data->usseq, release);
-
- hhandle = ADDR_SHTOL (ppack_data->pbase_addr);
- NSCOMM_LOGDBG ("ring create] name=%s, handle=%p, seg=%u", name, hhandle,
- ppack_data->usseq);
-release:
- NSFW_SHMEM_MSG_FREE (pmsg, prsp_msg);
- return hhandle;
-}
-
-/*
- *create a mem pool that the members are rings by send a msg
- *ieltnum:the num of ring member
- *iringnum:the num of ring in simple mem pool
- *entype:the default the of ring
- */
-i32
-nsfw_remote_shmem_ringcreatev (const char *name, i32 ieltnum,
- mring_handle * pringhandle_array, i32 iringnum,
- i32 socket_id, nsfw_mpool_type entype)
-{
- unsigned int useltsize = 0;
- mring_handle nhandle = NULL;
- i32 icount = 0;
- i32 n = 0;
- uint64_t baseaddr = 0;
- uint64_t endaddr = 0;
- /*the num of ring member must be power of 2 */
- unsigned int usnum = common_mem_align32pow2 (ieltnum + 1);
-
- useltsize =
- sizeof (struct nsfw_mem_ring) + usnum * sizeof (union RingData_U);
- nhandle =
- nsfw_remote_shmem_mpcreate (name, iringnum, useltsize, socket_id,
- NSFW_MRING_SPSC);
- NSFW_POINT_CHK_RET_ERR (nhandle, "remote ringcreatev msg alloc");
-
- n =
- nsfw_shmem_ring_sc_dequeuev (nhandle, (void **) pringhandle_array,
- iringnum);
-
- if (n != iringnum)
- {
- NSCOMM_LOGERR ("ring dequeue fail] ringnum=%d, retnum=%d", iringnum, n);
- return NSFW_MEM_ERR;
- }
-
- nsfw_shmem_ring_baseaddr_query (&baseaddr, &endaddr);
-
- for (icount = 0; icount < iringnum; icount++)
- {
- nsfw_mem_ring_init (pringhandle_array[icount], usnum, (void *) baseaddr,
- NSFW_SHMEM, entype);
- }
-
- return NSFW_MEM_OK;
-}
-
-/*
- *look up a msg by send a msg
- */
-void *
-nsfw_remote_shmem_lookup (const i8 * name, nsfw_mem_struct_type entype)
-{
- /*msg point define */
- nsfw_mgr_msg *pmsg = NULL;
- nsfw_mgr_msg *prsp_msg = NULL;
- void *addr = NULL;
- /*msg head data define */
- nsfw_shmem_msg_head *pdata_head = NULL;
-
- /*msg data define */
- nsfw_shmem_lookup_req *pdata = NULL;
-
- /*ack msg define */
- nsfw_shmem_msg_head *pack_head = NULL;
- nsfw_shmem_ack *lpack_data = NULL;
- u8 ucret = TRUE;
-
- pmsg = nsfw_mgr_msg_alloc (MGR_MSG_MEM_ALLOC_REQ, NSFW_PROC_MAIN);
- NSFW_POINT_CHK_RET_NULL (pmsg, "remote lookup pmsg alloc");
-
- prsp_msg = nsfw_mgr_null_rspmsg_alloc ();
- NSFW_POINT_CHK_RET_GOTO (prsp_msg, perr, "remote lookup rspmsg alloc");
-
- /*msg head init */
- pdata_head = GET_USER_MSG (nsfw_shmem_msg_head, pmsg);
- NSFW_SHMEM_MSG_HEAD_INIT (pdata_head, NSFW_MEM_LOOKUP_REQ_MSG,
- sizeof (nsfw_shmem_lookup_req));
-
- pdata = NSFW_SHMEM_GET_DATA (pdata_head, nsfw_shmem_lookup_req);
- if (EOK != STRCPY_S (pdata->aname, sizeof (pdata->aname), name))
- {
- NSCOMM_LOGERR ("STRCPY_S failed]name=%s", name);
- }
- pdata->usseq = 0;
- pdata->ustype = entype;
- pdata->ireserv = 0;
-
- ucret = nsfw_mgr_send_req_wait_rsp (pmsg, prsp_msg);
-
- if (FALSE == ucret)
- {
- NSCOMM_LOGERR ("mem lookup fail] ret=%u", ucret);
- goto release;
- }
-
- /*interrupt mgs head */
- pack_head = GET_USER_MSG (nsfw_shmem_msg_head, prsp_msg);
- NSFW_SHMEM_MSGHEAD_CHK_GOTO (pack_head, NSFW_MEM_LOOKUP_ACK_MSG,
- sizeof (nsfw_shmem_ack), perr);
-
- lpack_data = NSFW_SHMEM_GET_DATA (pack_head, nsfw_shmem_ack);
- NSFW_SHMEM_ACKSTATE_CHK_GOTO (NSFW_MEM_ALLOC_SUCC, lpack_data->cstate, 0,
- lpack_data->usseq, perr);
-
- addr = ADDR_SHTOL (lpack_data->pbase_addr);
- NSCOMM_LOGDBG ("shmem lookup] name=%s, handle=%p, seg=%u", name, addr,
- lpack_data->usseq);
- goto release;
-perr:
- addr = NULL;
-
-release:
- NSFW_SHMEM_MSG_FREE (pmsg, prsp_msg);
- return addr;
-}
diff --git a/src/framework/common/mem_mgr/nsfw_shmem/nsfw_rshmem_mng.h b/src/framework/common/mem_mgr/nsfw_shmem/nsfw_rshmem_mng.h
deleted file mode 100644
index 60c4115..0000000
--- a/src/framework/common/mem_mgr/nsfw_shmem/nsfw_rshmem_mng.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _NSFW_RSHMEM_MNG_H
-#define _NSFW_RSHMEM_MNG_H
-
-mzone_handle nsfw_memzone_remote_reserv (const i8 * name, size_t mlen,
- i32 socket_id);
-i32 nsfw_memzone_remote_reserv_v (nsfw_mem_zone * pmeminfo,
- mzone_handle * paddr_array, i32 inum,
- pid_t pid);
-i32 nsfw_remote_free (const i8 * name, nsfw_mem_struct_type entype);
-mpool_handle nsfw_remote_shmem_mbf_create (const i8 * name, unsigned int n,
- unsigned cache_size,
- unsigned priv_size,
- unsigned data_room_size,
- i32 socket_id,
- nsfw_mpool_type entype);
-i32 nsfw_remote_shmem_mbf_createv (nsfw_mem_mbfpool * pmbfname,
- mpool_handle * phandle_array, i32 inum,
- pid_t pid);
-mring_handle nsfw_remote_shmem_mpcreate (const char *name, unsigned int n,
- unsigned int elt_size, i32 socket_id,
- nsfw_mpool_type entype);
-i32 nsfw_remote_shmem_mpcreatev (nsfw_mem_sppool * pmpinfo,
- mring_handle * pringhandle_array, i32 inum,
- pid_t pid);
-mring_handle nsfw_remote_shmem_ringcreate (const char *name, unsigned int n,
- i32 socket_id,
- nsfw_mpool_type entype);
-i32 nsfw_remote_shmem_ringcreatev (const char *name, i32 ieltnum,
- mring_handle * pringhandle_array,
- i32 iringnum, i32 socket_id,
- nsfw_mpool_type entype);
-
-void *nsfw_remote_shmem_lookup (const i8 * name, nsfw_mem_struct_type entype);
-
-#endif
diff --git a/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_mdesc.c b/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_mdesc.c
deleted file mode 100644
index 2e9c969..0000000
--- a/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_mdesc.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include "nsfw_mem_desc.h"
-#include "nsfw_shmem_mng.h"
-#include "nsfw_shmem_mdesc.h"
-
-/*the inferaces accessing memory*/
-nsfw_mem_ops g_shmem_ops = {
- nsfw_shmem_init,
- nsfw_shmem_destroy,
- nsfw_shmem_create,
- nsfw_shmem_createv,
- nsfw_shmem_lookup,
- nsfw_shmem_release,
- nsfw_shmem_mbfmpcreate,
- nsfw_shmem_mbfmpcreatev,
- nsfw_shmem_mbfalloc,
- nsfw_shmem_mbffree,
- nsfw_shmem_mbfmplookup,
- nsfw_shmem_mbfmprelease,
- nsfw_shmem_spcreate,
- nsfw_shmem_spcreatev,
- nswf_shmem_sp_ringcreate,
- nsfw_shmem_sprelease,
- nsfw_shmem_sp_lookup,
- nsfw_shmem_ringcreate,
- nsfw_shmem_ring_lookup,
- nsfw_shmem_ringrelease,
- nsfw_shmem_static,
- nsfw_shmem_mbuf_recycle,
- nsfw_shmem_sp_iterator,
- nsfw_shmem_mbuf_iterator
-};
diff --git a/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_mdesc.h b/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_mdesc.h
deleted file mode 100644
index afd9e29..0000000
--- a/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_mdesc.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _NSFW_SHMEM_MDESC_H_
-#define _NSFW_SHMEM_MDESC_H_
-
-extern nsfw_mem_ops g_shmem_ops;
-
-#endif
diff --git a/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_mng.c b/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_mng.c
deleted file mode 100644
index 77ffd19..0000000
--- a/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_mng.c
+++ /dev/null
@@ -1,814 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include "nstack_securec.h"
-#include "nstack_log.h"
-#include "nsfw_mem_desc.h"
-#include "nsfw_ring_fun.h"
-#include "nsfw_shmem_ring.h"
-#include "nsfw_shmem_mng.h"
-#include "common_mem_mempool.h"
-#include "common_mem_memzone.h"
-#include "common_mem_buf.h"
-#include "common_mem_mbuf.h"
-#include "nsfw_rshmem_mng.h"
-#include "common_mem_api.h"
-#include "common_sys_config.h"
-#include "nsfw_maintain_api.h"
-#include "common_pal_bitwide_adjust.h"
-
-#include "common_mem_pal.h"
-
-#include "common_func.h"
-
-#define NSFW_SHMEM_PID (get_sys_pid())
-#define NSFW_SHMEM_FLAG (g_shmem_localdata->enflag)
-
-/* app_mode 1: simple stack with APP*/
-extern u8 app_mode;
-u8 app_mode = 0;
-
-nsfw_mem_localdata *g_shmem_localdata = NULL;
-
-/*check g_mem_localdata*/
-#define NSFW_INIT_CHK_RET() \
- if (!g_shmem_localdata) \
- { \
- return NSFW_MEM_ERR; \
- }
-
-#define NSFW_INIT_CHK_RET_NULL() \
- if (!g_shmem_localdata) \
- { \
- return NULL; \
- }
-
-/*
- *share memory mng module init
- *
- */
-i32
-nsfw_shmem_init (nsfw_mem_para * para)
-{
- common_mem_pal_module_info rteinfo = { 0 };
- i32 iret = NSFW_MEM_ERR;
- int flag = 0;
- if (!para)
- {
- return NSFW_MEM_ERR;
- }
-
- NSCOMM_LOGINF ("nsfw shmem init begin");
-
- LCORE_MASK_SET (rteinfo.ilcoremask, 1);
- rteinfo.ucproctype = DMM_PROC_T_SECONDARY;
- iret = common_pal_module_init (para, &rteinfo, app_mode);
-
- if (DMM_MBUF_RET_OK != iret)
- {
- NSCOMM_LOGERR ("rte init fail] ret=0x%x", iret);
- return NSFW_MEM_ERR;
- }
-
- flag = dmm_pal_addr_align ();
- if ((0 == flag) && (NSFW_PROC_MAIN == para->enflag))
- {
- dmm_addr_print ();
- NSCOMM_LOGERR
- ("rte init addr is not the same with primary] nstackmain flag=%d",
- flag);
- return NSFW_MEM_ERR;
- }
-
- g_shmem_localdata =
- (nsfw_mem_localdata *) malloc (sizeof (nsfw_mem_localdata));
-
- if (NULL == g_shmem_localdata)
- {
- NSCOMM_LOGERR ("g_shmem_localdata malloc fail");
- return NSFW_MEM_ERR;
- }
-
- iret =
- MEMSET_S (g_shmem_localdata, sizeof (nsfw_mem_localdata), 0,
- sizeof (nsfw_mem_localdata));
- if (EOK != iret)
- {
- NSCOMM_LOGERR ("memset fail] g_shmem_localdata=%p ", g_shmem_localdata);
- free (g_shmem_localdata);
- g_shmem_localdata = NULL;
- return NSFW_MEM_ERR;
- }
-
- g_shmem_localdata->enflag = para->enflag;
-
- NSCOMM_LOGINF ("nsfw shmem init end] enflag=%d", para->enflag);
- return NSFW_MEM_OK;
-
-}
-
-/*
- *module destroy
- */
-void
-nsfw_shmem_destroy (void)
-{
- if (g_shmem_localdata)
- {
- free (g_shmem_localdata);
- g_shmem_localdata = NULL;
- }
-
- return;
-}
-
-/*
- * create a shared memory
- * nsfw_mem_zone::stname memory name
- * nsfw_mem_zone::isize
- */
-mzone_handle
-nsfw_shmem_create (nsfw_mem_zone * pinfo)
-{
- i8 aname[COMMON_MEM_MEMPOOL_NAMESIZE] = { 0 };
-
- NSFW_INIT_CHK_RET_NULL ()if (NSFW_PROC_MAIN == NSFW_SHMEM_FLAG)
- {
- return common_memzone_data_reserve_name (pinfo->stname.aname,
- pinfo->length,
- pinfo->isocket_id);
- }
- else
- {
- /*app must less than NSFW_MEM_APPNAME_LENGTH */
- NSFW_NAME_LENCHECK_RET_NULL (pinfo->stname.aname, "shmem create")
- if (-1 ==
- SPRINTF_S (aname, COMMON_MEM_MEMPOOL_NAMESIZE, "%s_%x",
- pinfo->stname.aname, NSFW_SHMEM_PID))
- {
- NSCOMM_LOGERR ("SPRINTF_S failed]");
- return NULL;
- }
- }
-
- return nsfw_memzone_remote_reserv ((char *) &aname[0], pinfo->length,
- SOCKET_ID_ANY);
-}
-
-/*
- *create some memory
- *inum must be equal iarray_num
- */
-i32
-nsfw_shmem_createv (nsfw_mem_zone * pmeminfo, i32 inum,
- mzone_handle * paddr_array, i32 iarray_num)
-{
- NSFW_INIT_CHK_RET ();
-
- if (NSFW_PROC_MAIN == NSFW_SHMEM_FLAG)
- {
- return nsfw_memzone_remote_reserv_v (pmeminfo, paddr_array, iarray_num,
- 0);
- }
- else
- {
- return nsfw_memzone_remote_reserv_v (pmeminfo, paddr_array, iarray_num,
- NSFW_SHMEM_PID);
- }
- return NSFW_MEM_ERR;
-}
-
-mzone_handle
-nsfw_shmem_lookup (nsfw_mem_name * pname)
-{
- i8 aname[COMMON_MEM_MEMPOOL_NAMESIZE] = { 0 };
- NSFW_INIT_CHK_RET_NULL ();
-
- if (NSFW_PROC_MAIN == NSFW_SHMEM_FLAG)
- {
- return common_memzone_data_lookup_name (pname->aname);
- }
-
- if ((NSFW_PROC_NULL == pname->enowner)
- || (NSFW_PROC_MAIN == pname->enowner))
- {
- int retVal =
- SPRINTF_S (aname, COMMON_MEM_MEMPOOL_NAMESIZE, "%s", pname->aname);
- if (-1 == retVal)
- {
- NSCOMM_LOGERR ("SPRINTF_S failed");
- return NULL;
- }
- }
- else
- {
- /*app must less than NSFW_MEM_APPNAME_LENGTH */
- NSFW_NAME_LENCHECK_RET_NULL (pname->aname, "shmem lookup")
- int retVal =
- SPRINTF_S (aname, COMMON_MEM_MEMPOOL_NAMESIZE, "%s_%x", pname->aname,
- NSFW_SHMEM_PID);
- if (-1 == retVal)
- {
- NSCOMM_LOGERR ("SPRINTF_S failed");
- return NULL;
- }
- }
-
- return nsfw_remote_shmem_lookup (aname, NSFW_MEM_MZONE);
-}
-
-i32
-nsfw_shmem_release (nsfw_mem_name * pname)
-{
- i8 aname[COMMON_MEM_MEMPOOL_NAMESIZE] = { 0 };
- const struct common_mem_memzone *pmzone = NULL;
- NSFW_INIT_CHK_RET ();
-
- if (NSFW_PROC_MAIN == NSFW_SHMEM_FLAG)
- {
- pmzone = common_mem_memzone_lookup (pname->aname);
-
- if (pmzone)
- {
- common_mem_memzone_free (pmzone);
- }
- return NSFW_MEM_OK;
- }
- else
- {
- NSFW_NAME_LENCHECK_RET (pname->aname, "shmem free")
- if (-1 ==
- SPRINTF_S (aname, COMMON_MEM_MEMPOOL_NAMESIZE, "%s_%x",
- pname->aname, NSFW_SHMEM_PID))
- {
- NSCOMM_LOGERR ("SPRINTF_S failed");
- return NSFW_MEM_ERR;
- }
- }
-
- return nsfw_remote_free (aname, NSFW_MEM_MZONE);
-}
-
-mpool_handle
-nsfw_shmem_mbfmpcreate (nsfw_mem_mbfpool * pbufinfo)
-{
- i8 aname[COMMON_MEM_MEMPOOL_NAMESIZE] = { 0 };
-
- NSFW_INIT_CHK_RET_NULL ();
-
- if (NSFW_PROC_MAIN == NSFW_SHMEM_FLAG)
- {
- return common_mem_pktmbuf_pool_create (pbufinfo->stname.aname,
- pbufinfo->usnum,
- pbufinfo->uscash_size,
- pbufinfo->uspriv_size,
- pbufinfo->usdata_room,
- pbufinfo->isocket_id);
- }
- else
- {
- /*app must less than NSFW_MEM_APPNAME_LENGTH */
- NSFW_NAME_LENCHECK_RET_NULL (pbufinfo->stname.aname, "mbufpool create")
- if (-1 ==
- SPRINTF_S (aname, COMMON_MEM_MEMPOOL_NAMESIZE, "%s_%x",
- pbufinfo->stname.aname, NSFW_SHMEM_PID))
- {
- NSCOMM_LOGERR ("SPRINTF_S failed]");
- }
- }
-
- return nsfw_remote_shmem_mbf_create (aname, pbufinfo->usnum,
- pbufinfo->uscash_size,
- pbufinfo->uspriv_size,
- pbufinfo->usdata_room, SOCKET_ID_ANY,
- pbufinfo->enmptype);
-}
-
-/*
- *create some mbuf pools
- */
-i32
-nsfw_shmem_mbfmpcreatev (nsfw_mem_mbfpool * pmbfname, i32 inum,
- mpool_handle * phandle_array, i32 iarray_num)
-{
- NSFW_INIT_CHK_RET ();
-
- if (NSFW_PROC_MAIN == NSFW_SHMEM_FLAG)
- {
- return nsfw_remote_shmem_mbf_createv (pmbfname, phandle_array,
- iarray_num, 0);
- }
- else
- {
- return nsfw_remote_shmem_mbf_createv (pmbfname, phandle_array,
- iarray_num, NSFW_SHMEM_PID);
- }
-
- return NSFW_MEM_ERR;
-}
-
-mbuf_handle
-nsfw_shmem_mbfalloc (mpool_handle mhandle)
-{
- return (mbuf_handle) common_mem_pktmbuf_alloc ((struct common_mem_mempool *)
- mhandle);
-}
-
-i32
-nsfw_shmem_mbffree (mbuf_handle mhandle)
-{
- common_mem_pktmbuf_free ((struct common_mem_mbuf *) mhandle);
- return NSFW_MEM_OK;
-}
-
-i32
-nsfw_shmem_mbfmprelease (nsfw_mem_name * pname)
-{
- return NSFW_MEM_OK;
-}
-
-mpool_handle
-nsfw_shmem_mbfmplookup (nsfw_mem_name * pmbfname)
-{
- i8 aname[COMMON_MEM_MEMPOOL_NAMESIZE] = { 0 };
-
- NSFW_INIT_CHK_RET_NULL ();
-
- if (NSFW_PROC_MAIN == NSFW_SHMEM_FLAG)
- {
- return common_mem_mempool_lookup (pmbfname->aname);
- }
-
- if ((NSFW_PROC_NULL == pmbfname->enowner)
- || (NSFW_PROC_MAIN == pmbfname->enowner))
- {
- if (-1 ==
- SPRINTF_S (aname, COMMON_MEM_MEMPOOL_NAMESIZE, "%s",
- pmbfname->aname))
- {
- NSCOMM_LOGERR ("SPRINTF_S failed]");
- }
- }
- else
- {
- /*app must less than NSFW_MEM_APPNAME_LENGTH */
- NSFW_NAME_LENCHECK_RET_NULL (pmbfname->aname, "shmem lookup")
- if (-1 ==
- SPRINTF_S (aname, COMMON_MEM_MEMPOOL_NAMESIZE, "%s_%x",
- pmbfname->aname, NSFW_SHMEM_PID))
- {
- NSCOMM_LOGERR ("SPRINTF_S failed]");
- }
- }
-
- return nsfw_remote_shmem_lookup (aname, NSFW_MEM_MBUF);
-}
-
-mring_handle
-nsfw_shmem_spcreate (nsfw_mem_sppool * pmpinfo)
-{
- i8 aname[COMMON_MEM_MEMPOOL_NAMESIZE] = { 0 };
-
- NSFW_INIT_CHK_RET_NULL ();
-
- if (NSFW_PROC_MAIN == NSFW_SHMEM_FLAG)
- {
- return nsfw_shmem_pool_create (pmpinfo->stname.aname, pmpinfo->usnum,
- pmpinfo->useltsize, pmpinfo->isocket_id,
- pmpinfo->enmptype);
- }
- else
- {
- NSFW_NAME_LENCHECK_RET_NULL (pmpinfo->stname.aname, "mpool create")
- if (-1 ==
- SPRINTF_S (aname, COMMON_MEM_MEMPOOL_NAMESIZE, "%s_%x",
- pmpinfo->stname.aname, NSFW_SHMEM_PID))
- {
- NSCOMM_LOGERR ("SPRINTF_S failed]");
- }
- }
-
- return nsfw_remote_shmem_mpcreate (aname, pmpinfo->usnum,
- pmpinfo->useltsize, SOCKET_ID_ANY,
- pmpinfo->enmptype);
-}
-
-i32
-nsfw_shmem_spcreatev (nsfw_mem_sppool * pmpinfo, i32 inum,
- mring_handle * pringhandle_array, i32 iarray_num)
-{
- NSFW_INIT_CHK_RET ();
-
- if (NSFW_PROC_MAIN == NSFW_SHMEM_FLAG)
- {
- return nsfw_remote_shmem_mpcreatev (pmpinfo, pringhandle_array, inum,
- 0);
- }
- else
- {
- return nsfw_remote_shmem_mpcreatev (pmpinfo, pringhandle_array, inum,
- NSFW_SHMEM_PID);
- }
- return NSFW_MEM_ERR;
-}
-
-i32
-nsfw_lshmem_ringcreatev (const char *name, i32 ieltnum,
- mring_handle * pringhandle_array, i32 iringnum,
- i32 socket_id, nsfw_mpool_type entype)
-{
- i32 useltsize = 0;
- mring_handle nhandle = NULL;
- i32 icount = 0;
- i32 n = 0;
- uint64_t baseaddr = 0;
- uint64_t endaddr = 0;
- i32 usnum = common_mem_align32pow2 (ieltnum + 1);
-
- useltsize =
- sizeof (struct nsfw_mem_ring) + usnum * sizeof (union RingData_U);
- nhandle =
- nsfw_shmem_pool_create (name, iringnum, useltsize, socket_id,
- NSFW_MRING_SPSC);
- if (NULL == (nhandle))
- {
- return NSFW_MEM_ERR;
- }
-
- n =
- nsfw_shmem_ring_sc_dequeuev (nhandle, (void **) pringhandle_array,
- iringnum);
-
- if (n != iringnum)
- {
- NSCOMM_LOGERR
- ("ring dequeuev failed] ring=%p, dequeue num=%d, expect num=%d",
- nhandle, n, iringnum);
- return NSFW_MEM_ERR;
- }
-
- nsfw_shmem_ring_baseaddr_query (&baseaddr, &endaddr);
-
- for (icount = 0; icount < iringnum; icount++)
- {
- nsfw_mem_ring_init (pringhandle_array[icount], usnum, (void *) baseaddr,
- NSFW_SHMEM, entype);
- }
-
- return NSFW_MEM_OK;
-}
-
-i32
-nswf_shmem_sp_ringcreate (nsfw_mem_mring * prpoolinfo,
- mring_handle * pringhandle_array, i32 iringnum)
-{
- i8 aname[COMMON_MEM_MEMPOOL_NAMESIZE] = { 0 };
-
- NSFW_INIT_CHK_RET ();
-
- if (NSFW_PROC_MAIN == NSFW_SHMEM_FLAG)
- {
- return nsfw_lshmem_ringcreatev (prpoolinfo->stname.aname,
- prpoolinfo->usnum, pringhandle_array,
- iringnum, SOCKET_ID_ANY,
- prpoolinfo->enmptype);
- }
- else
- {
- NSFW_NAME_LENCHECK_RET (prpoolinfo->stname.aname, "ring pool")
- int retVal = SPRINTF_S (aname, COMMON_MEM_MEMPOOL_NAMESIZE, "%s_%x",
- prpoolinfo->stname.aname, NSFW_SHMEM_PID);
- if (-1 == retVal)
- {
- NSCOMM_LOGERR ("SPRINTF_S failed]");
- }
- }
-
- return nsfw_remote_shmem_ringcreatev (aname, prpoolinfo->usnum,
- pringhandle_array, iringnum,
- SOCKET_ID_ANY, prpoolinfo->enmptype);
-}
-
-i32
-nsfw_shmem_sprelease (nsfw_mem_name * pname)
-{
- i8 aname[COMMON_MEM_MEMPOOL_NAMESIZE] = { 0 };
- void *mz_mem = NULL;
- struct nsfw_mem_ring *ring_ptr = NULL;
- NSFW_INIT_CHK_RET ();
-
- if (NSFW_PROC_MAIN == NSFW_SHMEM_FLAG)
- {
- mz_mem = common_memzone_data_lookup_name (pname->aname);
-
- if (mz_mem)
- {
- ring_ptr =
- (struct nsfw_mem_ring *) ((char *) mz_mem +
- sizeof (struct nsfw_shmem_ring_head));
- nsfw_shmem_pool_free (ring_ptr);
- }
- return NSFW_MEM_OK;
- }
- else
- {
- NSFW_NAME_LENCHECK_RET (pname->aname, "shmem free")
- if (-1 ==
- SPRINTF_S (aname, COMMON_MEM_MEMPOOL_NAMESIZE, "%s_%x",
- pname->aname, NSFW_SHMEM_PID))
- {
- NSCOMM_LOGERR ("SPRINTF_S failed]");
- }
- }
-
- return nsfw_remote_free (aname, NSFW_MEM_SPOOL);
-}
-
-mring_handle
-nsfw_shmem_sp_lookup (nsfw_mem_name * pname)
-{
- i8 aname[COMMON_MEM_MEMPOOL_NAMESIZE] = { 0 };
- void *mz_mem = NULL;
- struct nsfw_mem_ring *ring_ptr = NULL;
- NSFW_INIT_CHK_RET_NULL ();
-
- if (NSFW_PROC_MAIN == NSFW_SHMEM_FLAG)
- {
- mz_mem = common_memzone_data_lookup_name (pname->aname);
-
- if (mz_mem)
- {
- ring_ptr =
- (struct nsfw_mem_ring *) ((char *) mz_mem +
- sizeof (struct nsfw_shmem_ring_head));
- return ring_ptr;
- }
- return mz_mem;
- }
-
- if ((NSFW_PROC_NULL == pname->enowner)
- || (NSFW_PROC_MAIN == pname->enowner))
- {
- if (-1 ==
- SPRINTF_S (aname, COMMON_MEM_MEMPOOL_NAMESIZE, "%s", pname->aname))
- {
- NSCOMM_LOGERR ("SPRINTF_S fails]");
- }
- }
- else
- {
- /*app's name can not over NSFW_MEM_APPNAME_LENGTH */
- NSFW_NAME_LENCHECK_RET_NULL (pname->aname, "shmem lookup")
- if (-1 ==
- SPRINTF_S (aname, COMMON_MEM_MEMPOOL_NAMESIZE, "%s_%x",
- pname->aname, NSFW_SHMEM_PID))
- {
- NSCOMM_LOGERR ("SPRINTF_S failed]");
- }
- }
-
- return nsfw_remote_shmem_lookup (aname, NSFW_MEM_SPOOL);
-}
-
-mring_handle
-nsfw_shmem_ringcreate (nsfw_mem_mring * pringinfo)
-{
- i8 aname[COMMON_MEM_MEMPOOL_NAMESIZE] = { 0 };
-
- NSFW_INIT_CHK_RET_NULL ();
-
- if (NSFW_PROC_MAIN == NSFW_SHMEM_FLAG)
- {
- return nsfw_shmem_ring_create (pringinfo->stname.aname,
- pringinfo->usnum, pringinfo->isocket_id,
- pringinfo->enmptype);
- }
- else
- {
- NSFW_NAME_LENCHECK_RET_NULL (pringinfo->stname.aname, "ring create")
- if (-1 ==
- SPRINTF_S (aname, COMMON_MEM_MEMPOOL_NAMESIZE, "%s_%x",
- pringinfo->stname.aname, NSFW_SHMEM_PID))
- {
- NSCOMM_LOGERR ("SPRINTF_S failed]");
- }
- }
-
- return nsfw_remote_shmem_ringcreate (aname, pringinfo->usnum, SOCKET_ID_ANY,
- pringinfo->enmptype);
-}
-
-mring_handle
-nsfw_shmem_ring_lookup (nsfw_mem_name * pname)
-{
- return nsfw_shmem_lookup (pname);
-}
-
-i32
-nsfw_shmem_ringrelease (nsfw_mem_name * pname)
-{
- return nsfw_shmem_release (pname);
-}
-
-size_t
-nsfw_shmem_mbufpool_statics (mpool_handle mbufpool)
-{
- struct common_mem_mempool *mp = (struct common_mem_mempool *) mbufpool;
- return (size_t) mp->size * (mp->header_size + mp->elt_size +
- mp->trailer_size) +
- (size_t) mp->private_data_size +
- (size_t)
- common_mem_ring_get_memsize (common_mem_align32pow2 (mp->size + 1));
-}
-
-size_t
-nsfw_shmem_sppool_statics (mring_handle sppool)
-{
- struct nsfw_shmem_ring_head *temp = NULL;
- size_t lent = 0;
- temp =
- (struct nsfw_shmem_ring_head *) ((char *) sppool -
- sizeof (struct nsfw_shmem_ring_head));
-
- while (temp)
- {
- lent += temp->mem_zone->len;
- temp = temp->next;
- }
-
- return lent;
-}
-
-size_t
-nsfw_shmem_ring_statics (mring_handle handle)
-{
- struct nsfw_mem_ring *ring = (struct nsfw_mem_ring *) handle;
- return ring->size * sizeof (union RingData_U) +
- sizeof (struct nsfw_mem_ring);
-}
-
-ssize_t
-nsfw_shmem_static (void *handle, nsfw_mem_struct_type type)
-{
- switch (type)
- {
- case NSFW_MEM_MBUF:
- return nsfw_shmem_mbufpool_statics (handle);
- case NSFW_MEM_SPOOL:
- return nsfw_shmem_sppool_statics (handle);
- case NSFW_MEM_RING:
- return nsfw_shmem_ring_statics (handle);
- default:
- break;
- }
- return -1;
-}
-
-i32
-nsfw_shmem_mbuf_recycle (mpool_handle handle)
-{
- return NSFW_MEM_OK;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_shmem_sp_iterator
-* Description : sp pool iterator
-* Input : mpool_handle handle
-* u32 start
-* u32 end
-* nsfw_mem_item_fun fun
-* void *argv
-* Output : None
-* Return Value : i32
-* Calls :
-* Called By :
-*****************************************************************************/
-i32
-nsfw_shmem_sp_iterator (mpool_handle handle, u32 start, u32 end,
- nsfw_mem_item_fun fun, void *argv)
-{
- struct nsfw_mem_ring *perfring_ptr = (struct nsfw_mem_ring *) handle;
- if (NULL == perfring_ptr || NULL == fun)
- {
- return 0;
- }
-
- if (0 == perfring_ptr->eltsize)
- {
- return 0;
- }
-
- int num = perfring_ptr->size;
- if (start >= (u32) num || end <= start)
- {
- return 0;
- }
-
- struct nsfw_shmem_ring_head *ring_head =
- (struct nsfw_shmem_ring_head *) ((char *) handle -
- sizeof (struct nsfw_shmem_ring_head));
- void *mz =
- (void *) ((char *) perfring_ptr + sizeof (struct nsfw_mem_ring) +
- num * sizeof (union RingData_U));
-
- if (ring_head->mem_zone->len <
- sizeof (struct nsfw_shmem_ring_head) + sizeof (struct nsfw_mem_ring) +
- num * sizeof (union RingData_U))
- {
- return 0;
- }
-
- u32 mz_len =
- ring_head->mem_zone->len - sizeof (struct nsfw_shmem_ring_head) -
- sizeof (struct nsfw_mem_ring) - num * sizeof (union RingData_U);
-
- u32 start_idx = 0;
- u32 elm_num = 0;
- elm_num = mz_len / perfring_ptr->eltsize;
- while (start > start_idx + elm_num)
- {
- if (NULL == ring_head->next || NULL == ring_head->next->mem_zone
- || 0 == elm_num)
- {
- return 0;
- }
-
- ring_head =
- (struct nsfw_shmem_ring_head *) ring_head->next->mem_zone->addr_64;
- mz_len =
- ring_head->mem_zone->len - sizeof (struct nsfw_shmem_ring_head);
-
- elm_num = mz_len / perfring_ptr->eltsize;
- mz =
- (void *) ((char *) ring_head + sizeof (struct nsfw_shmem_ring_head));
- start_idx += elm_num;
- }
-
- u32 cur_idx = start - start_idx;
- char *cur_elm = NULL;
- int proc_count = 0;
- while (cur_idx + start_idx < end && cur_idx + start_idx < (u32) num)
- {
- if (cur_idx >= elm_num)
- {
- if (NULL == ring_head->next || NULL == ring_head->next->mem_zone
- || 0 == elm_num)
- {
- break;
- }
-
- ring_head =
- (struct nsfw_shmem_ring_head *) ring_head->next->
- mem_zone->addr_64;
- mz_len =
- ring_head->mem_zone->len - sizeof (struct nsfw_shmem_ring_head);
-
- elm_num = mz_len / perfring_ptr->eltsize;
- mz =
- (void *) ((char *) ring_head +
- sizeof (struct nsfw_shmem_ring_head));
- start_idx += elm_num;
-
- cur_idx = 0;
- cur_elm = NULL;
- continue;
- }
-
- if (NULL == cur_elm)
- {
- cur_elm = ((char *) mz + cur_idx * perfring_ptr->eltsize);
- }
- else
- {
- cur_elm += perfring_ptr->eltsize;
- }
-
- cur_idx++;
- proc_count++;
- (void) fun (cur_elm, argv);
- }
-
- return proc_count;
-}
-
-i32
-nsfw_shmem_mbuf_iterator (mpool_handle handle, u32 start, u32 end,
- nsfw_mem_item_fun fun, void *argv)
-{
- return dmm_pktmbuf_pool_iterator ((struct common_mem_mempool *) handle,
- start, end, (dmm_mbuf_item_fun) fun,
- argv);
-}
diff --git a/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_mng.h b/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_mng.h
deleted file mode 100644
index d489525..0000000
--- a/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_mng.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _NSFW_SHMEM_MNG_H
-#define _NSFW_SHMEM_MNG_H
-
-/*
- * mem mgr module init
- * para:point to nstack_fwmem_para
- */
-i32 nsfw_shmem_init (nsfw_mem_para * para);
-
-/*
- * mem mgr module destory
- *
- */
-void nsfw_shmem_destroy (void);
-
-/*
- * create a block memory with name
- * fw_mem_zone::stname name of memory
- * fw_mem_zone::isize memory size
- */
-mzone_handle nsfw_shmem_create (nsfw_mem_zone * pinfo);
-
-/*
- *create some blocks memory
- */
-i32 nsfw_shmem_createv (nsfw_mem_zone * pmeminfo, i32 inum,
- mzone_handle * paddr_array, i32 iarray_num);
-
-/*
- *lookup a memory
- */
-mzone_handle nsfw_shmem_lookup (nsfw_mem_name * pname);
-
-/*release the memory*/
-i32 nsfw_shmem_release (nsfw_mem_name * pname);
-
-/*
- *create mbuf pool
- */
-mpool_handle nsfw_shmem_mbfmpcreate (nsfw_mem_mbfpool * pbufinfo);
-
-/*
- *create some mbuf pool
- */
-i32 nsfw_shmem_mbfmpcreatev (nsfw_mem_mbfpool * pmbfname, i32 inum,
- mpool_handle * phandle_array, i32 iarray_num);
-
-/*
- *alloc a mbuf from mbuf pool
- */
-mbuf_handle nsfw_shmem_mbfalloc (mpool_handle mhandle);
-
-/*
- *release a mbuf pool
- */
-i32 nsfw_shmem_mbffree (mbuf_handle mhandle);
-
-/*
- *put mbuf back to mbuf pool
- */
-i32 nsfw_shmem_mbfmprelease (nsfw_mem_name * pname);
-
-/*look up mbuf mpool*/
-mpool_handle nsfw_shmem_mbfmplookup (nsfw_mem_name * pmbfname);
-
-/*
- *create simple pool
- */
-mring_handle nsfw_shmem_spcreate (nsfw_mem_sppool * pmpinfo);
-
-/*
- *create some simple pools
- */
-i32 nsfw_shmem_spcreatev (nsfw_mem_sppool * pmpinfo, i32 inum,
- mring_handle * pringhandle_array, i32 iarray_num);
-
-/*
- *create a simple pool that members are rings
- */
-i32 nswf_shmem_sp_ringcreate (nsfw_mem_mring * prpoolinfo,
- mring_handle * pringhandle_array, i32 iringnum);
-
-/*
- *release a simple pool
- */
-i32 nsfw_shmem_sprelease (nsfw_mem_name * pname);
-
-/*
- *look up a simple pool
- */
-mring_handle nsfw_shmem_sp_lookup (nsfw_mem_name * pname);
-
-/*
- *create a ring with name
- */
-mring_handle nsfw_shmem_ringcreate (nsfw_mem_mring * pringinfo);
-
-/*
- *look up a ring with name
- */
-mring_handle nsfw_shmem_ring_lookup (nsfw_mem_name * pname);
-
-/*
- *release ring
- */
-i32 nsfw_shmem_ringrelease (nsfw_mem_name * pname);
-
-ssize_t nsfw_shmem_static (void *handle, nsfw_mem_struct_type type);
-
-i32 nsfw_shmem_mbuf_recycle (mpool_handle handle);
-
-i32 nsfw_shmem_sp_iterator (mpool_handle handle, u32 start, u32 end,
- nsfw_mem_item_fun fun, void *argv);
-i32 nsfw_shmem_mbuf_iterator (mpool_handle handle, u32 start, u32 end,
- nsfw_mem_item_fun fun, void *argv);
-
-#endif
diff --git a/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_ring.c b/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_ring.c
deleted file mode 100644
index c42c840..0000000
--- a/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_ring.c
+++ /dev/null
@@ -1,839 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include <string.h>
-#include <common_sys_config.h>
-
-#include "common_mem_pal.h"
-#include "common_mem_pal_memconfig.h"
-#include "nstack_securec.h"
-#include "nsfw_shmem_ring.h"
-#include "nsfw_ring_fun.h"
-#include "common_mem_buf.h"
-#include "common_func.h"
-
-void
-nsfw_shmem_ring_baseaddr_query (uint64_t * rte_lowest_addr,
- uint64_t * rte_highest_addr)
-{
- struct common_mem_mem_config *pMemCfg =
- common_mem_pal_get_configuration ()->mem_config;
- struct common_mem_memseg *PMemSegArry = pMemCfg->memseg;
-
- *rte_lowest_addr = PMemSegArry[0].addr_64;
- *rte_highest_addr = PMemSegArry[0].addr_64 + PMemSegArry[0].len;
-
- int s = 1;
-
- while (s < COMMON_MEM_MAX_MEMSEG && PMemSegArry[s].len > 0)
- {
- if (*rte_lowest_addr > PMemSegArry[s].addr_64)
- {
- *rte_lowest_addr = PMemSegArry[s].addr_64;
- }
-
- if (*rte_highest_addr < PMemSegArry[s].addr_64 + PMemSegArry[s].len)
- {
- *rte_highest_addr = PMemSegArry[s].addr_64 + PMemSegArry[s].len;
- }
-
- s++;
- }
-
-}
-
-static unsigned
-nsfw_shmem_pool_node_alloc (struct nsfw_mem_ring *perfring_ptr,
- unsigned alloc_index, unsigned max_index,
- void *mz, size_t mz_len, unsigned elt_size)
-{
- size_t alloc_size = 0;
- unsigned offset_idx = 0;
- NSTCP_LOGINF ("mz(%p), mz_len = 0x%x", mz, mz_len);
-
- while (alloc_size + elt_size <= mz_len)
- {
- perfring_ptr->ring[alloc_index + offset_idx].data_s.ver =
- alloc_index + offset_idx;
- perfring_ptr->ring[alloc_index + offset_idx].data_s.val =
- ADDR_LTOSH_EXT (mz) - ((uint64_t) perfring_ptr->Addrbase);
- mz = (char *) mz + elt_size;
- alloc_size += elt_size;
- offset_idx++;
-
- if (alloc_index + offset_idx == max_index)
- {
- break;
- }
- }
-
- return offset_idx;
-}
-
-void
-nsfw_shmem_pool_free (struct nsfw_mem_ring *perfring_ptr)
-{
- struct nsfw_shmem_ring_head *ptemp;
-
- if (NULL == perfring_ptr)
- {
- return;
- }
-
- struct nsfw_shmem_ring_head *pnode =
- (struct nsfw_shmem_ring_head *) ((char *) perfring_ptr -
- sizeof (struct nsfw_shmem_ring_head));
-
- while (pnode)
- {
- // phead is involved in phead->mem_zone
- ptemp = pnode->next;
- common_mem_memzone_free (pnode->mem_zone);
- pnode = ptemp;
- }
-}
-
-struct nsfw_mem_ring *
-nsfw_shmem_pool_create (const char *name, unsigned int n,
- unsigned int elt_size, int socket_id,
- unsigned char flag)
-{
- struct nsfw_mem_ring *perfring_ptr = NULL;
- struct common_mem_memzone *mz_mem;
- void *mz = NULL;
-
- /*get pool size, pool size must pow of 2 */
- unsigned int num = common_mem_align32pow2 (n + 1);
-
- struct nsfw_shmem_ring_head *pcur = NULL;
- /*calculate the empty rte_perf_ring Size */
- size_t len =
- sizeof (struct nsfw_shmem_ring_head) + sizeof (struct nsfw_mem_ring) +
- (size_t) num * sizeof (union RingData_U) + (size_t) num * elt_size;
- size_t alloc_len = len;
- unsigned int alloc_num = 0;
- unsigned int alloc_index = 0;
-
- size_t mz_len = 0;
-
- unsigned int mz_index = 1;
- char mz_name[128] = { 0 };
- int retVal;
- /*we'd better use `strlen(src)` or `sizeof(dst)` to explain copying length of src string.
- it's meaningless using `sizeof(dst) - 1` to reserve 1 byte for '\0'.
- if copying length equals to or bigger than dst length, just let STRNCPY_S() returns failure. */
- retVal = STRNCPY_S (mz_name, sizeof (mz_name), name, sizeof (mz_name));
-
- if (EOK != retVal)
- {
- NSTCP_LOGERR ("STRNCPY_S failed]ret=%d", retVal);
- return NULL;
- }
-
- mz_mem = common_memzone_data_lookup_name (name);
- NSTCP_LOGINF ("memzone data look up] n=%u,num=%u,len=%zu", n, num, len);
-
- if (mz_mem)
- {
- perfring_ptr =
- (struct nsfw_mem_ring *) ((char *) mz_mem +
- sizeof (struct nsfw_shmem_ring_head));
- return perfring_ptr;
- }
-
- while (alloc_len > 0)
- {
- if (NULL != perfring_ptr)
- {
- retVal =
- SPRINTF_S (mz_name, sizeof (mz_name), "%s_%03d", name, mz_index);
-
- if (-1 == retVal)
- {
- NSCOMM_LOGERR ("SPRINTF_S failed]ret=%d", retVal);
- nsfw_shmem_pool_free (perfring_ptr);
- return NULL;
- }
- }
-
- mz_mem =
- (struct common_mem_memzone *) common_mem_memzone_reserve (mz_name,
- alloc_len,
- socket_id,
- 0);
-
- if (mz_mem == NULL)
- {
- mz_mem =
- (struct common_mem_memzone *) common_mem_memzone_reserve (mz_name,
- 0,
- socket_id,
- 0);
- }
-
- if (mz_mem == NULL)
- {
- nsfw_shmem_pool_free (perfring_ptr);
- return NULL;
- }
-
- if (NULL == perfring_ptr
- && (mz_mem->len <
- sizeof (struct nsfw_shmem_ring_head) +
- sizeof (struct nsfw_mem_ring) +
- num * sizeof (union RingData_U)))
- {
- common_mem_memzone_free (mz_mem);
- return NULL;
- }
-
- if (NULL == perfring_ptr)
- {
- pcur = (struct nsfw_shmem_ring_head *) ADDR_SHTOL (mz_mem->addr_64);
- pcur->mem_zone = mz_mem;
- pcur->next = NULL;
-
- perfring_ptr =
- (struct nsfw_mem_ring *) ((char *) pcur +
- sizeof (struct nsfw_shmem_ring_head));
-
- mz =
- (void *) ((char *) perfring_ptr + sizeof (struct nsfw_mem_ring) +
- num * sizeof (union RingData_U));
- mz_len =
- mz_mem->len - sizeof (struct nsfw_shmem_ring_head) -
- sizeof (struct nsfw_mem_ring) - num * sizeof (union RingData_U);
-
- uint64_t rte_base_addr;
- uint64_t rte_highest_addr;
- nsfw_shmem_ring_baseaddr_query (&rte_base_addr, &rte_highest_addr);
- nsfw_mem_pool_head_init (perfring_ptr, num, elt_size,
- (void *) rte_base_addr, NSFW_SHMEM,
- (nsfw_mpool_type) flag);
- }
- else
- {
- if (pcur)
- {
- pcur->next =
- (struct nsfw_shmem_ring_head *) ADDR_SHTOL (mz_mem->addr_64);
- pcur = pcur->next;
- pcur->mem_zone = mz_mem;
- pcur->next = NULL;
-
- if (mz_mem->len < sizeof (struct nsfw_shmem_ring_head))
- {
- NSCOMM_LOGERR ("mz_len error %d", mz_mem->len);
- nsfw_shmem_pool_free (perfring_ptr);
- return NULL;
- }
-
- mz =
- (void *) ((char *) pcur +
- sizeof (struct nsfw_shmem_ring_head));
- mz_len = mz_mem->len - sizeof (struct nsfw_shmem_ring_head);
- }
- }
-
- alloc_num =
- nsfw_shmem_pool_node_alloc (perfring_ptr, alloc_index, num, mz,
- mz_len, elt_size);
- alloc_index += alloc_num;
-
- if (alloc_index >= num)
- {
- break;
- }
-
- // second time allocate should not contained all ring head
- alloc_len =
- (size_t) (num - alloc_index) * elt_size +
- sizeof (struct nsfw_shmem_ring_head);
- mz_index++;
- }
-
- return perfring_ptr;
-}
-
-/*ring create*/
-struct nsfw_mem_ring *
-nsfw_shmem_ring_create (const char *name, unsigned int n, int socket_id,
- unsigned char flag)
-{
- struct nsfw_mem_ring *perfring_ptr;
- struct common_mem_memzone *mz;
- uint64_t rte_base_addr;
- uint64_t rte_highest_addr;
-
- unsigned int num = common_mem_align32pow2 (n);
-
- mz =
- (struct common_mem_memzone *) common_mem_memzone_reserve (name,
- sizeof (struct
- nsfw_mem_ring)
- +
- num *
- sizeof (union
- RingData_U),
- socket_id, 0);
-
- if (mz == NULL)
- {
- return NULL;
- }
-
- perfring_ptr = mz->addr;
-
- nsfw_shmem_ring_baseaddr_query (&rte_base_addr, &rte_highest_addr);
- nsfw_mem_ring_init (perfring_ptr, num, (void *) rte_base_addr, NSFW_SHMEM,
- flag);
-
- return perfring_ptr;
-}
-
-/*
-this is a multi thread/process enqueue function, please pay attention to the bellow point
-1. while Enqueue corrupt, we may lose one element; because no one to add the Head
-*/
-int
-nsfw_shmem_ring_mp_enqueue (struct nsfw_mem_ring *ring, void *box)
-{
- union RingData_U expectPostVal;
- union RingData_U curVal;
- unsigned int tmpHead;
- unsigned int tmpTail;
- unsigned int CurHead = ring->prod.head;
- unsigned int mask = ring->mask;
- unsigned int size = ring->size;
- void *prmBox = NULL;
-
- prmBox = (void *) ADDR_LTOSH_EXT (box);
-
- /*do box range check */
- if ((char *) prmBox <= (char *) ring->Addrbase
- || (char *) prmBox > (char *) ring->Addrbase + PERFRING_ADDR_RANGE)
- {
- /*invalid addr of box, can't put in rte_perf_ring, maybe should set a errno here */
- return -1;
- }
-
- do
- {
- /*
- if the ring is Full return directly; this not a exact check, cause we made tail++ after dequeue success.
- the thing we could make sure is ring[ring->Tail&mask] already dequeue
- */
- tmpTail = ring->cons.tail;
-
- if (tmpTail + size - CurHead == 0)
- {
- /*
- here we give enqueue a chance to recorrect the Tail, if tail not has Data let tail++
- */
- if (ring->ring[tmpTail & mask].data_s.val == 0)
- {
- (void) __sync_bool_compare_and_swap (&ring->cons.tail, tmpTail,
- tmpTail + 1);
- }
- else
- {
- return 0;
- }
- }
-
- /*
- the old version of ring->ring[CurHead&mask] must CurHead - size, which enqueue set to this pos lasttime
- & the val must already dequeue. otherwise this pos can't enqueue;
- */
- expectPostVal.data_l =
- (((unsigned long long) (CurHead - size)) << VALUE_LEN);
-
- /*
- the new version of ring->ring[CurHead&mask] must CurHead, which enqueue set to this pos this time.
- */
- curVal.data_l =
- ((((unsigned long long) CurHead) << VALUE_LEN) |
- ((char *) prmBox - (char *) ring->Addrbase));
- if (ring->ring[CurHead & mask].data_s.ver == expectPostVal.data_s.ver
- && __sync_bool_compare_and_swap (&ring->ring[CurHead & mask].data_l,
- expectPostVal.data_l,
- curVal.data_l))
- {
- /*
- enqueue success, add Head Value now
- here we using CAS set instead __sync_fetch_and_add(&ring->Head, 1) to assume that, if one process enqueue success && been killed before
- add Head, other process can recorrect the Head Value;
- one more thing the direction of Tail must been add-direction, so we using the condition (ring->Head - CurHead >0x80000000);
- while many thread do enqueue at same time, Head may not correct,exp:
- thread A get old head 10, thread A want set head to 11
- thread B get old head 10, thread B want set head to 12
- thread A do CAS && thread B do CAS at same time, thread A do CAS success;
- the result of head is 11, but the correct Value should be 12;
-
- then thread C get old head 11, thread C will set head to 13[cause pos 12 already has value, thread C will skill 12],
- the head will be recorrect by thread C.
- if no thread C, thread A& B are the last enqueue thread; the head must recorrect by the deque function.
- */
- tmpHead = ring->prod.head;
-
- if (0 == (CurHead & 0x03) && tmpHead - CurHead > 0x80000000)
- {
- (void) __sync_bool_compare_and_swap (&ring->prod.head, tmpHead,
- CurHead + 1);
- }
-
- break;
- }
-
- /*
- CurHead++ here;
- may be cpu slice is end here; while re-sched CurHead < ring->Tail < ring->Head; to avoid multi try
- we using a cmp & CurHead++ instead CurHead++ directly.
- if using CurHead++ will amplify the probability of ABA problem
- */
- /*CurHead++; */
- tmpHead = ring->prod.head;
- CurHead = CurHead - tmpHead < mask - 1 ? CurHead + 1 : tmpHead;
- }
- while (1);
-
- return 1;
-}
-
-/*
- this is a single thread/process enqueue function
- */
-int
-nsfw_shmem_ring_sp_enqueue (struct nsfw_mem_ring *ring, void *box)
-{
- union RingData_U texpectPostVal;
- union RingData_U curVal;
- unsigned int tmpTail;
- unsigned int CurHead = ring->prod.head;
- unsigned int mask = ring->mask;
- unsigned int uisize = ring->size;
- void *prmBox = NULL;
-
- prmBox = (void *) ADDR_LTOSH_EXT (box);
-
- if ((char *) prmBox <= (char *) ring->Addrbase
- || (char *) prmBox > (char *) ring->Addrbase + PERFRING_ADDR_RANGE)
- {
- return -1;
- }
-
- do
- {
- tmpTail = ring->cons.tail;
- if (tmpTail + uisize - CurHead == 0)
- {
- /*
- *here we give enqueue a chance to recorrect the Tail, if tail not has Data let tail++
- */
- if (ring->ring[tmpTail & mask].data_s.val == 0)
- {
- (void) __sync_bool_compare_and_swap (&ring->cons.tail, tmpTail,
- tmpTail + 1);
- }
- else
- {
- return 0;
- }
- }
- texpectPostVal.data_l =
- (((unsigned long long) (CurHead - uisize)) << VALUE_LEN);
-
- curVal.data_l =
- ((((unsigned long long) CurHead) << VALUE_LEN) |
- ((char *) prmBox - (char *) ring->Addrbase));
-
- if (ring->ring[CurHead & mask].data_l == texpectPostVal.data_l)
- {
- ring->ring[CurHead & mask].data_l = curVal.data_l;
- ring->prod.head = CurHead + 1;
- break;
- }
-
- CurHead++;
- }
- while (1);
- return 1;
-}
-
-/*this is a multi thread/process dequeue function, please pay attention to the bellow point
-*/
-int
-nsfw_shmem_ring_mc_dequeue (struct nsfw_mem_ring *ring, void **box)
-{
- unsigned int CurTail;
- unsigned int tmpTail;
- unsigned int tmpHead;
- unsigned int mask = ring->mask;
- union RingData_U curNullVal;
- union RingData_U ExcpRingVal;
-
- CurTail = ring->cons.tail;
- do
- {
- /*if ring is empty return directly */
- tmpHead = ring->prod.head;
-
- if (CurTail == tmpHead)
- {
- /*
- here we give deque a chance to recorrect the Head, if head has Data let Head++
- */
- if (ring->ring[tmpHead & mask].data_s.val != 0)
- {
- (void) __sync_bool_compare_and_swap (&ring->prod.head, tmpHead,
- tmpHead + 1);
- }
- else
- {
- return 0;
- }
- }
- curNullVal.data_l = (((unsigned long long) CurTail) << VALUE_LEN);
- ExcpRingVal = ring->ring[CurTail & mask];
- /*
- *the version of ring->ring[CurTail&mask] must CurTail&0xFFFFFF
- */
- if ((curNullVal.data_s.ver == ExcpRingVal.data_s.ver)
- && (ExcpRingVal.data_s.val)
- && __sync_bool_compare_and_swap (&ring->ring[CurTail & mask].data_l,
- ExcpRingVal.data_l,
- curNullVal.data_l))
- {
-
- *box =
- ADDR_SHTOL (((char *) ring->Addrbase + ExcpRingVal.data_s.val));
-
- /*
- enqueue success, add Tail Value now
- here we using CAS set instead __sync_fetch_and_add(&ring->Tail, 1) to assume that, if one process dequeue success && been killed before
- add Tail, other process can recorrect the Tail Value;
- one more thing the direction of Tail must been add-direction, so we using the condition (rlTail - CurTail >0x80000000);
- while multi CAS done the result value of CurTail may not correct, but we don't care, it will be recorrect while next deque done.
-
- avg CAS cost 200-300 Cycles, so we using cache loop to instead some CAS;[head&tail not exact guide, so no need Do CAS evertime]
- here we using 0 == (CurTail&0x11) means we only do CAS while head/tail low bit is 0x11; four times do one CAS.
- */
- tmpTail = ring->cons.tail;
-
- if (0 == (CurTail & 0x03) && tmpTail - CurTail > 0x80000000)
- {
- (void) __sync_bool_compare_and_swap (&ring->cons.tail, tmpTail,
- CurTail + 1);
- }
- break;
- }
-
- /*
- CurTail++ here;
- may be cpu slice is end here; while re-sched CurTail < ring->Tail < ring->Head; to avoid multi try
- we using a cmp & CurTail++ instead CurTail++ directly.
- if using CurTail++ will amplify the probability of ABA problem
- */
- /*CurTail++; */
- tmpTail = ring->cons.tail;
- CurTail = CurTail - tmpTail < mask - 1 ? CurTail + 1 : tmpTail;
- }
- while (1);
-
- return 1;
-}
-
-/*
- this is enhanced mc_ring_dequeue, support dequeue multi element one time.
-*/
-int
-nsfw_shmem_ring_mc_dequeuev (struct nsfw_mem_ring *ring, void **box,
- unsigned int n)
-{
- unsigned int uiCurTail;
- unsigned int tmpTail;
- unsigned int tmpHead;
- unsigned int uimask = ring->mask;
- union RingData_U curNullVal;
- union RingData_U ExcpRingVal;
- unsigned int deqNum = 0;
- uiCurTail = ring->cons.tail;
- do
- {
- /*if ring is empty return directly */
- tmpHead = ring->prod.head;
- if (uiCurTail == tmpHead)
- {
- /*
- here we give deque a chance to recorrect the Head, if head has Data let Head++;
- here must done to avoid some msg can't deque.
- */
- if (deqNum == 0 && ring->ring[tmpHead & uimask].data_s.val != 0)
- {
- (void) __sync_bool_compare_and_swap (&ring->prod.head, tmpHead,
- tmpHead + 1);
- }
- else
- {
- return deqNum;
- }
- }
-
- curNullVal.data_l = (((unsigned long long) uiCurTail) << VALUE_LEN);
- ExcpRingVal = ring->ring[uiCurTail & uimask];
-
- /*
- *the version of ring->ring[CurTail&mask] must CurTail&0xFFFFFF
- */
- if ((curNullVal.data_s.ver == ExcpRingVal.data_s.ver)
- && (ExcpRingVal.data_s.val)
- && __sync_bool_compare_and_swap (&ring->
- ring[uiCurTail & uimask].data_l,
- ExcpRingVal.data_l,
- curNullVal.data_l))
- {
-
- box[deqNum] =
- ADDR_SHTOL (((char *) ring->Addrbase + ExcpRingVal.data_s.val));
-
- /*
- enqueue success, add Tail Value now
- here we using CAS set instead __sync_fetch_and_add(&ring->Tail, 1) to assume that, if one process dequeue success && been killed before
- add Tail, other process can recorrect the Tail Value;
- one more thing the direction of Tail must been add-direction, so we using the condition (rlTail - CurTail >0x80000000);
-
- avg CAS cost 200-300 Cycles, so we using cache loop to instead some CAS;[head&tail not exact guide, so no need Do CAS evertime]
- here we using 0 == (CurTail&0x11) means we only do CAS while head/tail low bit is 0x11; four times do one CAS.
- */
- tmpTail = ring->cons.tail;
-
- if (0 == (uiCurTail & 0x03) && tmpTail - uiCurTail > 0x80000000)
- {
- (void) __sync_bool_compare_and_swap (&ring->cons.tail, tmpTail,
- uiCurTail + 1);
- }
-
- deqNum++;
- }
-
- /*
- CurTail++ here;
- may be cpu slice is end here; while re-sched CurTail < ring->Tail < ring->Head; to avoid multi try
- we using a cmp & CurTail++ instead CurTail++ directly.
- if using CurTail++ will amplify the probability of ABA problem
- */
- /*CurTail++; */
- tmpTail = ring->cons.tail;
- uiCurTail = uiCurTail - tmpTail < uimask - 1 ? uiCurTail + 1 : tmpTail;
-
- }
- while (n > deqNum);
-
- return deqNum;
-}
-
-/*
- this is enhanced mc_ring_dequeue, support dequeue multi element one time.
-*/
-int
-nsfw_shmem_ring_sc_dequeue (struct nsfw_mem_ring *ring, void **box)
-{
- unsigned int CurTail;
- unsigned int mask = ring->mask;
- union RingData_U curNullVal;
- union RingData_U ExcpRingVal;
- unsigned int uitmpHead;
-
- CurTail = ring->cons.tail;
-
- do
- {
- /*if ring is empty return directly */
- uitmpHead = ring->prod.head;
- if (CurTail == uitmpHead)
- {
- /*
- here we give deque a chance to recorrect the Head, if head has Data let Head++
- */
- if (ring->ring[uitmpHead & mask].data_s.val != 0)
- {
- (void) __sync_bool_compare_and_swap (&ring->prod.head,
- uitmpHead, uitmpHead + 1);
- }
- else
- {
- return 0;
- }
- }
- curNullVal.data_l = (((unsigned long long) CurTail) << VALUE_LEN);
- ExcpRingVal = ring->ring[CurTail & mask];
-
- if ((curNullVal.data_s.ver == ExcpRingVal.data_s.ver)
- && (ExcpRingVal.data_s.val))
- {
- ring->ring[CurTail & mask].data_l = curNullVal.data_l;
-
- *box =
- ADDR_SHTOL (((char *) ring->Addrbase + ExcpRingVal.data_s.val));
-
- ring->cons.tail = CurTail + 1;
- break;
- }
-
- CurTail++;
- }
- while (1);
-
- return 1;
-}
-
-/*
- this is a single thread/process dequeue function
-*/
-int
-nsfw_shmem_ring_sc_dequeuev (struct nsfw_mem_ring *ring, void **box,
- unsigned int n)
-{
- unsigned int CurTail;
- unsigned int tmpHead;
- unsigned int mask = ring->mask;
- union RingData_U curNullVal;
- union RingData_U ExcpRingVal;
- unsigned int usdeqNum = 0;
-
- CurTail = ring->cons.tail;
-
- do
- {
- /*if ring is empty return directly */
- tmpHead = ring->prod.head;
- if (CurTail == tmpHead)
- {
- /*
- here we give deque a chance to recorrect the Head, if head has Data let Head++;
- here must done to avoid some msg can't deque.
- */
- if (usdeqNum == 0 && ring->ring[tmpHead & mask].data_s.val != 0)
- {
- (void) __sync_bool_compare_and_swap (&ring->prod.head, tmpHead,
- tmpHead + 1);
- }
- else
- {
- return usdeqNum;
- }
- }
- curNullVal.data_l = (((unsigned long long) CurTail) << VALUE_LEN);
- ExcpRingVal = ring->ring[CurTail & mask];
-
- /*
- the version of ring->ring[CurTail&mask] must CurTail&0xFFFFFF
- */
- if ((curNullVal.data_s.ver == ExcpRingVal.data_s.ver)
- && (ExcpRingVal.data_s.val))
- {
- ring->ring[CurTail & mask].data_l = curNullVal.data_l;
-
- box[usdeqNum] =
- ADDR_SHTOL (((char *) ring->Addrbase + ExcpRingVal.data_s.val));
-
- ring->cons.tail = CurTail + 1;
- usdeqNum++;
- }
-
- CurTail++;
- }
- while (n > usdeqNum);
-
- return usdeqNum;
-}
-
-/* nstack just using one thread, for performance using que not support multi thread*/
-int
-nsfw_shmem_ring_singlethread_enqueue (struct nsfw_mem_ring *ring, void *box)
-{
- u32 head = 0;
- void *prmBox = NULL;
-
- /*if queue is full, just return 0 */
- if (ring->prod.head >= (ring->size + ring->cons.tail))
- {
- return 0;
- }
-
- prmBox = (void *) ADDR_LTOSH_EXT (box);
-
- head = ring->prod.head;
- ring->prod.head = head + 1;
- ring->ring[head & ring->mask].data_s.ver = head;
- ring->ring[head & ring->mask].data_s.val =
- (char *) prmBox - (char *) ring->Addrbase;
- return 1;
-}
-
-/* nstack just using one thread, for performance using que not support multi thread*/
-int
-nsfw_shmem_ring_singlethread_dequeue (struct nsfw_mem_ring *ring, void **box)
-{
- u32 tail = 0;
-
- /* if all entries are dequeued return 0 */
- if (unlikely (ring->prod.head == ring->cons.tail))
- {
- return 0;
- }
-
- tail = ring->cons.tail;
- *box =
- ADDR_SHTOL ((char *) ring->Addrbase +
- ring->ring[tail & ring->mask].data_s.val);
- ring->ring[tail & ring->mask].data_s.val = 0;
- ring->ring[tail & ring->mask].data_s.ver = tail;
- ring->cons.tail++;
- return 1;
-}
-
-/* nstack just using one thread, for performance using que not support multi thread*/
-int
-nsfw_shmem_ring_singlethread_dequeuev (struct nsfw_mem_ring *ring, void **box,
- unsigned int n)
-{
- u32 tail = 0;
- u32 num = 0;
-
- while (num < n)
- {
- tail = ring->cons.tail;
-
- /* if all entries are dequeued return 0 */
- if (unlikely (ring->prod.head == ring->cons.tail))
- {
- return num;
- }
-
- ring->cons.tail = tail + 1;
-
- box[num] =
- ADDR_SHTOL ((char *) ring->Addrbase +
- ring->ring[tail & ring->mask].data_s.val);
-
- ring->ring[tail & ring->mask].data_s.val = 0;
- ring->ring[tail & ring->mask].data_s.ver = tail;
- num++;
- }
-
- return num;
-}
diff --git a/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_ring.h b/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_ring.h
deleted file mode 100644
index 15cd1dd..0000000
--- a/src/framework/common/mem_mgr/nsfw_shmem/nsfw_shmem_ring.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#ifndef _NSFW_SHMEM_RING_H_
-#define _NSFW_SHMEM_RING_H_
-
-#include <stdint.h>
-
-#include "common_func.h"
-
-struct nsfw_shmem_ring_head
-{
- struct common_mem_memzone *mem_zone;
- struct nsfw_shmem_ring_head *next;
- unsigned int uireserv[4];
-};
-
-void nsfw_shmem_ring_baseaddr_query (uint64_t * rte_lowest_addr,
- uint64_t * rte_highest_addr);
-struct nsfw_mem_ring *nsfw_shmem_pool_create (const char *name,
- unsigned int n,
- unsigned int elt_size,
- int socket_id,
- unsigned char flag);
-struct nsfw_mem_ring *nsfw_shmem_ring_create (const char *name,
- unsigned int n, int socket_id,
- unsigned char flag);
-
-void nsfw_shmem_pool_free (struct nsfw_mem_ring *perfring_ptr);
-
-void nsfw_shmem_ring_reset (struct nsfw_mem_ring *ring, unsigned char flag);
-int nsfw_shmem_ring_mp_enqueue (struct nsfw_mem_ring *ring, void *box);
-int nsfw_shmem_ring_sp_enqueue (struct nsfw_mem_ring *ring, void *box);
-int nsfw_shmem_ring_mc_dequeue (struct nsfw_mem_ring *ring, void **box);
-int nsfw_shmem_ring_mc_dequeuev (struct nsfw_mem_ring *ring, void **box,
- unsigned int n);
-int nsfw_shmem_ring_sc_dequeue (struct nsfw_mem_ring *ring, void **box);
-int nsfw_shmem_ring_sc_dequeuev (struct nsfw_mem_ring *ring, void **box,
- unsigned int n);
-int nsfw_shmem_ring_singlethread_enqueue (struct nsfw_mem_ring *ring,
- void *box);
-int nsfw_shmem_ring_singlethread_dequeue (struct nsfw_mem_ring *ring,
- void **box);
-int nsfw_shmem_ring_singlethread_dequeuev (struct nsfw_mem_ring *ring,
- void **box, unsigned int n);
-
-#endif /*_NSFW_SHMEM_RING_H_*/
diff --git a/src/framework/common/pid_common.c b/src/framework/common/pid_common.c
new file mode 100644
index 0000000..16f5c5e
--- /dev/null
+++ b/src/framework/common/pid_common.c
@@ -0,0 +1,167 @@
+/*
+*
+* 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.
+*/
+
+#include <string.h>
+#include <time.h>
+#include <errno.h>
+#include "nstack_log.h"
+#include "nstack_securec.h"
+#include "pid_common.h"
+
+volatile pid_t g_sys_host_pid = SYS_HOST_INITIAL_PID;
+
+/*****************************************************************************
+* Prototype : get_hostpid_from_file
+* Description : get host pid by sub namespace pid in docker
+* Input : uint32_t pid
+* Output : None
+* Return Value : uint32_t
+* Calls :
+* Called By :
+*****************************************************************************/
+pid_t sys_get_hostpid_from_file(pid_t pid)
+{
+ g_sys_host_pid = get_hostpid_from_file(pid);
+ NSRTP_LOGDBG("ok]cur pid=%d, input pid=%d", g_sys_host_pid, pid);
+ return g_sys_host_pid;
+}
+
+pid_t get_hostpid_from_file(u32_t pid)
+{
+ pid_t ret_pid = SYS_HOST_INITIAL_PID;
+ int i = 0;
+ ret_pid = get_hostpid_from_file_one_time(pid);
+ while (0 == ret_pid || ret_pid == SYS_HOST_INITIAL_PID)
+ {
+ i++;
+ if (i > MAX_GET_PID_TIME)
+ {
+ NSFW_LOGERR("get pid failed]pid=%u,hostpid=%d", pid, ret_pid);
+ break;
+ }
+ sys_sleep_ns(0, 5000000);
+ ret_pid = get_hostpid_from_file_one_time(pid);
+ }
+
+ return ret_pid;
+}
+
+pid_t get_hostpid_from_file_one_time(u32_t pid)
+{
+ int retVal;
+ char path[READ_FILE_BUFLEN] = { 0 };
+ char buf[READ_FILE_BUFLEN] = { 0 };
+ char fmt[READ_FILE_BUFLEN] = { 0 };
+ char out[READ_FILE_BUFLEN] = { 0 };
+ char task_name[BUF_SIZE_FILEPATH] = { 0 };
+ pid_t hostpid = SYS_HOST_INITIAL_PID; //init to an invalid value
+ /*There are some unsafe function ,need to be replace with safe function */
+ get_exec_name_by_pid(pid, task_name, BUF_SIZE_FILEPATH);
+
+ /* adjust the position of HAVE_STACKTRACE and modify to snprintf_s */
+ if (0 == task_name[0])
+ {
+ NSRTP_LOGERR("get task_name failed");
+ return hostpid;
+ }
+
+ /*There are some unsafe function ,need to be replace with safe function */
+ retVal = sprintf_s(fmt, sizeof(fmt), "%s%s", task_name, " (%s");
+ if (-1 == retVal)
+ {
+ NSRTP_LOGERR("sprintf_s failed]ret=%d", retVal);
+ return hostpid;
+ }
+ retVal = sprintf_s(path, sizeof(path), "/proc/%u/sched", pid);
+ if (-1 == retVal)
+ {
+ NSRTP_LOGERR("sprintf_s failed]ret=%d", retVal);
+ return hostpid;
+ }
+ FILE *fp = fopen(path, "r");
+ if (NULL != fp)
+ {
+ if (fgets(buf, READ_FILE_BUFLEN - 1, fp) == NULL)
+ {
+ fclose(fp);
+ return hostpid;
+ }
+ fclose(fp);
+ /* Compiler needs "fmt" to be like "%s%s" to
+ understand. But we have "fmt" already prepared and used here. It can
+ be suppressed, not an issue
+ */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
+ /*There are some unsafe function ,need to be replace with safe function */
+ retVal = sscanf_s(buf, fmt, out, READ_FILE_BUFLEN);
+#pragma GCC diagnostic pop
+ if (-1 == retVal)
+ {
+ NSPOL_LOGERR("sscanf_s failed]ret=%d", retVal);
+ return hostpid;
+ }
+ /*There are some unsafe function ,need to be replace with safe function */
+ }
+
+ hostpid = (pid_t) strtol(out, NULL, 0);
+ if (hostpid == 0)
+ {
+ hostpid = 1;
+ }
+
+ return hostpid;
+}
+
+void get_exec_name_by_pid(pid_t pid, char *task_name, int task_name_len)
+{
+ int retVal;
+ char path[READ_FILE_BUFLEN] = { 0 };
+ char buf[READ_FILE_BUFLEN] = { 0 };
+ /* There are some unsafe function ,need to be replace with safe function */
+ retVal = sprintf_s(path, sizeof(path), "/proc/%d/status", pid);
+ if (-1 == retVal)
+ {
+ NSRTP_LOGERR("sprintf_s failed]ret=%d", retVal);
+ return;
+ }
+ FILE *fp = fopen(path, "r");
+ if (NULL != fp)
+ {
+ if (fgets(buf, READ_FILE_BUFLEN - 1, fp) == NULL)
+ {
+ fclose(fp);
+ return;
+ }
+ fclose(fp);
+ /*There are some unsafe function ,need to be replace with safe function */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-extra-args"
+ retVal = sscanf_s(buf, "%*s %s", task_name, task_name_len);
+#pragma GCC diagnostic pop
+ if (1 != retVal)
+ {
+ NSSOC_LOGERR("sscanf_s failed]ret=%d", retVal);
+ return;
+ }
+ }
+}
+
+pid_t updata_sys_pid()
+{
+ g_sys_host_pid = SYS_HOST_INITIAL_PID;
+ return get_sys_pid();
+}