Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 970dc0d8 authored by Atneya Nair's avatar Atneya Nair
Browse files

Add timing info to audioflinger dumpsys

Print start time, current time and startup time in dumpsys.

Test: adb shell dumpsys media.audio_flinger
Flag: EXEMPT logs only
Bug: 372070273
Change-Id: I92d26db90b22a403d5681ac3cfe33cf3bb983dc0
parent 0423af92
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -205,6 +205,7 @@ int main(int argc __unused, char **argv)
                  __func__, status, policyInfos.size());
        }
        const auto endTime = std::chrono::steady_clock::now();
        af->startupFinished();
        using FloatMillis = std::chrono::duration<float, std::milli>;
        const float timeTaken = std::chrono::duration_cast<FloatMillis>(
                endTime - startTime).count();
+20 −0
Original line number Diff line number Diff line
@@ -905,6 +905,26 @@ status_t AudioFlinger::dump(int fd, const Vector<String16>& args)
        // Unknown arg silently ignored
    }

    {
        std::string res;
        res.reserve(100);
        res += "Start begin: ";
        const auto startTimeStr = audio_utils_time_string_from_ns(mStartTime);
        res += startTimeStr.time;
        const auto startFinishedTime = getStartupFinishedTime();
        if (startFinishedTime != 0) {
            res += "\nStart end:   ";
            const auto startEndStr = audio_utils_time_string_from_ns(startFinishedTime);
            res += startEndStr.time;
        } else {
            res += "\nStartup not yet finished!";
        }
        const auto nowTimeStr = audio_utils_time_string_from_ns(audio_utils_get_real_time_ns());
        res += "\nNow:         ";
        res += nowTimeStr.time;
        res += "\n";
        writeStr(fd, res);
    }
    // get state of hardware lock
    {
        FallibleLockGuard l{hardwareMutex()};
+14 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
#include "IAfTrack.h"
#include "MelReporter.h"
#include "PatchCommandThread.h"
#include "audio_utils/clock.h"

// External classes
#include <audio_utils/mutex.h>
@@ -65,6 +66,11 @@ public:

    status_t resetReferencesForTest();

    // Called by main when startup finished -- for logging purposes only
    void startupFinished() {
        mStartupFinishedTime.store(audio_utils_get_real_time_ns(), std::memory_order_release);
    }

private:

    // ---- begin IAudioFlinger interface
@@ -420,6 +426,10 @@ private:

    sp<EffectsFactoryHalInterface> getEffectsFactory();

    int64_t getStartupFinishedTime() {
        return mStartupFinishedTime.load(std::memory_order_acquire);
    }

public:
    // TODO(b/292281786): Remove this when Oboeservice can get access to
    // openMmapStream through an IAudioFlinger handle directly.
@@ -803,6 +813,10 @@ private:

    // Local interface to AudioPolicyService, late inited, but logically const
    mediautils::atomic_sp<media::IAudioPolicyServiceLocal> mAudioPolicyServiceLocal;

    const int64_t mStartTime = audio_utils_get_real_time_ns();
    // Late-inited from main()
    std::atomic<int64_t> mStartupFinishedTime {};
};

// ----------------------------------------------------------------------------