You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
938 B
40 lines
938 B
/* |
|
* Copyright (c) 2025 Croxel Inc. |
|
* Copyright (c) 2025 CogniPilot Foundation |
|
* |
|
* SPDX-License-Identifier: Apache-2.0 |
|
*/ |
|
|
|
#include <stddef.h> |
|
#include <zephyr/kernel.h> |
|
#include <zephyr/sys/check.h> |
|
|
|
#define DT_DRV_COMPAT brcm_afbr_s50 |
|
#define NUM_AFBR_INST DT_NUM_INST_STATUS_OKAY(DT_DRV_COMPAT) |
|
|
|
BUILD_ASSERT(NUM_AFBR_INST > 0, "Invalid number of AFBR-S50 instances"); |
|
|
|
/** Defined separate memslab to isolate library from the other components. |
|
* Through debugging, the library requests an initial allocation of ~4-KiB, |
|
* which is why the total pool is sized to 8-KiB per instance. |
|
*/ |
|
K_MEM_SLAB_DEFINE(argus_memslab, 64, 128 * NUM_AFBR_INST, sizeof(void *)); |
|
|
|
void *Argus_Malloc(size_t size) |
|
{ |
|
void *ptr = NULL; |
|
int err; |
|
|
|
err = k_mem_slab_alloc(&argus_memslab, &ptr, K_NO_WAIT); |
|
|
|
CHECKIF(err != 0 || ptr == NULL) { |
|
return NULL; |
|
} |
|
|
|
return ptr; |
|
} |
|
|
|
void Argus_Free(void *ptr) |
|
{ |
|
k_mem_slab_free(&argus_memslab, ptr); |
|
}
|
|
|