diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..cdcea7e --- /dev/null +++ b/.clang-format @@ -0,0 +1,2 @@ + +BasedOnStyle: WebKit diff --git a/src/alloc_backend.c b/src/alloc_backend.c index 1657cbb..6da4ffe 100644 --- a/src/alloc_backend.c +++ b/src/alloc_backend.c @@ -13,15 +13,14 @@ */ void* call_alloc_backend(size_t size) { - void *p = mmap( - NULL, - size, - PROT_READ | PROT_WRITE, - MAP_ANONYMOUS | MAP_PRIVATE, - -1, /* man mmap(2): "[...], some implementations require fd to be - -1 if MAP_ANONYMOUS is specified [...]" */ - 0 - ); + void* p = mmap( + NULL, + size, + PROT_READ | PROT_WRITE, + MAP_ANONYMOUS | MAP_PRIVATE, + -1, /* man mmap(2): "[...], some implementations require fd to be + -1 if MAP_ANONYMOUS is specified [...]" */ + 0); if (p == MAP_FAILED) return NULL; diff --git a/src/arena.c b/src/arena.c index 4174865..375e185 100644 --- a/src/arena.c +++ b/src/arena.c @@ -5,7 +5,7 @@ #include #include -#define ARENA_SIZE ((size_t)(128*sysconf(_SC_PAGE_SIZE))) +#define ARENA_SIZE ((size_t)(128 * sysconf(_SC_PAGE_SIZE))) typedef unsigned char byte; @@ -16,38 +16,36 @@ struct arena* arena_new() { size_t size = ARENA_SIZE; - byte *p = call_alloc_backend(size); + byte* p = call_alloc_backend(size); if (p == NULL) return NULL; - arena_t *a = (arena_t*)p; + arena_t* a = (arena_t*)p; - *a = (arena_t){ + *a = (arena_t) { .begin = p + sizeof(struct arena), - .next = p + sizeof(struct arena), - .cap = size - sizeof(struct arena) + .next = p + sizeof(struct arena), + .cap = size - sizeof(struct arena) }; return (arena_t*)a; } - /* * Frees all memory in arena */ -void arena_reset(struct arena *a) +void arena_reset(struct arena* a) { a->next = a->begin; } - /* * Allocate new memory using arena */ -void* arena_alloc(struct arena *a, size_t len) +void* arena_alloc(struct arena* a, size_t len) { - void *p = a->next; + void* p = a->next; a->next = (byte*)(a->next) + len; if ((byte*)(a->next) > (byte*)(a->begin) + a->cap) { @@ -57,4 +55,3 @@ void* arena_alloc(struct arena *a, size_t len) return p; } - diff --git a/src/arena.h b/src/arena.h index fa0f139..7b41151 100644 --- a/src/arena.h +++ b/src/arena.h @@ -6,13 +6,12 @@ typedef struct arena { void *begin, - *next; + *next; size_t cap; } __attribute__((aligned(sizeof(void*)))) arena_t; arena_t* arena_new(); -void arena_reset(arena_t *a); -void* arena_alloc(arena_t *a, size_t len); - +void arena_reset(arena_t* a); +void* arena_alloc(arena_t* a, size_t len); #endif diff --git a/src/test_arena.c b/src/test_arena.c index 208f8e4..2209ae7 100644 --- a/src/test_arena.c +++ b/src/test_arena.c @@ -1,6 +1,5 @@ - // _start test_arena_alloc.c #include "arena.h" @@ -9,7 +8,7 @@ #include #include -static struct arena *default_arena = NULL; +static struct arena* default_arena = NULL; int main() { @@ -19,14 +18,17 @@ int main() err(errno, "failed to allocate arena"); } - printf("\ntest 1: %s", "attempt to allocate arena->cap x 1 byte"); + printf("\nAttempt to do `arena->cap` allocations of 1 byte"); - for (size_t i = 0; i < default_arena->cap; i++) { - volatile void *c = arena_alloc(default_arena, 1); - if (c == NULL) { - err(EXIT_FAILURE, "failed to allocate memory"); - } - } + for (size_t i = 0; i < default_arena->cap; i++) { + char* c = arena_alloc(default_arena, 1); + *c = i & 0xff; + if (c == NULL) { + err(EXIT_FAILURE, "failed to allocate memory"); + } + } + + printf("\n OK"); return 0; }