[Sound-open-firmware] [RFC PATCH v2 17/29] Change macro definition and trace calling for comp_buffer.
yan.wang at linux.intel.com
yan.wang at linux.intel.com
Fri May 11 08:35:59 CEST 2018
From: Yan Wang <yan.wang at linux.intel.com>
It will use BUFFER trace class and component DMA trace API.
For trace calling of buffer_new(), NULL will be passed into trace
API because buffer_dev hasn't been initialized.
Signed-off-by: Yan Wang <yan.wang at linux.intel.com>
---
Test with:
CNL nocodec
SOF master: c1f2682c210201bbbc96fce7b382b25b90d19775
SOF-Tool master: 86fe688a2b4f68a1ce87e0951686be12a00f1a3c
https://github.com/plbossart/sound/tree/topic/sof-v4.14:
d09db67c5a9d6dfc85f700669fa2e43c678c8d51
---
src/audio/buffer.c | 12 ++++++------
src/include/sof/audio/buffer.h | 38 +++++++++++++++++++++++++++-----------
2 files changed, 33 insertions(+), 17 deletions(-)
diff --git a/src/audio/buffer.c b/src/audio/buffer.c
index 6aeb6a4..50e57dc 100644
--- a/src/audio/buffer.c
+++ b/src/audio/buffer.c
@@ -50,26 +50,26 @@ struct comp_buffer *buffer_new(struct sof_ipc_buffer *desc)
{
struct comp_buffer *buffer;
- trace_buffer("new");
+ trace_buffer(NULL, "new");
/* validate request */
if (desc->size == 0 || desc->size > HEAP_BUFFER_SIZE) {
- trace_buffer_error("ebg");
- trace_error_value(desc->size);
+ trace_buffer_error(NULL, "ebg");
+ trace_buffer_value(NULL, desc->size);
return NULL;
}
/* allocate new buffer */
buffer = rzalloc(RZONE_RUNTIME, SOF_MEM_CAPS_RAM, sizeof(*buffer));
if (buffer == NULL) {
- trace_buffer_error("ebN");
+ trace_buffer_error(NULL, "ebN");
return NULL;
}
buffer->addr = rballoc(RZONE_RUNTIME, desc->caps, desc->size);
if (buffer->addr == NULL) {
rfree(buffer);
- trace_buffer_error("ebm");
+ trace_buffer_error(NULL, "ebm");
return NULL;
}
@@ -93,7 +93,7 @@ struct comp_buffer *buffer_new(struct sof_ipc_buffer *desc)
/* free component in the pipeline */
void buffer_free(struct comp_buffer *buffer)
{
- trace_buffer("BFr");
+ trace_buffer(buffer, "BFr");
list_item_del(&buffer->source_list);
list_item_del(&buffer->sink_list);
diff --git a/src/include/sof/audio/buffer.h b/src/include/sof/audio/buffer.h
index 171f0a4..6109e93 100644
--- a/src/include/sof/audio/buffer.h
+++ b/src/include/sof/audio/buffer.h
@@ -43,9 +43,18 @@
#include <uapi/ipc.h>
/* pipeline tracing */
-#define trace_buffer(__e) trace_event(TRACE_CLASS_BUFFER, __e)
-#define trace_buffer_error(__e) trace_error(TRACE_CLASS_BUFFER, __e)
-#define tracev_buffer(__e) tracev_event(TRACE_CLASS_BUFFER, __e)
+#define trace_buffer(cb, __e) \
+ trace_buf_event(cb, NORMAL_LEVEL, TRACE_CLASS_BUFFER, __e)
+#define tracev_buffer(cb, __e) \
+ trace_buf_event(cb, VERBOSE_LEVEL, TRACE_CLASS_BUFFER, __e)
+#define trace_buffer_error(cb, __e) \
+ trace_buf_event_atomic(cb, ERROR_LEVEL, TRACE_CLASS_BUFFER, __e)
+#define trace_buffer_value(cb, x) \
+ trace_buf_value(cb, NORMAL_LEVEL, x)
+#define tracev_buffer_value(cb, x) \
+ trace_buf_value(cb, VERBOSE_LEVEL, x)
+#define trace_buffer_error_value(cb, x) \
+ trace_buf_value_atomic(cb, ERROR_LEVEL, x)
/* audio component buffer - connects 2 audio components together in pipeline */
struct comp_buffer {
@@ -109,10 +118,14 @@ static inline void comp_update_buffer_produce(struct comp_buffer *buffer,
spin_unlock_irq(&buffer->lock, flags);
- tracev_buffer("pro");
- tracev_value((buffer->avail << 16) | buffer->free);
- tracev_value((buffer->ipc_buffer.comp.id << 16) | buffer->size);
- tracev_value((buffer->r_ptr - buffer->addr) << 16 | (buffer->w_ptr - buffer->addr));
+ tracev_buffer(buffer, "pro");
+ tracev_buffer_value(buffer,
+ (buffer->avail << 16) | buffer->free);
+ tracev_buffer_value(buffer,
+ (buffer->ipc_buffer.comp.id << 16) | buffer->size);
+ tracev_buffer_value(buffer,
+ (buffer->r_ptr - buffer->addr) << 16 |
+ (buffer->w_ptr - buffer->addr));
}
/* called by a component after consuming data from this buffer */
@@ -142,10 +155,13 @@ static inline void comp_update_buffer_consume(struct comp_buffer *buffer,
spin_unlock_irq(&buffer->lock, flags);
- tracev_buffer("con");
- tracev_value((buffer->avail << 16) | buffer->free);
- tracev_value((buffer->ipc_buffer.comp.id << 16) | buffer->size);
- tracev_value((buffer->r_ptr - buffer->addr) << 16 | (buffer->w_ptr - buffer->addr));
+ tracev_buffer(buffer, "con");
+ tracev_buffer_value(buffer, (buffer->avail << 16) | buffer->free);
+ tracev_buffer_value(buffer,
+ (buffer->ipc_buffer.comp.id << 16) | buffer->size);
+ tracev_buffer_value(buffer,
+ (buffer->r_ptr - buffer->addr) << 16 |
+ (buffer->w_ptr - buffer->addr));
}
/* get the max number of bytes that can be copied between sink and source */
--
2.14.3
More information about the Sound-open-firmware
mailing list