gwnavruntime/kernel/HeapPT/HeapPT_AllocBitSet1.h Source File
Go to the documentation of this file.
17 #ifndef INC_KY_Kernel_HeapPT_AllocBitSet1_H
18 #define INC_KY_Kernel_HeapPT_AllocBitSet1_H
22 namespace Kaim {
namespace HeapPT {
28 AllocBitSet1(UPInt minAlignShift);
30 static UInt32* GetBitSet(
const HeapSegment* seg)
32 return (UInt32*)(((UByte*)seg) +
sizeof(HeapSegment));
35 UPInt GetBitSetWords(UPInt dataSize)
const
37 UPInt blocks = (dataSize + MinAlignMask) >> MinAlignShift;
38 return (blocks + 31) >> 5;
41 UPInt GetBitSetBytes(UPInt dataSize)
const
43 return GetBitSetWords(dataSize) *
sizeof(UInt32);
46 void InitSegment(HeapSegment* seg);
47 void ReleaseSegment(HeapSegment* seg);
49 UPInt AlignSize(UPInt size)
const
51 return (size + MinAlignMask) & ~MinAlignMask;
54 void* Alloc(UPInt size, HeapSegment** allocSeg);
55 void Free(HeapSegment* seg,
void* ptr, UPInt size);
57 UPInt GetTotalFreeSpace()
const
59 return Bin.GetTotalFreeSpace(MinAlignShift);
62 void VisitMem(MemVisitor* visitor, MemVisitor::Category cat)
const
64 Bin.VisitMem(visitor, MinAlignShift, cat);
67 void VisitUnused(SegVisitor* visitor,
unsigned cat)
const
69 Bin.VisitUnused(visitor, MinAlignShift, cat);
73 KY_INLINE
static void clrBit(UInt32* bitSet, UPInt idx)
75 bitSet[idx >> 5] &= ~(UInt32(1) << (idx & 31));
78 KY_INLINE
static void setBit(UInt32* bitSet, UPInt idx)
80 bitSet[idx >> 5] |= UInt32(1) << (idx & 31);
83 KY_INLINE
static void markBusy(UInt32* bitSet, UPInt start, UPInt size)
85 setBit(bitSet, start);
86 setBit(bitSet, start+size-1);
89 KY_INLINE
static void markFree(UInt32* bitSet, UPInt start, UPInt size)
91 clrBit(bitSet, start);
92 clrBit(bitSet, start+size-1);
95 KY_INLINE
static bool isZero(
const UInt32* bitSet, UPInt idx)
97 return (bitSet[idx >> 5] & (UInt32(1) << (idx & 31))) == 0;
Definition: gamekitcrowddispersion.h:20