diff --git a/src/arena.c b/src/arena.c index 397ea15..0434b3e 100644 --- a/src/arena.c +++ b/src/arena.c @@ -1,14 +1,13 @@ - #include "arena.h" #include "alloc_backend.h" #include #include -#include #define ARENA_SIZE ((size_t)(128*sysconf(_SC_PAGE_SIZE))) + /* * Allocates and returns new arena */ @@ -21,15 +20,15 @@ struct arena* arena_new() if (p == NULL) return NULL; - struct arena a = { + arena_t *a = (arena_t*)p; + + *a = (arena_t){ .begin = p + sizeof(struct arena), .next = p + sizeof(struct arena), .cap = size }; - memcpy(p, &a, sizeof a); - - return (struct arena*)p; + return (arena_t*)a; } diff --git a/src/arena.h b/src/arena.h index 7ba953e..13abd11 100644 --- a/src/arena.h +++ b/src/arena.h @@ -2,18 +2,17 @@ #ifndef ARENA_H #define ARENA_H - #include // ptrdiff_t -struct arena { +typedef struct arena { unsigned char *begin, *next; ptrdiff_t cap; -}; +} arena_t; -struct arena* arena_new(); -void arena_reset(struct arena *a); -void* arena_alloc(struct arena *a, size_t len); +arena_t* arena_new(); +void arena_reset(arena_t *a); +void* arena_alloc(arena_t *a, size_t len); #endif