[pulseaudio-discuss] [PATCH 2/5] core: Add name to flist struct for more informative log messages
oku at iki.fi
oku at iki.fi
Fri Nov 26 08:38:24 PST 2010
From: Jyri Sarha <jyri.sarha at nokia.com>
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(-)
diff --git a/src/pulsecore/flist.c b/src/pulsecore/flist.c
index 71feaa9..1867525 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 184e599..131f952 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); \
--
1.7.1
More information about the pulseaudio-discuss
mailing list