Arax -8d09c51940345c86062e8ef2427c705ae66e5926
A Runtime Framework for Decoupling Applications from Heterogeneous Accelerators
Loading...
Searching...
No Matches
bitmap.h
Go to the documentation of this file.
1#ifndef UTILS_BITMAP_HEADER
2#define UTILS_BITMAP_HEADER
3#include "spinlock.h"
4#include <stddef.h>
5
6typedef struct utils_bitmap
7{
9 uint64_t * free_p;
10 uint64_t * end;
11 size_t used_bits;
12 size_t size_bits;
13 uint64_t bits[];
15
16#define UTILS_BITMAP_CALC_BYTES(BITS) ((sizeof(utils_bitmap_s) + sizeof(uint64_t) * ((BITS + 63) / 64)))
17
18#define BITMAP_NOT_FOUND ((size_t) -1)
19
20#ifdef __cplusplus
21extern "C" {
22#endif /* ifdef __cplusplus */
23
33utils_bitmap_s* utils_bitmap_init(void *mem, size_t size_bits);
34
42
50
60
67size_t utils_bitmap_alloc_bits(utils_bitmap_s *bmp, size_t bits);
68
76void utils_bitmap_free_bits(utils_bitmap_s *bmp, size_t start, size_t bits);
77
89
98#ifdef __cplusplus
99}
100#endif /* ifdef __cplusplus */
101
102#endif // ifndef UTILS_BITMAP_HEADER
struct utils_bitmap utils_bitmap_s
size_t utils_bitmap_alloc_bits(utils_bitmap_s *bmp, size_t bits)
Definition bitmap.c:217
utils_bitmap_s * utils_bitmap_init(void *mem, size_t size_bits)
Definition bitmap.c:25
void utils_bitmap_free_bits(utils_bitmap_s *bmp, size_t start, size_t bits)
Definition bitmap.c:255
size_t utils_bitmap_free(utils_bitmap_s *bmp)
Definition bitmap.c:53
size_t utils_bitmap_count_allocated(utils_bitmap_s *bmp)
Definition bitmap.c:298
size_t utils_bitmap_used(utils_bitmap_s *bmp)
Definition bitmap.c:48
size_t utils_bitmap_size(utils_bitmap_s *bmp)
Definition bitmap.c:43
void utils_bitmap_print_bits(utils_bitmap_s *bmp)
Definition bitmap.c:311
volatile uint32_t utils_spinlock
Definition spinlock.h:10
uint64_t * end
Definition bitmap.h:10
utils_spinlock lock
Definition bitmap.h:8
size_t used_bits
Definition bitmap.h:11
size_t size_bits
Definition bitmap.h:12
uint64_t * free_p
Definition bitmap.h:9
uint64_t bits[]
Definition bitmap.h:13