summaryrefslogtreecommitdiff
path: root/examples/main.c
blob: a288f1cae7d026e6441203fbd1c60ef4fed8393c (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
25
26
27
28
29
30
31
32
#include "buddy.h"
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <assert.h>
#include <unistd.h>
#include <stdio.h>

void get_random(uint8_t *dst, size_t count) {
    int fd = open("/dev/urandom", O_RDONLY);
    assert(count == read(fd, dst, count));
    close(fd);
}

void main() {
    struct buddy buddy;

    size_t region_size = 1024 * 1024;

    uint8_t magic[MAGIC_COOKIE_BYTES];
    get_random(magic, MAGIC_COOKIE_BYTES);
    init_buddy(malloc(region_size), region_size, magic, &buddy);
    memset(magic, 0, sizeof(magic));

    void *x = allocate(1024, &buddy);
    printf("Just allocated %p...\n", x);
    debug_buddy(&buddy);

    printf("Now liberating %p...\n", x);
    liberate(x, 1024, &buddy);
    debug_buddy(&buddy);
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback