WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
oal_pkt_netbuf_rom.h
浏览该文件的文档.
1/*
2 * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2020-2022. All rights reserved.
3 * Description: pkt ram netbuf management interface.
4 */
5
6#ifndef OAL_PKT_NETBUF_ROM_H
7#define OAL_PKT_NETBUF_ROM_H
8#include "oal_net_pkt_rom.h"
9#include "td_type.h"
10
11#ifdef __cplusplus
12#if __cplusplus
13extern "C" {
14#endif
15#endif
16
17/* 用来保存内存块管理结构体oal_mem_struc,整个内存块的结构如下所示。 */
18/* +-------------------+---------------------------------------+------------+ */
19/* | payload |dog tag|dbg flag|_return_addr| */
20/* +-------------------+---------------------------------------+------------+ */
21/* | |2 byte | 2 byte | 4 byte | */
22/* +-------------------+---------------------------------------+------------+ */
23#define OAL_DOG_TAG 0xdeadbeaf /* 狗牌,用于检测内存越界 */
24#define OAL_DOG_FLAG 0xbeaf /* 狗牌,用于检测内存越界 */
25
26#ifdef _PRE_MEM_DEBUG
27#define OAL_DOG_TAG_SIZE 4 /* 狗牌大小(4字节) */
28#define OAL_RETURN_ADDR 4 /* 保存_return_address信息 */
29#else
30#define OAL_DOG_TAG_SIZE 0
31#define OAL_RETURN_ADDR 0
32#endif
33
42
43/* 裸系统下netbuf子内存池结构体 */
44typedef struct {
45 osal_u16 free_cnt; /* 本子内存池可用内存块数 */
46 osal_u16 total_cnt; /* 本子内存池内存块总数 */
47 osal_u16 min_free_cnt; /* 本子内存池历史可用最小内存块数 */
48 osal_u16 rsv_cnt; /* 被保留的块数 */
49 osal_u16 start_index; /* 本子内存池paylaod的起始index */
50 osal_u16 len; /* 本子内存池的内存块长度真实整体长度 */
51 osal_u32 pkt_addr; /* 本子内存池pktram内存起始地址 */
52 /* 记录oal_dmac_netbuf_stru可用内存索引表的栈顶元素,其内容为oal_dmac_netbuf_stru指针 */
55
56/* 子内存池配置结构体 */
57typedef struct {
58 osal_u16 size; /* 本子内存池内存块大小 */
59 osal_u16 cnt; /* 本子内存池内存块个数 */
61
68
73
76 osal_u32 table_size);
77
79 oal_pkt_find_blk_custom func, osal_u32 return_addr);
85osal_u32 oal_pkt_rsv(osal_void *handler, osal_u32 rsv_size, osal_u32 return_addr);
90typedef osal_u32 (*oal_pkt_rsv_cb)(osal_void *handler, osal_u32 rsv_size);
92
93#ifdef __cplusplus
94#if __cplusplus
95}
96#endif
97#endif
98
99#endif
osal_u8 type
Definition oal_net.h:0
osal_void oal_pkt_clear_pool(osal_void *handler)
osal_u32(* oal_pkt_restore_cb)(osal_void *handler)
Definition oal_pkt_netbuf_rom.h:91
osal_void oal_pkt_free_pool_safty(osal_void **handler)
osal_void * oal_pkt_init_cfg(osal_u32 start_addr, osal_u32 end_addr, const oal_mem_subpool_cfg_stru *cfg_table, osal_u32 table_size)
osal_u32 oal_pkt_get_pool_info(osal_void *handler, osal_u32 index, oal_mem_subpool_cfg_stru *cfg_table)
osal_u32 oal_pkt_get_subpool_free_cnt(const osal_void *handler, osal_u8 subpool_id)
osal_u32 oal_pkt_get_subpool_used_cnt(const osal_void *handler, osal_u8 subpool_id)
osal_u32 oal_pkt_netbuf_free(osal_void *handler, oal_dmac_netbuf_stru *netbuf, osal_u32 return_addr)
oal_netbuf_subpool_stru * oal_pkt_get_subpool_by_netbuf(const osal_void *handler, const oal_dmac_netbuf_stru *netbuf)
osal_u32(* oal_pkt_rsv_cb)(osal_void *handler, osal_u32 rsv_size)
Definition oal_pkt_netbuf_rom.h:90
osal_void oal_pkt_find_blk_custom(osal_u8 *subpool_id)
Definition oal_pkt_netbuf_rom.h:69
osal_void oal_pkt_restore(osal_void *handler, osal_u32 return_addr)
osal_u32 oal_pkt_get_pool_cnt_by_type(const osal_void *handler, osal_u8 type)
osal_u32 oal_pkt_get_subpool_len(const osal_void *handler, osal_u8 subpool_id)
osal_u32 oal_pkt_rsv(osal_void *handler, osal_u32 rsv_size, osal_u32 return_addr)
osal_void oal_pkt_print_netbuf_pool_info(const osal_void *handler)
osal_u32(* oal_pkt_free_pool_cb)(osal_void **handler)
Definition oal_pkt_netbuf_rom.h:89
osal_u8 oal_pkt_netbuf_valid_check(const osal_void *handler, const oal_dmac_netbuf_stru *netbuf)
oal_pkt_cnt_type
Definition oal_pkt_netbuf_rom.h:34
@ OAL_PKT_TOTAL_CNT
Definition oal_pkt_netbuf_rom.h:35
@ OAL_PKT_USED_CNT
Definition oal_pkt_netbuf_rom.h:36
@ OAL_PKT_ALLOC_CNT
Definition oal_pkt_netbuf_rom.h:37
@ OAL_PKT_GET_CNT_BUTT
Definition oal_pkt_netbuf_rom.h:40
@ OAL_PKT_FAIL_CNT
Definition oal_pkt_netbuf_rom.h:38
oal_dmac_netbuf_stru * oal_pkt_netbuf_alloc(osal_void *handler, const oal_pkt_param *para, oal_pkt_find_blk_custom func, osal_u32 return_addr)
unsigned char osal_u8
Definition osal_types.h:11
void osal_void
Definition osal_types.h:29
unsigned int osal_u32
Definition osal_types.h:13
unsigned short osal_u16
Definition osal_types.h:12
Definition oal_net_pkt_rom.h:83
Definition oal_pkt_netbuf_rom.h:57
osal_u16 cnt
Definition oal_pkt_netbuf_rom.h:59
osal_u16 size
Definition oal_pkt_netbuf_rom.h:58
Definition oal_pkt_netbuf_rom.h:44
osal_u16 start_index
Definition oal_pkt_netbuf_rom.h:49
osal_u16 min_free_cnt
Definition oal_pkt_netbuf_rom.h:47
osal_u32 pkt_addr
Definition oal_pkt_netbuf_rom.h:51
osal_u16 rsv_cnt
Definition oal_pkt_netbuf_rom.h:48
osal_u16 total_cnt
Definition oal_pkt_netbuf_rom.h:46
oal_dmac_netbuf_stru * free_stack
Definition oal_pkt_netbuf_rom.h:53
osal_u16 free_cnt
Definition oal_pkt_netbuf_rom.h:45
osal_u16 len
Definition oal_pkt_netbuf_rom.h:50
Definition oal_pkt_netbuf_rom.h:62
osal_u8 end_subpool
Definition oal_pkt_netbuf_rom.h:65
osal_u8 rsv
Definition oal_pkt_netbuf_rom.h:66
osal_u8 priority
Definition oal_pkt_netbuf_rom.h:63
osal_u8 subpool_id
Definition oal_pkt_netbuf_rom.h:64