diff options
| author | Florian Fischer <florian.fl.fischer@fau.de> | 2020-05-06 16:56:32 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fl.fischer@fau.de> | 2020-06-02 11:18:47 +0200 |
| commit | 8174a918ea3b7cb216bf7ea98cfdc10661b5c37d (patch) | |
| tree | 0747ec3ccb9f8d7eeccfac35977fc17855ca3bbb /src/bumpptr_alloc.c | |
| parent | 8f52e8fc02dd235582f5961941bcd564e9a681cd (diff) | |
| download | allocbench-8174a918ea3b7cb216bf7ea98cfdc10661b5c37d.tar.gz allocbench-8174a918ea3b7cb216bf7ea98cfdc10661b5c37d.zip | |
make the whole project more python idiomatic
* rename src directory to allocbench
* make global variable names UPPERCASE
* format a lot of code using yapf
* use lowercase ld_preload and ld_library_path as Allocator members
* name expected Errors 'err' and don't raise a new Exception
* disable some pylint messages
Diffstat (limited to 'src/bumpptr_alloc.c')
| -rw-r--r-- | src/bumpptr_alloc.c | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/src/bumpptr_alloc.c b/src/bumpptr_alloc.c deleted file mode 100644 index ee2928a..0000000 --- a/src/bumpptr_alloc.c +++ /dev/null @@ -1,64 +0,0 @@ -#include <assert.h> -#include <errno.h> -#include <stddef.h> /* NULL, size_t */ -#include <stdint.h> /* uintptr_t */ -#include <stdio.h> /* fprintf */ -#include <sys/mman.h> /* mmap */ - -#define MIN_ALIGNMENT 16 - -#ifndef MEMSIZE -#define MEMSIZE 1024*4*1024*1024l -#endif - -#define unlikely(x) __builtin_expect((x),0) - -typedef struct bumpptr { - uintptr_t end; - uintptr_t ptr; -} bumpptr_t; - -__thread bumpptr_t* tsd = NULL; - -static inline void* bump_up(size_t size, size_t align) { - assert(align % 2 == 0); - - if (unlikely(tsd == NULL)) { - void* mem_start = mmap(NULL, MEMSIZE, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_HUGETLB, -1, 0); - if(mem_start == MAP_FAILED) { - perror("mmap"); - return NULL; - } - tsd = (bumpptr_t*)mem_start; - tsd->ptr = (uintptr_t)mem_start + sizeof(bumpptr_t); - tsd->end = (uintptr_t)mem_start + MEMSIZE; - } - - // align ptr; - uintptr_t aligned = (tsd->ptr + align - 1) & ~(align - 1); - - uintptr_t new_ptr = aligned + size; - if (new_ptr > tsd->end) { - errno = ENOMEM; - return NULL; - } else { - tsd->ptr = new_ptr; - return (void*)aligned; - } -} - -void* malloc(size_t size) { - return bump_up(size, MIN_ALIGNMENT); -} - -void free(__attribute__ ((unused)) void* ptr) { -} - -void* memalign(size_t alignment, size_t size) { - return bump_up(size, alignment); -} - -void malloc_stats() { - fprintf(stderr, "Bump pointer allocator by muhq\n"); - fprintf(stderr, "Memsize: %zu, start address: %p, bump pointer %p\n", MEMSIZE, tsd, tsd->ptr); -} |
