summaryrefslogtreecommitdiff
path: root/malloc/my_recycler/recycler.h
blob: bff70ef3d5841f5cf59e108de1dc47e5b7740b7e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef RECYCLER_H
#define RECYCLER_H

#include <stddef.h>

struct recycler
{
    size_t block_size;
    size_t capacity; // number of blocks in the chunk
    void *chunk; // memory chunk containing all blocks
    void *free; // address of the first free block of the free list
};

struct free_list
{
    struct free_list *next; // next free block
};

struct recycler *recycler_create(size_t block_size, size_t total_size);
void recycler_destroy(struct recycler *r);
void *recycler_allocate(struct recycler *r);
void recycler_free(struct recycler *r, void *block);

#endif /* !RECYCLER_H */