1
0
mirror of https://github.com/Yours3lf/rpi-vk-driver.git synced 2025-01-04 22:46:09 +01:00
rpi-vk-driver/driver/ConsecutivePoolAllocator.h
2020-05-29 21:49:16 +01:00

31 lines
937 B
C

#pragma once
#if defined (__cplusplus)
extern "C" {
#endif
#include "CustomAssert.h"
#include <stdint.h>
typedef struct ConsecutivePoolAllocator
{
char* buf; //preallocated buffer
uint32_t* nextFreeBlock;
unsigned blockSize;
unsigned size; //size is exact multiple of block size
unsigned numFreeBlocks;
} ConsecutivePoolAllocator;
ConsecutivePoolAllocator createConsecutivePoolAllocator(char* b, unsigned bs, unsigned s);
void destroyConsecutivePoolAllocator(ConsecutivePoolAllocator* pa);
uint32_t consecutivePoolAllocate(ConsecutivePoolAllocator* pa, uint32_t numBlocks);
void consecutivePoolFree(ConsecutivePoolAllocator* pa, void* p, uint32_t numBlocks);
uint32_t consecutivePoolReAllocate(ConsecutivePoolAllocator* pa, void* currentMem, uint32_t currNumBlocks);
void CPAdebugPrint(ConsecutivePoolAllocator* pa);
void* getCPAptrFromOffset(ConsecutivePoolAllocator* pa, uint32_t offset);
#if defined (__cplusplus)
}
#endif