Skip to content

Commit 8b47b27

Browse files
committed
Use defined os_mutex_t in base_alloc.c
Signed-off-by: Lukasz Dorau <[email protected]>
1 parent 6b910ad commit 8b47b27

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

src/base_alloc/base_alloc.c

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#define MINIMUM_CHUNK_COUNT (128)
2020

2121
// alignment of the base allocator
22-
#define MEMORY_ALIGNMENT (8)
22+
#define MEMORY_ALIGNMENT (sizeof(uintptr_t))
2323

2424
typedef struct umf_ba_chunk_t umf_ba_chunk_t;
2525
typedef struct umf_ba_next_pool_t umf_ba_next_pool_t;
@@ -34,7 +34,7 @@ struct umf_ba_chunk_t {
3434
struct umf_ba_main_pool_meta_t {
3535
size_t pool_size; // size of each pool (argument of each ba_os_alloc() call)
3636
size_t chunk_size; // size of all memory chunks in this pool
37-
os_mutex_t *free_lock; // lock of free_list
37+
os_mutex_t free_lock; // lock of free_list
3838
umf_ba_chunk_t *free_list; // list of free chunks
3939
#ifndef NDEBUG
4040
size_t n_pools;
@@ -146,29 +146,26 @@ umf_ba_pool_t *umf_ba_create(size_t size) {
146146

147147
align_ptr_size((void **)&data_ptr, &size_left, MEMORY_ALIGNMENT);
148148

149-
// allocate and init free_lock
150-
pool->metadata.free_lock = util_mutex_init(data_ptr);
151-
if (!pool->metadata.free_lock) {
149+
// init free_lock
150+
os_mutex_t *mutex = util_mutex_init(&pool->metadata.free_lock);
151+
if (!mutex) {
152152
ba_os_free(pool, pool_size);
153153
return NULL;
154154
}
155155

156-
data_ptr += mutex_size; // free_lock is here
157-
size_left -= mutex_size; // for free_lock
158-
159156
pool->metadata.free_list = NULL;
160157
ba_divide_memory_into_chunks(pool, data_ptr, size_left);
161158

162159
return pool;
163160
}
164161

165162
void *umf_ba_alloc(umf_ba_pool_t *pool) {
166-
util_mutex_lock(pool->metadata.free_lock);
163+
util_mutex_lock(&pool->metadata.free_lock);
167164
if (pool->metadata.free_list == NULL) {
168165
umf_ba_next_pool_t *new_pool =
169166
(umf_ba_next_pool_t *)ba_os_alloc(pool->metadata.pool_size);
170167
if (!new_pool) {
171-
util_mutex_unlock(pool->metadata.free_lock);
168+
util_mutex_unlock(&pool->metadata.free_lock);
172169
return NULL;
173170
}
174171

@@ -194,7 +191,7 @@ void *umf_ba_alloc(umf_ba_pool_t *pool) {
194191
pool->metadata.n_allocs++;
195192
ba_debug_checks(pool);
196193
#endif /* NDEBUG */
197-
util_mutex_unlock(pool->metadata.free_lock);
194+
util_mutex_unlock(&pool->metadata.free_lock);
198195

199196
return chunk;
200197
}
@@ -206,14 +203,14 @@ void umf_ba_free(umf_ba_pool_t *pool, void *ptr) {
206203

207204
umf_ba_chunk_t *chunk = (umf_ba_chunk_t *)ptr;
208205

209-
util_mutex_lock(pool->metadata.free_lock);
206+
util_mutex_lock(&pool->metadata.free_lock);
210207
chunk->next = pool->metadata.free_list;
211208
pool->metadata.free_list = chunk;
212209
#ifndef NDEBUG
213210
pool->metadata.n_allocs--;
214211
ba_debug_checks(pool);
215212
#endif /* NDEBUG */
216-
util_mutex_unlock(pool->metadata.free_lock);
213+
util_mutex_unlock(&pool->metadata.free_lock);
217214
}
218215

219216
void umf_ba_destroy(umf_ba_pool_t *pool) {
@@ -230,6 +227,6 @@ void umf_ba_destroy(umf_ba_pool_t *pool) {
230227
ba_os_free(current_pool, size);
231228
}
232229

233-
util_mutex_destroy_not_free(pool->metadata.free_lock);
230+
util_mutex_destroy_not_free(&pool->metadata.free_lock);
234231
ba_os_free(pool, size);
235232
}

0 commit comments

Comments
 (0)