locked_list.h adds macros: locked_list_empty, locked_list_first_entry etc.

pull/37/merge
YuQing 2021-08-17 15:39:01 +08:00
parent c6b2c32fe2
commit ebe7d87ca4
2 changed files with 28 additions and 1 deletions

View File

@ -415,7 +415,7 @@ int fast_allocator_retry_reclaim(struct fast_allocator_context *acontext,
return EAGAIN;
}
for (i=0; i< acontext->allocator_array.count; i++)
for (i=0; i<acontext->allocator_array.count; i++)
{
if (fast_mblock_reclaim(&acontext->allocator_array.
allocators[i]->mblock, 0, &reclaim_count, NULL) == 0)

View File

@ -48,6 +48,15 @@ extern "C" {
PTHREAD_MUTEX_UNLOCK(&list->lock);
}
static inline int locked_list_empty(FCLockedList *list)
{
int empty;
PTHREAD_MUTEX_LOCK(&list->lock);
empty = fc_list_empty(&list->head);
PTHREAD_MUTEX_UNLOCK(&list->lock);
return empty;
}
static inline int locked_list_count(FCLockedList *list)
{
int count;
@ -57,6 +66,24 @@ extern "C" {
return count;
}
#define locked_list_first_entry(list, type, member, var) \
PTHREAD_MUTEX_LOCK(&(list)->lock); \
var = fc_list_first_entry(&(list)->head, type, member); \
PTHREAD_MUTEX_UNLOCK(&(list)->lock)
#define locked_list_last_entry(list, type, member, var) \
PTHREAD_MUTEX_LOCK(&(list)->lock); \
var = fc_list_last_entry(&(list)->head, type, member); \
PTHREAD_MUTEX_UNLOCK(&(list)->lock)
#define locked_list_pop(list, type, member, var) \
PTHREAD_MUTEX_LOCK(&(list)->lock); \
var = fc_list_first_entry(&(list)->head, type, member); \
if (var != NULL) { \
fc_list_del_init(&var->member); \
} \
PTHREAD_MUTEX_UNLOCK(&(list)->lock)
#ifdef __cplusplus
}
#endif