aboutsummaryrefslogtreecommitdiffstats
path: root/src/framework/ipc
diff options
context:
space:
mode:
authornanger <zhenyinan@huawei.com>2018-09-29 16:41:15 +0800
committernanger <zhenyinan@huawei.com>2018-09-29 16:45:14 +0800
commit74c9aed15303d388d7d0429128bc3af96f7eb45c (patch)
treeb4659364e410ef5b0f36b61bbf98c48e5763d8e5 /src/framework/ipc
parent31ea86798426cf236d70c9de1944c723a6cb1d95 (diff)
Refactor: change to dmm share memory
Change-Id: Iff87eb5c6610c1db9247a898dd4c8ffbe6eeabdf Signed-off-by: nanger <zhenyinan@huawei.com>
Diffstat (limited to 'src/framework/ipc')
-rw-r--r--src/framework/ipc/mgr_com/mgr_com.c65
-rw-r--r--src/framework/ipc/mgr_com/mgr_com.h24
-rw-r--r--src/framework/ipc/ps/nsfw_fd_timer.c38
-rw-r--r--src/framework/ipc/ps/nsfw_ps_mem_module.c924
-rw-r--r--src/framework/ipc/ps/nsfw_ps_mem_module.h87
-rw-r--r--src/framework/ipc/ps/nsfw_ps_module.c50
-rw-r--r--src/framework/ipc/ps/nsfw_ps_module.h6
-rw-r--r--src/framework/ipc/ps/nsfw_recycle_module.c93
-rw-r--r--src/framework/ipc/ps/nsfw_recycle_module.h6
-rw-r--r--src/framework/ipc/ps/nsfw_soft_param.c4
10 files changed, 93 insertions, 1204 deletions
diff --git a/src/framework/ipc/mgr_com/mgr_com.c b/src/framework/ipc/mgr_com/mgr_com.c
index 2fb9789..0541ba8 100644
--- a/src/framework/ipc/mgr_com/mgr_com.c
+++ b/src/framework/ipc/mgr_com/mgr_com.c
@@ -17,28 +17,27 @@
/*==============================================*
* include header files *
*----------------------------------------------*/
+#include <errno.h>
+#include <sys/un.h>
+#include <stddef.h>
+#include <sys/epoll.h>
+#include <fcntl.h>
+#include <sys/stat.h>
#include "types.h"
#include "nstack_securec.h"
#include "nsfw_init.h"
-#include "common_mem_api.h"
-
#include "nsfw_mgr_com_api.h"
#include "mgr_com.h"
#include "nstack_log.h"
#include "nsfw_base_linux_api.h"
-
-#include <sys/un.h>
-#include <stddef.h>
-#include <sys/epoll.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
#include "nsfw_maintain_api.h"
#include "nsfw_ps_api.h"
#include "nsfw_fd_timer_api.h"
-#include "common_func.h"
+#include "dmm_atomic.h"
+#include "dmm_sys.h"
+#include "dmm_memory.h"
#ifdef __cplusplus
/* *INDENT-OFF* */
@@ -168,8 +167,7 @@ nsfw_mgr_msg_alloc (u16 msg_type, u8 dst_proc_type)
if (FALSE == from_mem_flag)
{
- if (0 ==
- nsfw_mem_ring_dequeue (g_mgr_com_cfg.msg_pool, (void *) &p_msg))
+ if (1 != dmm_dequeue (g_mgr_com_cfg.msg_pool, (void **) &p_msg))
{
NSFW_LOGERR ("alloc msg full]type=%u,dst=%u", msg_type,
dst_proc_type);
@@ -200,7 +198,8 @@ nsfw_mgr_msg_alloc (u16 msg_type, u8 dst_proc_type)
if (msg_type < MGR_MSG_RSP_BASE && msg_type > 0)
{
- p_msg->seq = common_mem_atomic32_add_return (&g_mgr_com_cfg.cur_idx, 1);
+ p_msg->seq =
+ dmm_atomic_add_return ((dmm_atomic_t *) & g_mgr_com_cfg.cur_idx, 1);
}
p_msg->from_mem = from_mem_flag;
@@ -298,7 +297,7 @@ nsfw_mgr_msg_free (nsfw_mgr_msg * msg)
NSFW_LOGERR ("msg err free]type=%u", msg->msg_type);
}
- if (0 == nsfw_mem_ring_enqueue (g_mgr_com_cfg.msg_pool, msg))
+ if (1 != dmm_enqueue (g_mgr_com_cfg.msg_pool, msg))
{
NSFW_LOGERR ("msg free failed pool full]msg=%p, type=%u", msg,
msg->msg_type);
@@ -693,7 +692,7 @@ nsfw_mgr_clr_fd_lock ()
}
for (i = 0; i < (i32) NSFW_MGR_FD_MAX; i++)
{
- common_mem_spinlock_init (&(g_mgr_socket_map.sock[i].opr_lock));
+ dmm_spin_init (&(g_mgr_socket_map.sock[i].opr_lock));
}
return TRUE;
}
@@ -1953,32 +1952,8 @@ nsfw_mgr_com_module_init (void *param)
mgr_cfg->proc_type = proc_type;
- nsfw_mem_sppool pmpinfo;
- if (EOK != MEMSET_S (&pmpinfo, sizeof (pmpinfo), 0, sizeof (pmpinfo)))
- {
- NSFW_LOGERR ("Error to memset!!!");
- nsfw_mgr_comm_fd_destroy ();
- lint_unlock_1 ();
- return -1;
- }
-
- pmpinfo.enmptype = NSFW_MRING_MPMC;
- pmpinfo.usnum = mgr_cfg->msg_size;
- pmpinfo.useltsize = sizeof (nsfw_mgr_msg);
- pmpinfo.isocket_id = NSFW_SOCKET_ANY;
- pmpinfo.stname.entype = NSFW_NSHMEM;
- if (-1 ==
- SPRINTF_S (pmpinfo.stname.aname, sizeof (pmpinfo.stname.aname), "%s",
- "MS_MGR_MSGPOOL"))
- {
- NSFW_LOGERR ("Error to SPRINTF_S!!!");
- nsfw_mgr_comm_fd_destroy ();
- lint_unlock_1 ();
- return -1;
- }
-
- mgr_cfg->msg_pool = nsfw_mem_sp_create (&pmpinfo);
-
+ mgr_cfg->msg_pool = dmm_malloc_pool (sizeof (nsfw_mgr_msg),
+ mgr_cfg->msg_size, DMM_RING_INIT_MPMC);
if (!mgr_cfg->msg_pool)
{
NSFW_LOGERR ("module mgr init msg_pool alloc failed!");
@@ -1987,8 +1962,8 @@ nsfw_mgr_com_module_init (void *param)
return -1;
}
- (void) MEM_STAT (NSFW_MGR_COM_MODULE, pmpinfo.stname.aname, NSFW_NSHMEM,
- nsfw_mem_get_len (mgr_cfg->msg_pool, NSFW_MEM_SPOOL));
+// (void) MEM_STAT (NSFW_MGR_COM_MODULE, pmpinfo.stname.aname, NSFW_NSHMEM,
+// nsfw_mem_get_len (mgr_cfg->msg_pool, NSFW_MEM_SPOOL));
if ((NSFW_PROC_TOOLS == proc_type)
|| (NSFW_PROC_CTRL == proc_type) || (NSFW_PROC_MAIN == proc_type))
@@ -2048,8 +2023,8 @@ nsfw_mgr_run_script (const char *cmd, char *result, int result_buf_len)
/* *INDENT-OFF* */
NSFW_MODULE_NAME(NSFW_MGR_COM_MODULE)
-NSFW_MODULE_PRIORITY(10)
-NSFW_MODULE_DEPENDS(NSFW_MEM_MGR_MODULE)
+NSFW_MODULE_PRIORITY(20)
+NSFW_MODULE_DEPENDS(DMM_MEMORY_MODULE)
NSFW_MODULE_INIT(nsfw_mgr_com_module_init)
/* *INDENT-ON* */
diff --git a/src/framework/ipc/mgr_com/mgr_com.h b/src/framework/ipc/mgr_com/mgr_com.h
index 03f58c8..dbcce63 100644
--- a/src/framework/ipc/mgr_com/mgr_com.h
+++ b/src/framework/ipc/mgr_com/mgr_com.h
@@ -26,11 +26,13 @@
#ifndef _NSFW_MGRCOM_MODULE_H
#define _NSFW_MGRCOM_MODULE_H
-#include "pthread.h"
-#include "nsfw_mem_api.h"
-#include "common_mem_api.h"
-#include "common_mem_memzone.h"
-#include "common_func.h"
+#include <pthread.h>
+
+#include "types.h"
+#include "nsfw_mgr_com_api.h"
+
+#include "dmm_ring.h"
+#include "dmm_spinlock.h"
#ifdef __cplusplus
/* *INDENT-OFF* */
@@ -44,7 +46,7 @@ extern "C"{
#define MAX_RECV_BUF_DEF 0x34000*2
-#define MGR_COM_MSG_COUNT_DEF 1023 /*g_mgr_com_cfg */
+#define MGR_COM_MSG_COUNT_DEF 1024 /*g_mgr_com_cfg */
#define MGR_COM_RECV_TIMEOUT_DEF 5
#define MGR_COM_MAX_DROP_MSG_DEF 1024
@@ -64,9 +66,9 @@ typedef struct _nsfw_mgr_init_cfg
u8 max_recv_timeout;
u16 max_recv_drop_msg;
u32 msg_size;
- common_mem_atomic32_t cur_idx;
+ int cur_idx;
u64 u64reserve;
- mring_handle msg_pool;
+ struct dmm_ring *msg_pool;
char domain_path[NSFW_MGRCOM_PATH_LEN];
} nsfw_mgr_init_cfg;
@@ -85,7 +87,7 @@ typedef struct _nsfw_mgr_sock_info
{
u8 proc_type; /*_ns_poc_type*/
u32 host_pid;
- common_mem_spinlock_t opr_lock;
+ dmm_spinlock_t opr_lock;
} nsfw_mgr_sock_info;
typedef struct _nsfw_mgr_sock_map
@@ -123,14 +125,14 @@ u8 nsfw_mgr_stop ();
#define LOCK_MGR_FD(_fd){\
if ((i32)NSFW_MGR_FD_MAX > _fd)\
{\
- common_mem_spinlock_lock(&g_mgr_socket_map.sock[_fd].opr_lock);\
+ dmm_spin_lock(&g_mgr_socket_map.sock[_fd].opr_lock);\
}\
}
#define UNLOCK_MGR_FD(_fd){\
if ((i32)NSFW_MGR_FD_MAX > _fd)\
{\
- common_mem_spinlock_unlock(&g_mgr_socket_map.sock[_fd].opr_lock);\
+ dmm_spin_unlock(&g_mgr_socket_map.sock[_fd].opr_lock);\
}\
}
diff --git a/src/framework/ipc/ps/nsfw_fd_timer.c b/src/framework/ipc/ps/nsfw_fd_timer.c
index cea2486..643348a 100644
--- a/src/framework/ipc/ps/nsfw_fd_timer.c
+++ b/src/framework/ipc/ps/nsfw_fd_timer.c
@@ -22,17 +22,16 @@
#include "types.h"
#include "list.h"
-#include "common_mem_common.h"
-
#include "nstack_securec.h"
#include "nsfw_init.h"
#include "nsfw_mgr_com_api.h"
-#include "nsfw_mem_api.h"
#include "nstack_log.h"
#include "nsfw_base_linux_api.h"
#include "nsfw_fd_timer_api.h"
#include "nsfw_maintain_api.h"
+#include "dmm_memory.h"
+
#ifdef __cplusplus
/* *INDENT-OFF* */
extern "C"{
@@ -40,7 +39,7 @@ extern "C"{
#endif /* __cplusplus */
#define NSFW_TIMER_CYCLE 1
-#define NSFW_TIMER_INFO_MAX_COUNT_DEF 8191
+#define NSFW_TIMER_INFO_MAX_COUNT_DEF 8192
#define NSFW_TIMER_INFO_MAX_COUNT (g_timer_cfg.timer_info_size)
/* *INDENT-OFF* */
nsfw_timer_init_cfg g_timer_cfg;
@@ -66,8 +65,7 @@ nsfw_timer_reg_timer (u32 timer_type, void *data,
nsfw_timer_proc_fun fun, struct timespec time_left)
{
nsfw_timer_info *tm_info = NULL;
- if (0 ==
- nsfw_mem_ring_dequeue (g_timer_cfg.timer_info_pool, (void *) &tm_info))
+ if (1 != dmm_dequeue (g_timer_cfg.timer_info_pool, (void **) &tm_info))
{
NSFW_LOGERR ("dequeue error]data=%p,fun=%p", data, fun);
return NULL;
@@ -75,7 +73,7 @@ nsfw_timer_reg_timer (u32 timer_type, void *data,
if (EOK != MEMSET_S (tm_info, sizeof (*tm_info), 0, sizeof (*tm_info)))
{
- if (0 == nsfw_mem_ring_enqueue (g_timer_cfg.timer_info_pool, tm_info))
+ if (1 != dmm_enqueue (g_timer_cfg.timer_info_pool, tm_info))
{
NSFW_LOGERR ("enqueue error]data=%p,fun=%p", data, fun);
}
@@ -121,7 +119,7 @@ nsfw_timer_rmv_timer (nsfw_timer_info * tm_info)
tm_info->alloc_flag = FALSE;
list_del (&tm_info->node);
- if (0 == nsfw_mem_ring_enqueue (g_timer_cfg.timer_info_pool, tm_info))
+ if (1 != dmm_enqueue (g_timer_cfg.timer_info_pool, tm_info))
{
NSFW_LOGERR ("tm_info free failed]tm_info=%p,argv=%p,fun=%p", tm_info,
tm_info->argv, tm_info->fun);
@@ -334,29 +332,17 @@ nsfw_timer_module_init (void *param)
timer_cfg->timer_info_size = NSFW_TIMER_INFO_MAX_COUNT_DEF;
- nsfw_mem_sppool pmpinfo;
- pmpinfo.enmptype = NSFW_MRING_MPMC;
- pmpinfo.usnum = timer_cfg->timer_info_size;
- pmpinfo.useltsize = sizeof (nsfw_timer_info);
- pmpinfo.isocket_id = NSFW_SOCKET_ANY;
- pmpinfo.stname.entype = NSFW_NSHMEM;
- if (-1 ==
- SPRINTF_S (pmpinfo.stname.aname, NSFW_MEM_NAME_LENGTH, "%s",
- "MS_TM_INFOPOOL"))
- {
- NSFW_LOGERR ("SPRINTF_S failed");
- return -1;
- }
- timer_cfg->timer_info_pool = nsfw_mem_sp_create (&pmpinfo);
-
+ timer_cfg->timer_info_pool = dmm_malloc_pool (sizeof (nsfw_timer_info),
+ timer_cfg->timer_info_size,
+ DMM_RING_INIT_MPMC);
if (!timer_cfg->timer_info_pool)
{
NSFW_LOGERR ("alloc timer info pool_err");
return -1;
}
- MEM_STAT (NSFW_TIMER_MODULE, pmpinfo.stname.aname, NSFW_NSHMEM,
- nsfw_mem_get_len (timer_cfg->timer_info_pool, NSFW_MEM_SPOOL));
+// MEM_STAT (NSFW_TIMER_MODULE, pmpinfo.stname.aname, NSFW_NSHMEM,
+// nsfw_mem_get_len (timer_cfg->timer_info_pool, NSFW_MEM_SPOOL));
INIT_LIST_HEAD (&(timer_cfg->timer_head));
INIT_LIST_HEAD (&(timer_cfg->exp_timer_head));
@@ -367,7 +353,7 @@ nsfw_timer_module_init (void *param)
/* *INDENT-OFF* */
NSFW_MODULE_NAME (NSFW_TIMER_MODULE)
-NSFW_MODULE_PRIORITY (10)
+NSFW_MODULE_PRIORITY (30)
NSFW_MODULE_DEPENDS (NSFW_MGR_COM_MODULE)
NSFW_MODULE_INIT (nsfw_timer_module_init)
/* *INDENT-ON* */
diff --git a/src/framework/ipc/ps/nsfw_ps_mem_module.c b/src/framework/ipc/ps/nsfw_ps_mem_module.c
deleted file mode 100644
index 55af158..0000000
--- a/src/framework/ipc/ps/nsfw_ps_mem_module.c
+++ /dev/null
@@ -1,924 +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 "nsfw_ps_module.h"
-#include "nsfw_mgr_com_api.h"
-#include "nsfw_ps_mem_api.h"
-#include "nsfw_ps_mem_module.h"
-#include "nsfw_ps_api.h"
-#include "nsfw_maintain_api.h"
-#include "nsfw_fd_timer_api.h"
-
-#include "nstack_log.h"
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C"{
-/* *INDENT-ON* */
-#endif /* __cplusplus */
-
-ns_mem_mng_init_cfg g_mem_cfg;
-
-int mem_ps_exiting (void *pps_info, void *argv);
-
-int
-nsfw_mem_ps_exit_resend_timeout (u32 timer_type, void *data)
-{
- nsfw_ps_info *ps_info = data;
- if (NULL == ps_info)
- {
- NSFW_LOGERR ("ps_info nul!");
- return FALSE;
- }
-
- if (NSFW_PROC_APP != ps_info->proc_type)
- {
- return FALSE;
- }
-
- if (NSFW_PS_EXITING != ps_info->state)
- {
- return FALSE;
- }
-
- ps_info->resend_timer_ptr = NULL;
- (void) mem_ps_exiting (ps_info, NULL);
- return TRUE;
-}
-
-/*****************************************************************************
-* Prototype : mem_ps_exiting
-* Description : send exiting message when ps_info exiting
-* Input : void *pps_info
-* void* argv
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*****************************************************************************/
-int
-mem_ps_exiting (void *pps_info, void *argv)
-{
- if (NULL == pps_info)
- {
- NSFW_LOGERR ("ps_info nul!");
- return FALSE;
- }
-
- if (TRUE == NSFW_SRV_STATE_SUSPEND)
- {
- NSFW_LOGERR ("main suspend]ps_info=%d,pid=%u", pps_info,
- ((nsfw_ps_info *) pps_info)->host_pid);
- return FALSE;
- }
-
- nsfw_mgr_msg *msg =
- nsfw_mgr_msg_alloc (MGR_MSG_APP_EXIT_REQ, NSFW_PROC_MAIN);
- if (NULL == msg)
- {
- NSFW_LOGERR ("ps_exit alloc msg failed]ps_info=%p,pid=%u", pps_info,
- ((nsfw_ps_info *) pps_info)->host_pid);
- return FALSE;
- }
-
- nsfw_ps_info_msg *ps_msg = GET_USER_MSG (nsfw_ps_info_msg, msg);
- ps_msg->host_pid = ((nsfw_ps_info *) pps_info)->host_pid;
-
- (void) nsfw_mgr_send_msg (msg);
- NSFW_LOGINF ("ps_exiting send msg]ps_info=%p,pid=%u", pps_info,
- ps_msg->host_pid);
- nsfw_mgr_msg_free (msg);
- return TRUE;
-}
-
-/*****************************************************************************
-* Prototype : mem_alloc_ps_info
-* Description : alloc ps_info
-* Input : u32 pid
-* u8 proc_type
-* Output : None
-* Return Value : u8
-* Calls :
-* Called By :
-*****************************************************************************/
-u8
-mem_alloc_ps_info (u32 pid, u8 proc_type)
-{
- nsfw_ps_info *pps_info = NULL;
- pps_info = nsfw_ps_info_get (pid);
- if (NULL != pps_info)
- {
- return TRUE;
- }
-
- pps_info = nsfw_ps_info_alloc (pid, proc_type);
- if (NULL == pps_info)
- {
- NSFW_LOGERR ("alloc ps_info failed!]pid=%u,proc_type=%u", pid,
- proc_type);
- return FALSE;
- }
-
- NSFW_LOGINF ("alloc new ps_info]pps_info=%p,pid=%u", pps_info, pid);
- return TRUE;
-}
-
-/*mem alloc by msg begin*/
-void *
-mem_item_zone_create (void *mem_info)
-{
- return (void *) nsfw_mem_zone_create ((nsfw_mem_zone *) mem_info);
-}
-
-void *
-mem_item_mbfmp_create (void *mem_info)
-{
- return (void *) nsfw_mem_mbfmp_create ((nsfw_mem_mbfpool *) mem_info);
-}
-
-void *
-mem_item_sp_create (void *mem_info)
-{
- return (void *) nsfw_mem_sp_create ((nsfw_mem_sppool *) mem_info);
-}
-
-void *
-mem_item_ring_create (void *mem_info)
-{
- return (void *) nsfw_mem_ring_create ((nsfw_mem_mring *) mem_info);
-}
-
-nsfw_ps_mem_item_cfg g_ps_mem_map[] = {
- {
- NSFW_RESERV_REQ_MSG,
- sizeof (nsfw_shmem_reserv_req),
- NSFW_MEM_MZONE,
- mem_item_zone_create,
- mem_item_get_callargv}
- ,
-
- {
- NSFW_MBUF_REQ_MSG,
- sizeof (nsfw_shmem_mbuf_req),
- NSFW_MEM_MBUF,
- mem_item_mbfmp_create,
- mem_item_get_callargv}
- ,
- {
- NSFW_SPPOOL_REQ_MSG,
- sizeof (nsfw_shmem_sppool_req),
- NSFW_MEM_SPOOL,
- mem_item_sp_create,
- mem_item_get_callargv}
- ,
- {
- NSFW_RING_REQ_MSG,
- sizeof (nsfw_shmem_ring_req),
- NSFW_MEM_RING,
- mem_item_ring_create,
- mem_item_get_callargv}
- ,
- {
- NSFW_RELEASE_REQ_MSG,
- sizeof (nsfw_shmem_free_req),
- 0xFFFF,
- mem_item_free,
- mem_item_get_callargv,
- }
- ,
- {
- NSFW_MEM_LOOKUP_REQ_MSG,
- sizeof (nsfw_shmem_lookup_req),
- 0xFFFF,
- mem_item_lookup,
- mem_item_get_callargv,
- }
-};
-
-/*****************************************************************************
-* Prototype : mem_item_get_cfg_from_msg
-* Description : get memory config
-* Input : u16 msg_type
-* Output : None
-* Return Value : nsfw_ps_mem_item_cfg *
-* Calls :
-* Called By :
-*****************************************************************************/
-nsfw_ps_mem_item_cfg *
-mem_item_get_cfg_from_msg (u16 msg_type)
-{
- int idx;
- int map_count = sizeof (g_ps_mem_map) / sizeof (nsfw_ps_mem_item_cfg);
- for (idx = 0; idx < map_count; idx++)
- {
- if (g_ps_mem_map[idx].usmsg_type == msg_type)
- {
- return &g_ps_mem_map[idx];
- }
- }
-
- return NULL;
-}
-
-/*****************************************************************************
-* Prototype : mem_item_get_callargv
-* Description : change the message value to structure value
-* Input : u16 msg_type
-* char* msg_body
-* char *memstr_buf
-* i32 buf_len
-* Output : None
-* Return Value : u8
-* Calls :
-* Called By :
-*****************************************************************************/
-u8
-mem_item_get_callargv (u16 msg_type, char *msg_body, char *memstr_buf,
- i32 buf_len)
-{
- switch (msg_type)
- {
- case NSFW_RESERV_REQ_MSG:
- MEM_GET_CALLARGV (length, length, nsfw_mem_zone, nsfw_shmem_reserv_req,
- memstr_buf, msg_body);
- MEM_GET_CALLARGV (isocket_id, isocket_id, nsfw_mem_zone,
- nsfw_shmem_reserv_req, memstr_buf, msg_body);
- break;
- case NSFW_MBUF_REQ_MSG:
- MEM_GET_CALLARGV (usnum, usnum, nsfw_mem_mbfpool, nsfw_shmem_mbuf_req,
- memstr_buf, msg_body);
- MEM_GET_CALLARGV (uscash_size, uscash_size, nsfw_mem_mbfpool,
- nsfw_shmem_mbuf_req, memstr_buf, msg_body);
- MEM_GET_CALLARGV (uspriv_size, uspriv_size, nsfw_mem_mbfpool,
- nsfw_shmem_mbuf_req, memstr_buf, msg_body);
- MEM_GET_CALLARGV (usdata_room, usdata_room, nsfw_mem_mbfpool,
- nsfw_shmem_mbuf_req, memstr_buf, msg_body);
- MEM_GET_CALLARGV (enmptype, enmptype, nsfw_mem_mbfpool,
- nsfw_shmem_mbuf_req, memstr_buf, msg_body);
- MEM_GET_CALLARGV (isocket_id, isocket_id, nsfw_mem_mbfpool,
- nsfw_shmem_mbuf_req, memstr_buf, msg_body);
- break;
- case NSFW_SPPOOL_REQ_MSG:
- MEM_GET_CALLARGV (usnum, usnum, nsfw_mem_sppool,
- nsfw_shmem_sppool_req, memstr_buf, msg_body);
- MEM_GET_CALLARGV (useltsize, useltsize, nsfw_mem_sppool,
- nsfw_shmem_sppool_req, memstr_buf, msg_body);
- MEM_GET_CALLARGV (enmptype, enmptype, nsfw_mem_sppool,
- nsfw_shmem_sppool_req, memstr_buf, msg_body);
- MEM_GET_CALLARGV (isocket_id, isocket_id, nsfw_mem_sppool,
- nsfw_shmem_sppool_req, memstr_buf, msg_body);
- break;
- case NSFW_RING_REQ_MSG:
- MEM_GET_CALLARGV (usnum, usnum, nsfw_mem_mring, nsfw_shmem_ring_req,
- memstr_buf, msg_body);
- MEM_GET_CALLARGV (enmptype, enmptype, nsfw_mem_mring,
- nsfw_shmem_ring_req, memstr_buf, msg_body);
- MEM_GET_CALLARGV (isocket_id, isocket_id, nsfw_mem_mring,
- nsfw_shmem_ring_req, memstr_buf, msg_body);
- break;
- case NSFW_RELEASE_REQ_MSG:
- MEM_GET_CALLARGV (ustype, ustype, nsfw_mem_type_info,
- nsfw_shmem_free_req, memstr_buf, msg_body);
- break;
- case NSFW_MEM_LOOKUP_REQ_MSG:
- MEM_GET_CALLARGV (ustype, ustype, nsfw_mem_type_info,
- nsfw_shmem_lookup_req, memstr_buf, msg_body);
- break;
- default:
- NSFW_LOGERR ("error msg]type=%u", msg_type);
- return FALSE;
- }
- if (EOK !=
- STRCPY_S (((nsfw_mem_zone *) memstr_buf)->stname.aname,
- NSFW_MEM_NAME_LENGTH,
- ((nsfw_shmem_reserv_req *) msg_body)->aname))
- {
- NSFW_LOGERR ("STRCPY_S failed]msg_type=%u", msg_type);
- return FALSE;
- }
-
- ((nsfw_mem_zone *) memstr_buf)->stname.entype = NSFW_SHMEM;
-
- return TRUE;
-}
-
-/*****************************************************************************
-* Prototype : mem_item_free
-* Description : free memory item
-* Input : void *pdata
-* Output : None
-* Return Value : void*
-* Calls :
-* Called By :
-*****************************************************************************/
-void *
-mem_item_free (void *pdata)
-{
- nsfw_mem_type_info *mem_free = (nsfw_mem_type_info *) pdata;
- i32 ret;
- NSFW_LOGINF ("free mem]type=%u,name=%s", mem_free->ustype,
- mem_free->stname.aname);
- switch (mem_free->ustype)
- {
- case NSFW_MEM_MZONE:
- ret = nsfw_mem_zone_release (&mem_free->stname);
- break;
- case NSFW_MEM_MBUF:
- ret = nsfw_mem_mbfmp_release (&mem_free->stname);
- break;
- case NSFW_MEM_SPOOL:
- ret = nsfw_mem_sp_release (&mem_free->stname);
- break;
- case NSFW_MEM_RING:
- ret = nsfw_mem_ring_release (&mem_free->stname);
- break;
- default:
- NSFW_LOGERR ("free mem err type]type=%u", mem_free->ustype);
- return NULL;
- }
-
- if (NSFW_MEM_OK != ret)
- {
- NSFW_LOGERR ("mem free failed!]ret=%d", ret);
- return NULL;
- }
-
- return pdata;
-}
-
-/*****************************************************************************
-* Prototype : mem_item_lookup
-* Description : lookup memory item
-* Input : void *pdata
-* Output : None
-* Return Value : void*
-* Calls :
-* Called By :
-*****************************************************************************/
-void *
-mem_item_lookup (void *pdata)
-{
- nsfw_mem_type_info *mem_lookup = (nsfw_mem_type_info *) pdata;
- void *ret;
- NSFW_LOGDBG ("lookup mem]type=%u,name=%s", mem_lookup->ustype,
- mem_lookup->stname.aname);
- switch (mem_lookup->ustype)
- {
- case NSFW_MEM_MZONE:
- ret = nsfw_mem_zone_lookup (&mem_lookup->stname);
- break;
- case NSFW_MEM_MBUF:
- ret = nsfw_mem_mbfmp_lookup (&mem_lookup->stname);
- break;
- case NSFW_MEM_SPOOL:
- ret = nsfw_mem_sp_lookup (&mem_lookup->stname);
- break;
- case NSFW_MEM_RING:
- ret = nsfw_mem_ring_lookup (&mem_lookup->stname);
- break;
- default:
- NSFW_LOGERR ("lookup mem err type]type=%d", mem_lookup->ustype);
- return NULL;
- }
-
- if (NULL == ret)
- {
- NSFW_LOGERR ("mem lookup failed!]ret=%p,name=%s", ret,
- mem_lookup->stname.aname);
- return NULL;
- }
-
- return ret;
-}
-
-/*****************************************************************************
-* Prototype : mem_item_proc_by_msg
-* Description : call memory item process function
-* Input : void *pdata
-* nsfw_ps_mem_item_cfg* item_cfg
-* Output : None
-* Return Value : void*
-* Calls :
-* Called By :
-*****************************************************************************/
-void *
-mem_item_proc_by_msg (void *pdata, nsfw_ps_mem_item_cfg * item_cfg)
-{
- char argv_buf[NSFW_MEM_CALL_ARG_BUF] = { 0 };
-
- if ((NULL == item_cfg->change_fun) || (NULL == item_cfg->create_fun))
- {
- NSFW_LOGERR ("item error]change_fun=%p,create_fun=%p",
- item_cfg->change_fun, item_cfg->create_fun);
- return NULL;
- }
-
- if (FALSE ==
- item_cfg->change_fun (item_cfg->usmsg_type, pdata, argv_buf,
- NSFW_MEM_CALL_ARG_BUF))
- {
- NSFW_LOGERR ("call change_fun failed!]type=%u", item_cfg->usmsg_type);
- return NULL;
- }
-
- void *pdataret = NULL;
- pdataret = (item_cfg->create_fun) ((void *) argv_buf);
- return pdataret;
-}
-
-/*****************************************************************************
-* Prototype : mem_init_rsp_msg
-* Description : init the rsp message
-* Input : nsfw_shmem_msg_head* msg
-* nsfw_shmem_msg_head *rsp
-* Output : None
-* Return Value : u8
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-u8
-mem_init_rsp_msg (nsfw_shmem_msg_head * msg, nsfw_shmem_msg_head * rsp)
-{
- nsfw_ps_mem_item_cfg *item_cfg =
- mem_item_get_cfg_from_msg (msg->usmsg_type);
- if (NULL == item_cfg)
- {
- NSFW_LOGERR ("get item cfg failed!]msg_type=%u", msg->usmsg_type);
- return FALSE;
- }
-
- int idx;
- int mem_count = msg->uslength / item_cfg->item_size;
-
- rsp->usmsg_type = msg->usmsg_type + 1;
- rsp->uslength = mem_count * sizeof (nsfw_shmem_ack);
- nsfw_shmem_ack *pack = (nsfw_shmem_ack *) & (rsp->aidata[0]);
- char *pdata = NULL;
- for (idx = 0; idx < mem_count; idx++)
- {
- pdata = (char *) msg->aidata + idx * item_cfg->item_size;
- pack->pbase_addr = NULL;
- pack->usseq = ((nsfw_shmem_reserv_req *) pdata)->usseq;
- pack->cstate = NSFW_MEM_ALLOC_FAIL;
- pack++;
- }
-
- NSFW_LOGDBG ("init all rsp ack]mem_count=%d,msg_type=%u", mem_count,
- msg->usmsg_type);
- return TRUE;
-}
-
-/*****************************************************************************
-* Prototype : mem_rel_mem_by_msg
-* Description : release memory by message
-* Input : nsfw_shmem_msg_head* req_msg
-* nsfw_shmem_msg_head *rsp
-* u32 pid
-* Output : None
-* Return Value : u8
-* Calls :
-* Called By :
-*****************************************************************************/
-u8
-mem_rel_mem_by_msg (nsfw_shmem_msg_head * req_msg,
- nsfw_shmem_msg_head * rsp, u32 pid)
-{
- u32 i;
- nsfw_ps_mem_item_cfg *item_cfg =
- mem_item_get_cfg_from_msg (req_msg->usmsg_type);
- if (NULL == item_cfg)
- {
- NSFW_LOGERR ("get item cfg failed!]msg_type=%u", req_msg->usmsg_type);
- return FALSE;
- }
-
- unsigned int mem_count = req_msg->uslength / item_cfg->item_size;
- char *pdata = NULL;
- nsfw_shmem_ack *pack = (nsfw_shmem_ack *) & (rsp->aidata[0]);
- for (i = 0; i < mem_count; i++)
- {
- pdata = (char *) req_msg->aidata + i * item_cfg->item_size;
- if (NULL != mem_item_proc_by_msg ((void *) pdata, item_cfg))
- {
- pack->cstate = NSFW_MEM_ALLOC_SUCC;
- pack->pbase_addr = NULL;
- }
- pack++;
- }
-
- return TRUE;
-}
-
-/*****************************************************************************
-* Prototype : mem_lookup_mem_by_msg
-* Description : lookup memory by message
-* Input : nsfw_shmem_msg_head* mgr_msg
-* nsfw_shmem_msg_head *rsp
-* u32 pid
-* Output : None
-* Return Value : u8
-* Calls :
-* Called By :
-*****************************************************************************/
-u8
-mem_lookup_mem_by_msg (nsfw_shmem_msg_head * mgr_msg,
- nsfw_shmem_msg_head * rsp, u32 pid)
-{
- i32 idx;
- nsfw_ps_mem_item_cfg *item_cfg =
- mem_item_get_cfg_from_msg (mgr_msg->usmsg_type);
- if (NULL == item_cfg)
- {
- NSFW_LOGERR ("get item cfg failed!]msg_type=%u", mgr_msg->usmsg_type);
- return FALSE;
- }
-
- int mem_count = mgr_msg->uslength / item_cfg->item_size;
- char *pdata = NULL;
- void *paddr = NULL;
- nsfw_shmem_ack *pack = (nsfw_shmem_ack *) & (rsp->aidata[0]);
-
- for (idx = 0; idx < mem_count; idx++)
- {
- pdata = (char *) mgr_msg->aidata + idx * item_cfg->item_size;
- paddr = mem_item_proc_by_msg ((void *) pdata, item_cfg);
- if (NULL != paddr)
- {
- pack->cstate = NSFW_MEM_ALLOC_SUCC;
- pack->pbase_addr = paddr;
- }
- pack++;
- }
-
- return TRUE;
-}
-
-/*****************************************************************************
-* Prototype : mem_alloc_mem_by_msg
-* Description : alloc memory by message
-* Input : nsfw_shmem_msg_head* mem_msg
-* nsfw_shmem_msg_head *rsp
-* Output : None
-* Return Value : ns_mem_info*
-* Calls :
-* Called By :
-*****************************************************************************/
-void *
-mem_alloc_mem_by_msg (nsfw_shmem_msg_head * mem_msg,
- nsfw_shmem_msg_head * rsp)
-{
- nsfw_ps_mem_item_cfg *item_cfg =
- mem_item_get_cfg_from_msg (mem_msg->usmsg_type);
- if (NULL == item_cfg)
- {
- NSFW_LOGERR ("get item cfg failed!]msg_type=%u", mem_msg->usmsg_type);
- return NULL;
- }
-
- int i;
- int j;
- nsfw_mem_type_info mem_free;
- char *pdata = NULL;
- void *p_addr = NULL;
-
- int mem_count = mem_msg->uslength / item_cfg->item_size;
- nsfw_shmem_ack *pack = (nsfw_shmem_ack *) & (rsp->aidata[0]);
- for (i = 0; i < mem_count; i++)
- {
- pdata = (char *) mem_msg->aidata + i * item_cfg->item_size;
- p_addr = mem_item_proc_by_msg ((void *) pdata, item_cfg);
- if (NULL == p_addr)
- {
- NSFW_LOGERR
- ("alloc mem failed!]type=%u,mem_count=%d,item=%d,name=%s",
- mem_msg->usmsg_type, mem_count, i,
- ((nsfw_shmem_reserv_req *) pdata)->aname);
- goto fail_free_mem;
- }
-
- pack->cstate = NSFW_MEM_ALLOC_SUCC;
- pack->pbase_addr = p_addr;
- NSFW_LOGINF
- ("alloc mem suc!]addr=%p,type=%u,mem_count=%d,item=%d,name=%s",
- p_addr, mem_msg->usmsg_type, mem_count, i,
- ((nsfw_shmem_reserv_req *) pdata)->aname);
- pack++;
- }
- return p_addr;
-
-fail_free_mem:
- for (j = 0; j < i; j++)
- {
- pdata = (char *) mem_msg->aidata + j * item_cfg->item_size;
- if (EOK !=
- STRCPY_S (mem_free.stname.aname, NSFW_MEM_NAME_LENGTH,
- ((nsfw_shmem_reserv_req *) pdata)->aname))
- {
- NSFW_LOGERR ("STRCPY_S failed]j=%d", j);
- continue;
- }
-
- mem_free.ustype = item_cfg->mem_type;
- mem_free.stname.entype = NSFW_SHMEM;
- (void) mem_item_free (&mem_free);
- NSFW_LOGINF ("free mem]addr=%p,type=%u,mem_count=%d,item=%d,name=%s",
- p_addr, mem_msg->usmsg_type, mem_count, j,
- ((nsfw_shmem_reserv_req *) pdata)->aname);
- pack++;
- }
-
- return NULL;
-
-}
-
-/*****************************************************************************
-* Prototype : mem_alloc_req_proc
-* Description : memory message
-* Input : nsfw_mgr_msg* msg
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*****************************************************************************/
-int
-mem_alloc_req_proc (nsfw_mgr_msg * msg)
-{
- void *mem_addr = NULL;
-
- if (NULL == msg)
- {
- NSFW_LOGERR ("msg nul");
- return FALSE;
- }
-
- nsfw_shmem_msg_head *mem_msg = GET_USER_MSG (nsfw_shmem_msg_head, msg);
- nsfw_mgr_msg *rsp_msg = nsfw_mgr_rsp_msg_alloc (msg);
- if (NULL == rsp_msg)
- {
- NSFW_LOGERR ("alloc rsp msg failed]msg_type=%u", mem_msg->usmsg_type);
- return FALSE;
- }
-
- nsfw_shmem_msg_head *mem_rsp_msg =
- GET_USER_MSG (nsfw_shmem_msg_head, rsp_msg);
-
- if (!mem_init_rsp_msg (mem_msg, mem_rsp_msg))
- {
- NSFW_LOGERR ("init rsp msg failed]msg_type=%u", mem_msg->usmsg_type);
- nsfw_mgr_msg_free (rsp_msg);
- return FALSE;
- }
-
- switch (mem_msg->usmsg_type)
- {
- case NSFW_MEM_LOOKUP_REQ_MSG:
- if (!mem_lookup_mem_by_msg (mem_msg, mem_rsp_msg, msg->src_pid))
- {
- NSFW_LOGERR ("lookup mem msg failed]msg_type=%u",
- mem_msg->usmsg_type);
- goto sendrspmsg;
- }
- (void) mem_alloc_ps_info (msg->src_pid, msg->src_proc_type);
- break;
- case NSFW_RESERV_REQ_MSG:
- case NSFW_MBUF_REQ_MSG:
- case NSFW_SPPOOL_REQ_MSG:
- case NSFW_RING_REQ_MSG:
- mem_addr = mem_alloc_mem_by_msg (mem_msg, mem_rsp_msg);
- if (NULL == mem_addr)
- {
- NSFW_LOGERR ("alloc mem msg failed]msg_type=%u",
- mem_msg->usmsg_type);
- (void) mem_init_rsp_msg (mem_msg, mem_rsp_msg);
- goto sendrspmsg;
- }
- (void) mem_alloc_ps_info (msg->src_pid, msg->src_proc_type);
- break;
- case NSFW_RELEASE_REQ_MSG:
- if (!mem_rel_mem_by_msg (mem_msg, mem_rsp_msg, msg->src_pid))
- {
- NSFW_LOGERR ("rel mem msg failed]msg_type=%u", mem_msg->usmsg_type);
- goto sendrspmsg;
- }
- break;
- default:
- break;
- }
-
-sendrspmsg:
- (void) nsfw_mgr_send_msg (rsp_msg);
- nsfw_mgr_msg_free (rsp_msg);
- return TRUE;
-}
-
-/*****************************************************************************
-* Prototype : mem_ps_exiting_resend
-* Description : send the exiting message again
-* Input : void *pps_info
-* void* argv
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*****************************************************************************/
-int
-mem_ps_exiting_resend (void *pps_info, void *argv)
-{
- u32 *count = argv;
- nsfw_ps_info *ps_info = pps_info;
- if (NULL == ps_info)
- {
- NSFW_LOGERR ("ps_info nul!");
- return FALSE;
- }
-
- if (NSFW_PROC_APP != ps_info->proc_type)
- {
- return FALSE;
- }
-
- if (NSFW_PS_EXITING != ps_info->state)
- {
- return FALSE;
- }
-
- if (NULL != count)
- {
- NSFW_LOGINF ("send count]count=%u,pid=%u", *count, ps_info->host_pid);
- if (NSFW_PS_SEND_PER_TIME < (*count)++)
- {
- struct timespec time_left =
- { NSFW_PS_MEM_RESEND_TVLAUE +
-((*count) / NSFW_PS_SEND_PER_TIME), 0
- };
- ps_info->resend_timer_ptr =
- (void *) nsfw_timer_reg_timer (NSFW_PS_MEM_RESEND_TIMER,
- pps_info,
- nsfw_mem_ps_exit_resend_timeout,
- time_left);
- return TRUE;
- }
- }
-
- (void) mem_ps_exiting (ps_info, NULL);
- return TRUE;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_mem_srv_restore_timeout
-* Description : service waiting resume timeout
-* Input : u32 timer_type
-* void* data
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*****************************************************************************/
-int
-nsfw_mem_srv_restore_timeout (u32 timer_type, void *data)
-{
- u32 max_count = 0;
-
- g_mem_cfg.p_restore_timer = NULL;
- if (TRUE == NSFW_SRV_STATE_SUSPEND)
- {
- NSFW_SRV_STATE_SUSPEND = FALSE;
- (void) nsfw_ps_iterator (mem_ps_exiting_resend, &max_count);
- }
- return TRUE;
-}
-
-/*****************************************************************************
-* Prototype : mem_srv_ctrl_proc
-* Description : service control message process
-* Input : nsfw_mgr_msg* msg
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*****************************************************************************/
-int
-mem_srv_ctrl_proc (nsfw_mgr_msg * msg)
-{
- if (NULL == msg)
- {
- NSFW_LOGERR ("msg nul");
- return FALSE;
- }
-
- nsfw_srv_ctrl_msg *ctrl_msg = GET_USER_MSG (nsfw_srv_ctrl_msg, msg);
- nsfw_mgr_msg *rsp_msg = nsfw_mgr_rsp_msg_alloc (msg);
- if (NULL == rsp_msg)
- {
- NSFW_LOGERR ("alloc rsp msg failed]msg=%p", msg);
- return FALSE;
- }
- nsfw_srv_ctrl_msg *ctrl_rsp_msg = GET_USER_MSG (nsfw_srv_ctrl_msg, rsp_msg);
- NSFW_LOGINF ("get srv ctrl state] state=%d", ctrl_msg->srv_state);
-
- ctrl_rsp_msg->rsp_code = NSFW_MGR_SUCCESS;
-
- (void) nsfw_mgr_send_msg (rsp_msg);
- nsfw_mgr_msg_free (rsp_msg);
-
- if (NSFW_SRV_CTRL_RESUME == ctrl_msg->srv_state)
- {
- if (TRUE == NSFW_SRV_STATE_SUSPEND)
- {
- NSFW_SRV_STATE_SUSPEND = FALSE;
- }
- u32 max_count = 0;
- (void) nsfw_ps_iterator (mem_ps_exiting_resend, &max_count);
- if (NULL != g_mem_cfg.p_restore_timer)
- {
- nsfw_timer_rmv_timer ((nsfw_timer_info *)
- g_mem_cfg.p_restore_timer);
- g_mem_cfg.p_restore_timer = NULL;
- }
- }
- else
- {
- NSFW_SRV_STATE_SUSPEND = TRUE;
- struct timespec time_left = { NSFW_SRV_RESTORE_TVALUE, 0 };
- g_mem_cfg.p_restore_timer =
- (void *) nsfw_timer_reg_timer (0, NULL,
- nsfw_mem_srv_restore_timeout,
- time_left);
- }
-
- return TRUE;
-}
-
-/*****************************************************************************
-* Prototype : nsfw_ps_mem_module_init
-* Description : module init
-* Input : void* param
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*****************************************************************************/
-int
-nsfw_ps_mem_module_init (void *param)
-{
- u32 proc_type = (u32) ((long long) param);
- NSFW_LOGINF ("ps_mem module init]type=%u", proc_type);
- switch (proc_type)
- {
- case NSFW_PROC_MAIN:
- (void) nsfw_ps_reg_global_fun (NSFW_PROC_APP, NSFW_PS_EXITING,
- mem_ps_exiting, NULL);
- (void) nsfw_mgr_reg_msg_fun (MGR_MSG_MEM_ALLOC_REQ, mem_alloc_req_proc);
- (void) NSFW_REG_SOFT_INT (NSFW_SRV_RESTORE_TIMER,
- NSFW_SRV_RESTORE_TVALUE, 1, 0xFFFF);
- (void) NSFW_REG_SOFT_INT (NSFW_APP_RESEND_TIMER,
- NSFW_PS_MEM_RESEND_TVLAUE, 1, 0xFFFF);
- (void) NSFW_REG_SOFT_INT (NSFW_APP_SEND_PER_TIME,
- NSFW_PS_SEND_PER_TIME, 1, 0xFFFF);
- break;
- default:
- if (proc_type < NSFW_PROC_MAX)
- {
- return 0;
- }
- return -1;
- }
-
- g_mem_cfg.srv_restore_tvalue = NSFW_SRV_RESTORE_TVALUE_DEF;
- g_mem_cfg.ps_exit_resend_tvalue = NSFW_PS_MEM_RESEND_TVLAUE_DEF;
- g_mem_cfg.ps_send_per_time = NSFW_PS_SEND_PER_TIME_DEF;
-
- return 0;
-}
-
-/* *INDENT-OFF* */
-NSFW_MODULE_NAME (NSFW_PS_MEM_MODULE)
-NSFW_MODULE_PRIORITY (10)
-NSFW_MODULE_DEPENDS (NSFW_PS_MODULE)
-NSFW_MODULE_INIT (nsfw_ps_mem_module_init)
-/* *INDENT-ON* */
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif /* __cplusplus */
diff --git a/src/framework/ipc/ps/nsfw_ps_mem_module.h b/src/framework/ipc/ps/nsfw_ps_mem_module.h
deleted file mode 100644
index 6b2b3c9..0000000
--- a/src/framework/ipc/ps/nsfw_ps_mem_module.h
+++ /dev/null
@@ -1,87 +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_PS_MEM_MODULE_H
-#define _NSFW_PS_MEM_MODULE_H
-
-#include "list.h"
-#include "pidinfo.h"
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C"{
-/* *INDENT-ON* */
-#endif /* __cplusplus */
-
-#define MEMZONE_MAX_NAME 32
-#define NS_MAX_FORK_NUM 32
-#define NSFW_PS_MEM_MAX_FILTER 4
-
-#define NSFW_SRV_RESTORE_TVALUE_DEF 120
-#define NSFW_SRV_RESTORE_TVALUE g_mem_cfg.srv_restore_tvalue
-#define NSFW_SRV_STATE_SUSPEND g_mem_cfg.srv_suspend
-
-#define NSFW_PS_MEM_RESEND_TIMER 1
-#define NSFW_PS_MEM_RESEND_TVLAUE_DEF 2
-#define NSFW_PS_SEND_PER_TIME_DEF 150
-#define NSFW_PS_SEND_PER_TIME (g_mem_cfg.ps_send_per_time)
-#define NSFW_PS_MEM_RESEND_TVLAUE (g_mem_cfg.ps_exit_resend_tvalue)
-
-typedef struct _ns_mem_mng_init_cfg
-{
- u16 srv_restore_tvalue;
- u16 ps_exit_resend_tvalue;
- u16 ps_send_per_time;
- u16 srv_suspend;
- void *p_restore_timer;
-} ns_mem_mng_init_cfg;
-
-/*mem alloc by msg begin*/
-typedef struct
-{
- nsfw_mem_name stname;
- u16 ustype;
-} nsfw_mem_type_info;
-
-#define NSFW_MEM_CALL_ARG_BUF 256
-#define MEM_GET_CALLARGV(_dst_member,_src_member, _dst_type,_srctype,_dst_buf, _src_buf) \
- ((_dst_type*)(void*)_dst_buf)->_dst_member = ((_srctype*)(void*)_src_buf)->_src_member
-
-typedef void *(*nsfw_ps_mem_create_fun) (void *memstr);
-typedef u8 (*nsfw_ps_mem_msg_to_memstr) (u16 msg_type, char *msg_body,
- char *memstr_buf, i32 buf_len);
-
-typedef struct __nsfw_ps_mem_item_cfg
-{
- u16 usmsg_type;
- u16 item_size;
- u16 mem_type;
- nsfw_ps_mem_create_fun create_fun;
- nsfw_ps_mem_msg_to_memstr change_fun;
-} nsfw_ps_mem_item_cfg;
-
-void *mem_item_free (void *pdata);
-void *mem_item_lookup (void *pdata);
-u8 mem_item_get_callargv (u16 msg_type, char *msg_body, char *memstr_buf,
- i32 buf_len);
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif /* __cplusplus */
-
-#endif /* _NSFW_PS_MEM_MODULE_H */
diff --git a/src/framework/ipc/ps/nsfw_ps_module.c b/src/framework/ipc/ps/nsfw_ps_module.c
index 6e03e11..3f7cae0 100644
--- a/src/framework/ipc/ps/nsfw_ps_module.c
+++ b/src/framework/ipc/ps/nsfw_ps_module.c
@@ -22,7 +22,6 @@
#include "nsfw_mgr_com_api.h"
#include "nsfw_ps_api.h"
#include "nsfw_ps_module.h"
-#include "nsfw_mem_api.h"
#include "nstack_log.h"
#include "nsfw_base_linux_api.h"
#include "nsfw_fd_timer_api.h"
@@ -39,7 +38,7 @@
#include <linux/netlink.h>
#include <dirent.h>
#include <fnmatch.h>
-#include "common_mem_common.h"
+#include "dmm_memory.h"
#ifdef __cplusplus
/* *INDENT-OFF* */
@@ -259,7 +258,7 @@ nsfw_ps_info *
nsfw_ps_info_alloc (u32 pid, u8 proc_type)
{
nsfw_ps_info *pps_info = NULL;
- if (0 == nsfw_mem_ring_dequeue (g_ps_cfg.ps_info_pool, (void *) &pps_info))
+ if (1 != dmm_dequeue (g_ps_cfg.ps_info_pool, (void **) &pps_info))
{
NSFW_LOGERR ("alloc ps_info failed]pid=%u,type=%u", pid, proc_type);
return NULL;
@@ -397,7 +396,7 @@ nsfw_ps_info_free (nsfw_ps_info * ps_info)
ps_info->host_pid, ps_info->state);
if (ps_info != &g_main_ps_info)
{
- if (0 == nsfw_mem_ring_enqueue (g_ps_cfg.ps_info_pool, ps_info))
+ if (1 != dmm_enqueue (g_ps_cfg.ps_info_pool, ps_info))
{
NSFW_LOGERR ("ps_info free failed]ps_info=%p,pid=%u,state=%u",
ps_info, ps_info->host_pid, ps_info->state);
@@ -1554,6 +1553,8 @@ nsfw_ps_cfg_set_chk_count (u16 count)
g_ps_cfg.ps_chk_hbt_count = count;
}
+#define MAS_PS_INFO_NAME "MAS_PS_INFO"
+
/*****************************************************************************
* Prototype : nsfw_ps_module_init
* Description : ps_module init
@@ -1566,6 +1567,7 @@ nsfw_ps_cfg_set_chk_count (u16 count)
int
nsfw_ps_module_init (void *param)
{
+ size_t length;
u32 proc_type = (u32) ((long long) param);
nsfw_ps_init_cfg *ps_cfg = &g_ps_cfg;
int retval;
@@ -1576,17 +1578,7 @@ nsfw_ps_module_init (void *param)
ps_cfg->ps_chk_hbt_tvalue = NSFW_CHK_HBT_TVLAUE_DEF;
ps_cfg->ps_chk_hbt_soft_count = ps_cfg->ps_chk_hbt_count;
- nsfw_mem_zone pzoneinfo;
- pzoneinfo.isocket_id = NSFW_SOCKET_ANY;
- pzoneinfo.stname.entype = NSFW_SHMEM;
- pzoneinfo.length = sizeof (nsfw_pid_item) * NSFW_MAX_PID;
- if (-1 ==
- SPRINTF_S (pzoneinfo.stname.aname, NSFW_MEM_NAME_LENGTH, "%s",
- "MAS_PS_INFO"))
- {
- NSFW_LOGERR ("SPRINTF_S failed]");
- return -1;
- }
+ length = sizeof (nsfw_pid_item) * NSFW_MAX_PID;
switch (proc_type)
{
@@ -1611,8 +1603,7 @@ nsfw_ps_module_init (void *param)
g_ps_info = pid_info;
- pzoneinfo.stname.enowner = NSFW_PROC_MAIN;
- pid_info = nsfw_mem_zone_create (&pzoneinfo);
+ pid_info = dmm_locked_map (length, MAS_PS_INFO_NAME);
if (NULL == pid_info)
{
NSFW_LOGERR ("create pid_info failed!");
@@ -1632,30 +1623,17 @@ nsfw_ps_module_init (void *param)
INIT_LIST_HEAD (&(g_ps_runing_list));
- nsfw_mem_sppool pmpinfo;
- pmpinfo.enmptype = NSFW_MRING_MPMC;
- pmpinfo.usnum = ps_cfg->ps_info_size;
- pmpinfo.useltsize = sizeof (nsfw_ps_info);
- pmpinfo.isocket_id = NSFW_SOCKET_ANY;
- pmpinfo.stname.entype = NSFW_NSHMEM;
- if (-1 ==
- SPRINTF_S (pmpinfo.stname.aname, NSFW_MEM_NAME_LENGTH, "%s",
- "MAS_PS_INFOPOOL"))
- {
- NSFW_LOGERR ("SPRINTF_S failed]");
- return -1;
- }
-
- ps_cfg->ps_info_pool = nsfw_mem_sp_create (&pmpinfo);
-
+ ps_cfg->ps_info_pool = dmm_malloc_pool (sizeof (nsfw_ps_info),
+ ps_cfg->ps_info_size,
+ DMM_RING_INIT_MPMC);
if (!ps_cfg->ps_info_pool)
{
NSFW_LOGERR ("alloc ps info pool_err");
return -1;
}
- MEM_STAT (NSFW_PS_MODULE, pmpinfo.stname.aname, NSFW_NSHMEM,
- nsfw_mem_get_len (ps_cfg->ps_info_pool, NSFW_MEM_SPOOL));
+// MEM_STAT (NSFW_PS_MODULE, pmpinfo.stname.aname, NSFW_NSHMEM,
+// nsfw_mem_get_len (ps_cfg->ps_info_pool, NSFW_MEM_SPOOL));
if (NSFW_PROC_MAIN != proc_type)
{
@@ -1677,7 +1655,7 @@ nsfw_ps_module_init (void *param)
/* *INDENT-OFF* */
NSFW_MODULE_NAME (NSFW_PS_MODULE)
-NSFW_MODULE_PRIORITY (10)
+NSFW_MODULE_PRIORITY (40)
NSFW_MODULE_DEPENDS (NSFW_MGR_COM_MODULE)
NSFW_MODULE_DEPENDS (NSFW_TIMER_MODULE)
NSFW_MODULE_INIT (nsfw_ps_module_init)
diff --git a/src/framework/ipc/ps/nsfw_ps_module.h b/src/framework/ipc/ps/nsfw_ps_module.h
index b754cea..c09644d 100644
--- a/src/framework/ipc/ps/nsfw_ps_module.h
+++ b/src/framework/ipc/ps/nsfw_ps_module.h
@@ -18,7 +18,7 @@
#define _NSFW_PS_MODULE_H
#include "nsfw_ps_api.h"
-#include "nsfw_mem_api.h"
+#include "dmm_ring.h"
#ifdef __cplusplus
/* *INDENT-OFF* */
@@ -33,7 +33,7 @@ extern "C"{
#define NSFW_MAX_PID 65535
COMPAT_PROTECT (NSFW_MAX_PID, 65535);
-#define NSFW_PS_INFO_MAX_COUNT 4095
+#define NSFW_PS_INFO_MAX_COUNT 4096
#define MAX_NET_LINK_BUF_DEF 0x34000*32
#define NSFW_PS_WEXIT_TIMER 1
@@ -52,7 +52,7 @@ typedef struct _nsfw_ps_init_cfg
u16 ps_chk_hbt_soft_count;
u16 ps_chk_hbt_tvalue;
- mring_handle ps_info_pool;
+ struct dmm_ring *ps_info_pool;
} nsfw_ps_init_cfg;
#define NSFW_PS_CHK_TIMER 1
diff --git a/src/framework/ipc/ps/nsfw_recycle_module.c b/src/framework/ipc/ps/nsfw_recycle_module.c
index 01e16fb..c561b7c 100644
--- a/src/framework/ipc/ps/nsfw_recycle_module.c
+++ b/src/framework/ipc/ps/nsfw_recycle_module.c
@@ -20,14 +20,14 @@
#include "nsfw_init.h"
#include "nsfw_mgr_com_api.h"
-#include "nsfw_mem_api.h"
#include "nsfw_ps_api.h"
-#include "nsfw_ps_mem_api.h"
#include "nsfw_fd_timer_api.h"
#include "nsfw_recycle_module.h"
#include "nsfw_maintain_api.h"
#include "nstack_log.h"
-#include "common_mem_api.h"
+
+#include "dmm_memory.h"
+#include "dmm_sys.h"
#ifdef __cplusplus
/* *INDENT-OFF* */
@@ -432,22 +432,13 @@ nsfw_recycle_obj_timeout (u32 timer_type, void *data)
u8
mem_rec_zone_init ()
{
- nsfw_mem_mring pringinfo;
- pringinfo.enmptype = NSFW_MRING_MPMC;
- pringinfo.isocket_id = NSFW_SOCKET_ANY;
- pringinfo.stname.entype = NSFW_NSHMEM;
- pringinfo.usnum = MEM_RECYCLE_PER_PRO_QUE;
+ size_t length;
u32 i;
+
for (i = 0; i < NSFW_REC_PRO_MAX; i++)
{
- if (-1 ==
- SPRINTF_S (pringinfo.stname.aname, NSFW_MEM_NAME_LENGTH, "%s%d",
- MEM_REC_QUEUE_NAME, i))
- {
- NSFW_LOGERR ("SPRINTF_S failed]");
- return FALSE;
- }
- g_rec_cfg.mem_rec_pro[i] = nsfw_mem_ring_create (&pringinfo);
+ g_rec_cfg.mem_rec_pro[i] = dmm_malloc_ring (MEM_RECYCLE_PER_PRO_QUE,
+ DMM_RING_INIT_MPMC);
if (NULL == g_rec_cfg.mem_rec_pro[i])
{
NSFW_LOGERR ("alloc rec ring nul!");
@@ -455,66 +446,36 @@ mem_rec_zone_init ()
}
}
- MEM_STAT (NSFW_RECYCLE_MODULE, MEM_REC_QUEUE_NAME, NSFW_NSHMEM,
- NSFW_REC_PRO_MAX * nsfw_mem_get_len (g_rec_cfg.mem_rec_pro[0],
- NSFW_MEM_RING));
-
- nsfw_mem_zone pzoneinfo;
- pzoneinfo.isocket_id = NSFW_SOCKET_ANY;
- pzoneinfo.stname.entype = NSFW_NSHMEM;
- pzoneinfo.length =
- MEM_RECYCLE_OBJ_MAX_NUM * sizeof (nsfw_recycle_obj) +
- sizeof (nsfw_recycle_pool);
- if (-1 ==
- SPRINTF_S (pzoneinfo.stname.aname, NSFW_MEM_NAME_LENGTH, "%s",
- MEM_REC_POOL_NAME))
- {
- NSFW_LOGERR ("SPRINTF_S failed]");
- return FALSE;
- }
+// MEM_STAT (NSFW_RECYCLE_MODULE, MEM_REC_QUEUE_NAME, NSFW_NSHMEM,
+// NSFW_REC_PRO_MAX * nsfw_mem_get_len (g_rec_cfg.mem_rec_pro[0],
+// NSFW_MEM_RING));
- g_rec_cfg.mem_rec_obj_pool = nsfw_mem_zone_create (&pzoneinfo);
+ length = sizeof (nsfw_recycle_pool)
+ + MEM_RECYCLE_OBJ_MAX_NUM * sizeof (nsfw_recycle_obj);
+ g_rec_cfg.mem_rec_obj_pool = calloc (1, length);
if (NULL == g_rec_cfg.mem_rec_obj_pool)
{
NSFW_LOGERR ("alloc rec pool nul!");
return FALSE;
}
- MEM_STAT (NSFW_RECYCLE_MODULE, MEM_REC_POOL_NAME, NSFW_NSHMEM,
- pzoneinfo.length);
+// MEM_STAT (NSFW_RECYCLE_MODULE, MEM_REC_POOL_NAME, NSFW_NSHMEM,
+// pzoneinfo.length);
- int retval;
- retval =
- MEMSET_S (g_rec_cfg.mem_rec_obj_pool, pzoneinfo.length, 0,
- pzoneinfo.length);
- if (EOK != retval)
- {
- NSFW_LOGERR ("mem set init failed!");
- return FALSE;
- }
-
- i32 j;
- nsfw_recycle_pool *rec_pool =
- (nsfw_recycle_pool *) g_rec_cfg.mem_rec_obj_pool;
+ nsfw_recycle_pool *rec_pool = g_rec_cfg.mem_rec_obj_pool;
rec_pool->pool_size = MEM_RECYCLE_OBJ_MAX_NUM;
nsfw_recycle_obj *p_start = rec_pool->obj;
for (i = 0; i < NSFW_REC_PRO_MAX; i++)
{
- for (j = 0; j < MEM_RECYCLE_PER_PRO_QUE; j++)
+ int ret = dmm_array_enqueue (g_rec_cfg.mem_rec_pro[i], p_start,
+ MEM_RECYCLE_PER_PRO_QUE,
+ sizeof (nsfw_recycle_obj));
+ if (ret != MEM_RECYCLE_PER_PRO_QUE)
{
- if (FALSE == p_start[j].alloc_flag)
- {
- if (0 ==
- nsfw_mem_ring_enqueue (g_rec_cfg.mem_rec_pro[i],
- &p_start[j]))
- {
- NSFW_LOGERR ("enqueue failed");
- break;
- }
- }
+ NSFW_LOGERR ("enqueue failed");
}
- p_start = p_start + MEM_RECYCLE_PER_PRO_QUE;
+ p_start += MEM_RECYCLE_PER_PRO_QUE;
}
NSFW_LOGINF ("init rec pool and ring suc!");
@@ -543,8 +504,7 @@ nsfw_recycle_reg_obj (u8 priority, u16 rec_type, void *data)
}
nsfw_recycle_obj *obj = NULL;
- if (0 ==
- nsfw_mem_ring_dequeue (g_rec_cfg.mem_rec_pro[priority], (void *) &obj))
+ if (1 != dmm_dequeue (g_rec_cfg.mem_rec_pro[priority], (void **) &obj))
{
NSFW_LOGERR ("dequeue error]priority=%d,rec_type=%d,data=%p",
priority, rec_type, data);
@@ -553,7 +513,7 @@ nsfw_recycle_reg_obj (u8 priority, u16 rec_type, void *data)
if (EOK != MEMSET_S (obj, sizeof (*obj), 0, sizeof (*obj)))
{
- if (0 == nsfw_mem_ring_enqueue (g_rec_cfg.mem_rec_pro[priority], obj))
+ if (1 != dmm_enqueue (g_rec_cfg.mem_rec_pro[priority], obj))
{
NSFW_LOGERR ("enqueue error]priority=%d,rec_type=%d,data=%p",
priority, rec_type, data);
@@ -651,8 +611,9 @@ nsfw_recycle_fork_init ()
/* *INDENT-OFF* */
NSFW_MODULE_NAME (NSFW_RECYCLE_MODULE)
-NSFW_MODULE_PRIORITY (10)
-NSFW_MODULE_DEPENDS (NSFW_PS_MEM_MODULE)
+NSFW_MODULE_PRIORITY (60)
+NSFW_MODULE_DEPENDS (DMM_MEMORY_MODULE)
+NSFW_MODULE_DEPENDS (NSFW_PS_MODULE)
NSFW_MODULE_INIT (nsfw_recycle_module_init)
/* *INDENT-ON* */
diff --git a/src/framework/ipc/ps/nsfw_recycle_module.h b/src/framework/ipc/ps/nsfw_recycle_module.h
index 694c1d2..73f9317 100644
--- a/src/framework/ipc/ps/nsfw_recycle_module.h
+++ b/src/framework/ipc/ps/nsfw_recycle_module.h
@@ -18,6 +18,7 @@
#define _NSFW_RECYCLE_MODULE_H
#include "nsfw_recycle_api.h"
+#include "dmm_ring.h"
#ifdef __cplusplus
/* *INDENT-OFF* */
@@ -45,7 +46,6 @@ typedef struct _nsfw_recycle_obj
u16 rec_type;
u32 host_pid;
void *data;
- u64 u64reserve;
} nsfw_recycle_obj;
#define NSFW_REC_LOCK_REL_MAX_FUN 32
@@ -66,8 +66,8 @@ typedef struct _nsfw_recycle_pool
typedef struct _nsfw_recycle_cfg
{
u16 rec_waite_end_tvalue;
- mring_handle mem_rec_obj_pool;
- mzone_handle mem_rec_pro[NSFW_REC_PRO_MAX];
+ nsfw_recycle_pool *mem_rec_obj_pool;
+ struct dmm_ring *mem_rec_pro[NSFW_REC_PRO_MAX];
} nsfw_recycle_cfg;
extern nsfw_rcc_stat nsfw_recycle_callback_all_obj (u32 pid,
diff --git a/src/framework/ipc/ps/nsfw_soft_param.c b/src/framework/ipc/ps/nsfw_soft_param.c
index 743276f..6294acc 100644
--- a/src/framework/ipc/ps/nsfw_soft_param.c
+++ b/src/framework/ipc/ps/nsfw_soft_param.c
@@ -26,8 +26,6 @@
#include "nstack_log.h"
#include "nsfw_maintain_api.h"
-#include "nsfw_mem_api.h"
-
#ifdef __cplusplus
/* *INDENT-OFF* */
extern "C"{
@@ -286,7 +284,7 @@ nsfw_softparam_module_init (void *param)
/* *INDENT-OFF* */
NSFW_MODULE_NAME (NSFW_SOFT_PARAM_MODULE)
-NSFW_MODULE_PRIORITY (99)
+NSFW_MODULE_PRIORITY (50)
NSFW_MODULE_INIT (nsfw_softparam_module_init)
/* *INDENT-ON* */