aboutsummaryrefslogtreecommitdiff
path: root/lib/pbdrv/ext/freertos/pb-mem.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pbdrv/ext/freertos/pb-mem.c')
-rw-r--r--lib/pbdrv/ext/freertos/pb-mem.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/pbdrv/ext/freertos/pb-mem.c b/lib/pbdrv/ext/freertos/pb-mem.c
new file mode 100644
index 0000000..96c48d1
--- /dev/null
+++ b/lib/pbdrv/ext/freertos/pb-mem.c
@@ -0,0 +1,31 @@
+#include <FreeRTOS.h>
+
+#include "../../pb-mem.h"
+#include "../../pb-types.h"
+
+__weak inline void * pb_malloc(size_t sz) {
+ return pvPortMalloc(sz);
+}
+
+__weak inline void pb_free(void * ptr) {
+ vPortFree(ptr);
+}
+
+__weak inline void * pb_realloc(void * ptr, size_t sz) {
+ return NULL; // shit out of luck (don't use mpack_writer_init_growable)
+}
+
+__weak void * pb_memcpy(void * dest, const void * src, size_t sz) {
+ for (size_t offset = 0; offset < sz; offset++)
+ *((char*) dest + offset) = *((char*) src + offset);
+ return dest;
+}
+
+int pb_memcmp(const void * a, const void * b, size_t sz) {
+ for (size_t offset = 0; offset < sz; offset++) {
+ int diff = *((char*) a + offset) - *((char*) b + offset);
+ if (diff != 0) return diff;
+ }
+ return 0;
+}
+