📄 ssp_slab.h
字号:
#ifdef __cplusplusextern "C"{#endif #ifndef __INC_SSP_SLAB_H__#define __INC_SSP_SLAB_H__#define MAX_SLAB_NAME_LEN (AOS_NAME_LEN*2)#define CONFIG_MEM_BUF_NUM 32#define OBJ_CTRL_END U32_BUTT#define SIZEOF_SLAB_HEAD (sizeof(SLAB_S)-sizeof(OBJ_CTRL_S))#define SIZEOF_OBJ_CTRL (sizeof(OBJ_CTRL_S))#define PAGE_FREE 0 #define PAGE_MNG 1 #define PAGE_SYS 2 #define PAGE_FIX 3 #define PAGE_SLAB 4 #define PAGE_HUGE 5 #define obj_to_page(objp) (&g_pstPages[((U32)(objp)-(U32)g_pPageOffset)>>MEM_PAGE_ORDER])typedef struct obj_ctrl_s{ MPE mpe; U32 sid; U32 tick; U32 ref; U32 next; S8 *file; U32 line;}OBJ_CTRL_S;struct slab_s;typedef struct slab_s SLAB_S;struct slab_s{ SLAB_S * s_prev; SLAB_S * s_next; U8 * s_mem; U32 inuse; U32 free; OBJ_CTRL_S obj_ctrl[1]; };typedef struct mem_buf_s{ U32 status; SLAB_S *s_list_head; SLAB_S *s_list_tail; SLAB_S *firstnofull; U32 objsize; U32 objnum; U32 page_num; U32 slab_num; S8 name[MAX_SLAB_NAME_LEN];}MEM_BUF_S;typedef struct page_s{ U16 status; U16 buf_id; SLAB_S *slabp;}PAGE_S;typedef struct slab_dbg_info{ U8 is_slab_s_insufficient; U8 is_page_insufficient; U8 is_release_slab;}SLAB_DBG_INFO_S;extern U8 * g_pPageOffset;extern MEM_BUF_S * g_pstMemBuf;extern PAGE_S * g_pstPages;extern U32 g_ulPageNum;extern U32 g_ulFreePageStart;extern U32 g_ulStaticMemStart;extern U32 g_ulStaticMemPageStart;extern U8 * g_pSlabPool;extern U32 g_ulSlabPoolSize;extern SLAB_DBG_INFO_S slab_dbg_info;AOS_INLINE SLAB_S *__mem_slab_s_get( U32 size );AOS_INLINE U32 __mem_slab_s_release( SLAB_S *pslab, U32 size );AOS_INLINE U32 __mem_obj_verify( VOID *objp, MEM_BUF_S **ppBuf, SLAB_S **ppSlab, U32 *pulObjNo );VOID *__mem_page_get( U32 pageNum );U32 __mem_buf_check( MEM_BUF_S *pBuf );U32 __mem_slab_check( MEM_BUF_S *pBuf, SLAB_S *pSlab );OBJ_CTRL_S *mem_obj_ctrl( VOID*objp );#endif#ifdef __cplusplus}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -