From 427758aa4ca0b1fb2f1dc8cc9aacfe37dfdac586 Mon Sep 17 00:00:00 2001 From: Jyri Sarha Date: Fri, 26 Nov 2010 18:38:24 +0200 Subject: core: Add name to flist struct for more informative log messages PA_STATIC_FLIST_DECLARE macro sets the flist name automatically. --- src/pulsecore/flist.c | 10 ++++++++-- src/pulsecore/flist.h | 7 +++++-- 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/pulsecore/flist.c b/src/pulsecore/flist.c index 71feaa93..1867525b 100644 --- a/src/pulsecore/flist.c +++ b/src/pulsecore/flist.c @@ -48,6 +48,7 @@ struct pa_flist_elem { typedef struct pa_flist_elem pa_flist_elem; struct pa_flist { + const char *name; unsigned size; /* Stack that contains pointers stored into free list */ 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)); } -pa_flist *pa_flist_new(unsigned size) { +pa_flist *pa_flist_new_with_name(unsigned size, const char *name) { pa_flist *l; 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->name = name; l->size = size; pa_atomic_ptr_store(&l->stored, NULL); pa_atomic_ptr_store(&l->empty, NULL); @@ -97,6 +99,10 @@ pa_flist *pa_flist_new(unsigned size) { 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) { pa_assert(l); @@ -117,7 +123,7 @@ int pa_flist_push(pa_flist *l, void *p) { elem = stack_pop(&l->empty); if (elem == NULL) { 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; } pa_atomic_ptr_store(&elem->ptr, p); diff --git a/src/pulsecore/flist.h b/src/pulsecore/flist.h index 184e5992..7fb50359 100644 --- a/src/pulsecore/flist.h +++ b/src/pulsecore/flist.h @@ -32,8 +32,10 @@ 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); +/* 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); /* Please note that this routine might fail! */ @@ -49,7 +51,8 @@ void* pa_flist_pop(pa_flist*l); pa_once once; \ } name##_flist = { NULL, PA_ONCE_INIT }; \ 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) { \ pa_run_once(&name##_flist.once, name##_flist_init); \ -- cgit