Use audio tag for system tracing
Disabled by default; uncomment ATRACE_TAG to enable
Change-Id: I99af894022a859ee5644bd853cfd8a48e4735ff9
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index 8b7a48b..56a9942 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -19,6 +19,8 @@
#define LOG_TAG "AudioFlinger"
//#define LOG_NDEBUG 0
+//#define ATRACE_TAG ATRACE_TAG_AUDIO
+
#include <math.h>
#include <signal.h>
#include <sys/time.h>
@@ -27,6 +29,7 @@
#include <binder/IPCThreadState.h>
#include <binder/IServiceManager.h>
#include <utils/Log.h>
+#include <utils/Trace.h>
#include <binder/Parcel.h>
#include <binder/IPCThreadState.h>
#include <utils/String16.h>
@@ -2498,6 +2501,7 @@
if (!mStandby && delta > maxPeriod) {
mNumDelayedWrites++;
if ((now - lastWarning) > kWarningThrottleNs) {
+ ScopedTrace st(ATRACE_TAG, "underrun");
ALOGW("write blocked for %llu msecs, %d delayed writes, thread %p",
ns2ms(delta), mNumDelayedWrites, this);
lastWarning = now;
@@ -2593,7 +2597,9 @@
#define mBitShift 2 // FIXME
size_t count = mixBufferSize >> mBitShift;
+ Tracer::traceBegin(ATRACE_TAG, "write");
ssize_t framesWritten = mNormalSink->write(mMixBuffer, count);
+ Tracer::traceEnd(ATRACE_TAG);
if (framesWritten > 0) {
size_t bytesWritten = framesWritten << mBitShift;
mBytesWritten += bytesWritten;
diff --git a/services/audioflinger/FastMixer.cpp b/services/audioflinger/FastMixer.cpp
index d499f7a..1492a36 100644
--- a/services/audioflinger/FastMixer.cpp
+++ b/services/audioflinger/FastMixer.cpp
@@ -17,9 +17,12 @@
#define LOG_TAG "FastMixer"
//#define LOG_NDEBUG 0
+//#define ATRACE_TAG ATRACE_TAG_AUDIO
+
#include <sys/atomics.h>
#include <time.h>
#include <utils/Log.h>
+#include <utils/Trace.h>
#include <system/audio.h>
#ifdef FAST_MIXER_STATISTICS
#include <cpustats/CentralTendencyStatistics.h>
@@ -359,6 +362,7 @@
FastTrackDump *ftDump = &dumpState->mTracks[i];
uint32_t underruns = ftDump->mUnderruns;
if (framesReady < frameCount) {
+ ATRACE_INT("underrun", i);
ftDump->mUnderruns = (underruns + 2) | 1;
if (framesReady == 0) {
mixer->disable(name);
@@ -387,7 +391,9 @@
// FIXME write() is non-blocking and lock-free for a properly implemented NBAIO sink,
// but this code should be modified to handle both non-blocking and blocking sinks
dumpState->mWriteSequence++;
+ Tracer::traceBegin(ATRACE_TAG, "write");
ssize_t framesWritten = outputSink->write(mixBuffer, frameCount);
+ Tracer::traceEnd(ATRACE_TAG);
dumpState->mWriteSequence++;
if (framesWritten >= 0) {
ALOG_ASSERT(framesWritten <= frameCount);
@@ -437,6 +443,7 @@
}
}
if (sec > 0 || nsec > underrunNs) {
+ ScopedTrace st(ATRACE_TAG, "underrun");
// FIXME only log occasionally
ALOGV("underrun: time since last cycle %d.%03ld sec",
(int) sec, nsec / 1000000L);