-static void* mm_fake_calloc(size_t nmemb, size_t size) { return NULL; }
-static void* mm_fake_malloc(size_t n) { return NULL; }
-static void* mm_fake_realloc(void *p, size_t s) { return NULL; }
+static void* mm_fake_malloc(size_t n)
+{
+ // How many uint64_t do w need?
+ size_t count = n / sizeof(uint64_t);
+ if (n % sizeof(uint64_t))
+ count++;
+ // Check that we have enough available memory:
+ if (fake_alloc_index + count >= BUFFER_SIZE)
+ exit(127);
+ // Allocate it:
+ uint64_t* res = buffer + fake_alloc_index;
+ fake_alloc_index += count;
+ return res;
+}
+
+static void* mm_fake_calloc(size_t nmemb, size_t size)
+{
+ // This is fresh .bss data, we don't need to clear it:
+ size_t n = nmemb * size;
+ return mm_fake_malloc(n);
+}
+
+static void* mm_fake_realloc(XBT_ATTRIB_UNUSED void* p, size_t s)
+{
+ return mm_fake_malloc(s);
+}
+
+static void mm_fake_free(XBT_ATTRIB_UNUSED void* p)
+{
+ // Nothing to do
+}