mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-02 09:01:46 -05:00
core: Add name to flist struct for more informative log messages
PA_STATIC_FLIST_DECLARE macro sets the flist name automatically.
This commit is contained in:
parent
851a188cf6
commit
427758aa4c
2 changed files with 13 additions and 4 deletions
|
|
@ -48,6 +48,7 @@ struct pa_flist_elem {
|
||||||
typedef struct pa_flist_elem pa_flist_elem;
|
typedef struct pa_flist_elem pa_flist_elem;
|
||||||
|
|
||||||
struct pa_flist {
|
struct pa_flist {
|
||||||
|
const char *name;
|
||||||
unsigned size;
|
unsigned size;
|
||||||
/* Stack that contains pointers stored into free list */
|
/* Stack that contains pointers stored into free list */
|
||||||
pa_atomic_ptr_t stored;
|
pa_atomic_ptr_t stored;
|
||||||
|
|
@ -79,7 +80,7 @@ static void stack_push(pa_atomic_ptr_t *list, pa_flist_elem *new_elem) {
|
||||||
} while (!pa_atomic_ptr_cmpxchg(list, next, new_elem));
|
} while (!pa_atomic_ptr_cmpxchg(list, next, new_elem));
|
||||||
}
|
}
|
||||||
|
|
||||||
pa_flist *pa_flist_new(unsigned size) {
|
pa_flist *pa_flist_new_with_name(unsigned size, const char *name) {
|
||||||
pa_flist *l;
|
pa_flist *l;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
|
|
@ -88,6 +89,7 @@ pa_flist *pa_flist_new(unsigned size) {
|
||||||
|
|
||||||
l = pa_xmalloc0(sizeof(pa_flist) + sizeof(pa_flist_elem) * size);
|
l = pa_xmalloc0(sizeof(pa_flist) + sizeof(pa_flist_elem) * size);
|
||||||
|
|
||||||
|
l->name = name;
|
||||||
l->size = size;
|
l->size = size;
|
||||||
pa_atomic_ptr_store(&l->stored, NULL);
|
pa_atomic_ptr_store(&l->stored, NULL);
|
||||||
pa_atomic_ptr_store(&l->empty, NULL);
|
pa_atomic_ptr_store(&l->empty, NULL);
|
||||||
|
|
@ -97,6 +99,10 @@ pa_flist *pa_flist_new(unsigned size) {
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pa_flist *pa_flist_new(unsigned size) {
|
||||||
|
return pa_flist_new_with_name(size, "unknown");
|
||||||
|
}
|
||||||
|
|
||||||
void pa_flist_free(pa_flist *l, pa_free_cb_t free_cb) {
|
void pa_flist_free(pa_flist *l, pa_free_cb_t free_cb) {
|
||||||
pa_assert(l);
|
pa_assert(l);
|
||||||
|
|
||||||
|
|
@ -117,7 +123,7 @@ int pa_flist_push(pa_flist *l, void *p) {
|
||||||
elem = stack_pop(&l->empty);
|
elem = stack_pop(&l->empty);
|
||||||
if (elem == NULL) {
|
if (elem == NULL) {
|
||||||
if (pa_log_ratelimit())
|
if (pa_log_ratelimit())
|
||||||
pa_log_debug("flist is full (don't worry)");
|
pa_log_debug("%s flist is full (don't worry)", l->name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
pa_atomic_ptr_store(&elem->ptr, p);
|
pa_atomic_ptr_store(&elem->ptr, p);
|
||||||
|
|
|
||||||
|
|
@ -32,8 +32,10 @@
|
||||||
|
|
||||||
typedef struct pa_flist pa_flist;
|
typedef struct pa_flist pa_flist;
|
||||||
|
|
||||||
/* Size is required to be a power of two, or 0 for the default size */
|
|
||||||
pa_flist * pa_flist_new(unsigned size);
|
pa_flist * pa_flist_new(unsigned size);
|
||||||
|
/* Freeing the name is responsibility of caller. The name is only used
|
||||||
|
* for debug printing. */
|
||||||
|
pa_flist * pa_flist_new_with_name(unsigned size, const char *name);
|
||||||
void pa_flist_free(pa_flist *l, pa_free_cb_t free_cb);
|
void pa_flist_free(pa_flist *l, pa_free_cb_t free_cb);
|
||||||
|
|
||||||
/* Please note that this routine might fail! */
|
/* Please note that this routine might fail! */
|
||||||
|
|
@ -49,7 +51,8 @@ void* pa_flist_pop(pa_flist*l);
|
||||||
pa_once once; \
|
pa_once once; \
|
||||||
} name##_flist = { NULL, PA_ONCE_INIT }; \
|
} name##_flist = { NULL, PA_ONCE_INIT }; \
|
||||||
static void name##_flist_init(void) { \
|
static void name##_flist_init(void) { \
|
||||||
name##_flist.flist = pa_flist_new(size); \
|
name##_flist.flist = \
|
||||||
|
pa_flist_new_with_name(size, __FILE__ ": " #name); \
|
||||||
} \
|
} \
|
||||||
static inline pa_flist* name##_flist_get(void) { \
|
static inline pa_flist* name##_flist_get(void) { \
|
||||||
pa_run_once(&name##_flist.once, name##_flist_init); \
|
pa_run_once(&name##_flist.once, name##_flist_init); \
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue