| /* |
| * 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); |
| } |