Init
This commit is contained in:
commit
6c8ff31df7
|
|
@ -0,0 +1,40 @@
|
|||
//
|
||||
// Created by zemon on 14.07.2022.
|
||||
//
|
||||
|
||||
#include <memory.h>
|
||||
#include "SimpleIndelibleMalloc.h"
|
||||
|
||||
void SimpleIndelibleMalloc_Init(tSimpleIndelibleMalloc *env, uint8_t *buffer, size_t size) {
|
||||
env->buffer = buffer;
|
||||
env->size = size;
|
||||
env->used = 0;
|
||||
}
|
||||
|
||||
void SimpleIndelibleMalloc_Clear(tSimpleIndelibleMalloc *env) {
|
||||
memset(env->buffer, 0, env->size);
|
||||
}
|
||||
|
||||
static void *SimpleIndelibleMalloc_Get(tSimpleIndelibleMalloc *env, size_t len) {
|
||||
if ((env->used + len) > env->size) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void *result = env->buffer + env->used;
|
||||
env->used += len;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
static void SimpleIndelibleMalloc_Free(tSimpleIndelibleMalloc *env, void *ptr) {
|
||||
//do nothing, it's indelible
|
||||
}
|
||||
|
||||
tMemAllocInterface SimpleIndelibleMalloc_GetInterface(tSimpleIndelibleMalloc *env) {
|
||||
return (tMemAllocInterface) {
|
||||
.env = env,
|
||||
.free = (void *) SimpleIndelibleMalloc_Free,
|
||||
.alloc = (void *) SimpleIndelibleMalloc_Get,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
//
|
||||
// Created by zemon on 14.07.2022.
|
||||
//
|
||||
|
||||
#ifndef PDM_FIR_TEST_simple_indelible_MALOCK_H
|
||||
#define PDM_FIR_TEST_simple_indelible_MALOCK_H
|
||||
|
||||
#include "stdlib.h"
|
||||
#include "stdbool.h"
|
||||
#include "stdint.h"
|
||||
#include "MemoryAllocationInterface.h"
|
||||
|
||||
|
||||
typedef struct {
|
||||
uint8_t *buffer;
|
||||
size_t size;
|
||||
size_t used;
|
||||
} tSimpleIndelibleMalloc;
|
||||
|
||||
|
||||
void SimpleIndelibleMalloc_Init(tSimpleIndelibleMalloc *env, uint8_t *buffer, size_t size);
|
||||
|
||||
void SimpleIndelibleMalloc_Clear(tSimpleIndelibleMalloc *env);
|
||||
|
||||
tMemAllocInterface SimpleIndelibleMalloc_GetInterface(tSimpleIndelibleMalloc *env);
|
||||
|
||||
|
||||
#endif //PDM_FIR_TEST_simple_indelible_MALOCK_H
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"dep": [
|
||||
{
|
||||
"type": "git",
|
||||
"provider": "NAVIGATOR_UVEOS_NATION_TELIT",
|
||||
"repo": "MemoryAllocationInterface"
|
||||
}
|
||||
],
|
||||
"cmake": {
|
||||
"inc_dirs": [
|
||||
"./"
|
||||
],
|
||||
"srcs": [
|
||||
"./**.c"
|
||||
]
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue