29#ifndef _LOS_MEMORY_INTERNAL_H
30#define _LOS_MEMORY_INTERNAL_H
46#ifdef LOSCFG_MEM_MUL_MODULE
54#ifdef LOSCFG_MEM_HEAD_BACKUP
59#ifdef LOSCFG_MEM_LEAKCHECK
60#define MEM_RECORD_LR_CNT (LOSCFG_MEM_RECORD_LR_CNT - LOSCFG_MEM_OMIT_LR_CNT)
61 UINTPTR linkReg[MEM_RECORD_LR_CNT];
73#ifdef LOSCFG_MEM_HEAD_BACKUP
79#define OS_MEM_NODE_HEAD_SIZE sizeof(LosMemDynNode)
81#define OS_MEM_MIN_POOL_SIZE (OS_DLNK_HEAD_SIZE + (2 * OS_MEM_NODE_HEAD_SIZE) + \
82 sizeof(LosMemPoolInfo) + 1)
83#define IS_POW_TWO(value) ((((UINTPTR)(value)) & ((UINTPTR)(value) - 1)) == 0)
84#define POOL_ADDR_ALIGNSIZE 64
85#define OS_MEM_NODE_USED_FLAG 0x80000000U
86#define OS_MEM_NODE_ALIGNED_FLAG 0x40000000U
87#define OS_MEM_NODE_ALIGNED_AND_USED_FLAG (OS_MEM_NODE_USED_FLAG | OS_MEM_NODE_ALIGNED_FLAG)
89#define OS_MEM_NODE_GET_ALIGNED_FLAG(sizeAndFlag) \
90 ((sizeAndFlag) & OS_MEM_NODE_ALIGNED_FLAG)
91#define OS_MEM_NODE_SET_ALIGNED_FLAG(sizeAndFlag) \
92 ((sizeAndFlag) = ((sizeAndFlag) | OS_MEM_NODE_ALIGNED_FLAG))
93#define OS_MEM_NODE_GET_ALIGNED_GAPSIZE(sizeAndFlag) \
94 ((sizeAndFlag) & ~OS_MEM_NODE_ALIGNED_FLAG)
95#define OS_MEM_NODE_GET_USED_FLAG(sizeAndFlag) \
96 ((sizeAndFlag) & OS_MEM_NODE_USED_FLAG)
97#define OS_MEM_NODE_SET_USED_FLAG(sizeAndFlag) \
98 ((sizeAndFlag) = ((sizeAndFlag) | OS_MEM_NODE_USED_FLAG))
99#define OS_MEM_NODE_GET_SIZE(sizeAndFlag) \
100 ((sizeAndFlag) & ~OS_MEM_NODE_ALIGNED_AND_USED_FLAG)
101#define OS_MEM_HEAD(pool, size) \
102 OsDLnkMultiHead(OS_MEM_HEAD_ADDR(pool), size)
103#define OS_MEM_HEAD_ADDR(pool) \
104 ((VOID *)((UINTPTR)(pool) + sizeof(LosMemPoolInfo)))
105#define OS_MEM_NEXT_NODE(node) \
106 ((LosMemDynNode *)(VOID *)((UINT8 *)(node) + OS_MEM_NODE_GET_SIZE((node)->selfNode.sizeAndFlag)))
107#define OS_MEM_FIRST_NODE(pool) \
108 ((LosMemDynNode *)(VOID *)((UINT8 *)OS_MEM_HEAD_ADDR(pool) + OS_DLNK_HEAD_SIZE))
109#define OS_MEM_END_NODE(pool, size) \
110 ((LosMemDynNode *)(VOID *)(((UINT8 *)(pool) + (size)) - OS_MEM_NODE_HEAD_SIZE))
111#define OS_MEM_MIDDLE_ADDR_OPEN_END(startAddr, middleAddr, endAddr) \
112 (((UINT8 *)(startAddr) <= (UINT8 *)(middleAddr)) && ((UINT8 *)(middleAddr) < (UINT8 *)(endAddr)))
113#define OS_MEM_MIDDLE_ADDR(startAddr, middleAddr, endAddr) \
114 (((UINT8 *)(startAddr) <= (UINT8 *)(middleAddr)) && ((UINT8 *)(middleAddr) <= (UINT8 *)(endAddr)))
115#define OS_MEM_SET_MAGIC(value) \
116 ((value) = (UINTPTR)&(value) ^ (UINTPTR)(-1))
117#define OS_MEM_MAGIC_VALID(value) \
118 (((UINTPTR)(value) ^ (UINTPTR)&(value)) == (UINTPTR)(-1))
struct tagLosMemDynNode LosMemDynNode
unsigned int UINTPTR
Definition los_typedef.h:74
unsigned int UINT32
Definition los_typedef.h:52
Definition los_memory_internal.h:40
UINT32 sizeAndFlag
Definition los_memory_internal.h:68
LOS_DL_LIST freeNodeInfo
Definition los_memory_internal.h:42
UINTPTR magic
Definition los_memory_internal.h:44
struct tagLosMemDynNode * preNode
Definition los_memory_internal.h:52
UINTPTR taskId
Definition los_memory_internal.h:45
Definition los_memory_internal.h:72
LosMemCtlNode selfNode
Definition los_memory_internal.h:76