summaryrefslogtreecommitdiffstats
path: root/src/framework/common/mem_mgr/nsfw_mem_api.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/framework/common/mem_mgr/nsfw_mem_api.c')
-rw-r--r--src/framework/common/mem_mgr/nsfw_mem_api.c879
1 files changed, 0 insertions, 879 deletions
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;
-}