Changeset 8137d36 in mainline
- Timestamp:
- 2024-12-23T12:00:16Z (5 months ago)
- Children:
- eb31781
- Parents:
- 37a9c1e
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/hr/fge.c
r37a9c1e r8137d36 59 59 60 60 static void *hr_fpool_make_storage(hr_fpool_t *, ssize_t *); 61 static void hr_fpool_group_epilogue(hr_fpool_t *); 61 62 static errno_t fge_fibril(void *); 62 63 static errno_t wu_queue_init(wu_queue_t *, size_t); … … 183 184 } 184 185 185 static void *hr_fpool_make_storage(hr_fpool_t *pool, ssize_t *rmemslot)186 {187 fibril_mutex_lock(&pool->lock);188 ssize_t memslot = hr_fpool_get_free_slot(pool);189 assert(memslot != -1);190 191 bitmap_set(&pool->bitmap, memslot, 1);192 193 fibril_mutex_unlock(&pool->lock);194 195 if (rmemslot)196 *rmemslot = memslot;197 198 return pool->wu_storage + pool->wu_size * memslot;199 }200 201 186 hr_fgroup_t *hr_fgroup_create(hr_fpool_t *parent, size_t wu_cnt) 202 187 { … … 225 210 size_t taking = parent->wu_storage_free_count; 226 211 result->own_mem = malloc(parent->wu_size * (wu_cnt - taking)); 212 if (result->own_mem == NULL) 213 goto bad; 227 214 result->reserved_cnt = taking; 228 215 parent->wu_storage_free_count = 0; 229 if (result->own_mem == NULL)230 goto bad;231 216 } 232 217 … … 313 298 } 314 299 315 static void hr_fpool_group_epilogue(hr_fpool_t *pool)316 {317 fibril_mutex_lock(&pool->lock);318 319 pool->active_groups--;320 if (pool->active_groups == 0)321 fibril_condvar_signal(&pool->all_wus_done);322 323 fibril_mutex_unlock(&pool->lock);324 }325 326 300 errno_t hr_fgroup_wait(hr_fgroup_t *group, size_t *rokay, size_t *rfailed) 327 301 { … … 355 329 356 330 return rc; 331 } 332 333 static void *hr_fpool_make_storage(hr_fpool_t *pool, ssize_t *rmemslot) 334 { 335 fibril_mutex_lock(&pool->lock); 336 ssize_t memslot = hr_fpool_get_free_slot(pool); 337 assert(memslot != -1); 338 339 bitmap_set(&pool->bitmap, memslot, 1); 340 341 fibril_mutex_unlock(&pool->lock); 342 343 if (rmemslot) 344 *rmemslot = memslot; 345 346 return pool->wu_storage + pool->wu_size * memslot; 347 } 348 349 static void hr_fpool_group_epilogue(hr_fpool_t *pool) 350 { 351 fibril_mutex_lock(&pool->lock); 352 353 pool->active_groups--; 354 if (pool->active_groups == 0) 355 fibril_condvar_signal(&pool->all_wus_done); 356 357 fibril_mutex_unlock(&pool->lock); 357 358 } 358 359
Note:
See TracChangeset
for help on using the changeset viewer.