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

Commit 28492108 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "AidlUtils: update AUGMENT_LOG to support variable arguments" into main

parents 09de3463 35665b1a
Loading
Loading
Loading
Loading
+0 −26
Original line number Diff line number Diff line
@@ -25,32 +25,6 @@

namespace android {

/*
 * Helper macro to add instance name, function name in logs
 * classes should provide getInstanceName and getClassName API to use these macros.
 * print function names along with instance name.
 *
 * Usage:
 *  AUGMENT_LOG(I, "hello!");
 *  AUGMENT_LOG(W, "value: %d", value);
 *
 * AUGMENT_LOG_IF(D, value < 0, "negative");
 * AUGMENT_LOG_IF(E, value < 0, "bad value: %d", value);
 */

#define AUGMENT_LOG(level, ...)                                                              \
    ALOG##level("[%s] %s: " __android_second(0, __VA_ARGS__, ""), getInstanceName().c_str(), \
                __func__ __android_rest(__VA_ARGS__))

#define AUGMENT_LOG_IF(level, cond, ...)                                     \
    ALOG##level##_IF(cond, "[%s] %s: " __android_second(0, __VA_ARGS__, ""), \
                     getInstanceName().c_str(), __func__ __android_rest(__VA_ARGS__))
// Used to register an entry into the function
#define LOG_ENTRY() ALOGD("[%s] %s", getInstanceName().c_str(), __func__)

// entry logging as verbose level
#define LOG_ENTRY_V() ALOGV("[%s] %s", getInstanceName().c_str(), __func__)

class HalDeathHandler {
  public:
    static HalDeathHandler& getInstance();
+22 −0
Original line number Diff line number Diff line
@@ -32,6 +32,28 @@

namespace android {

/*
 * Helper macro to add instance name, function name in logs
 * classes should provide getInstanceName API to use these macros.
 * print function names along with instance name.
 *
 * Usage:
 *  AUGMENT_LOG(D);
 *  AUGMENT_LOG(I, "hello!");
 *  AUGMENT_LOG(W, "value: %d", value);
 *
 *  AUGMENT_LOG_IF(D, value < 0, "negative");
 *  AUGMENT_LOG_IF(E, value < 0, "bad value: %d", value);
 */

#define AUGMENT_LOG(level, ...)                                                  \
    ALOG##level("[%s] %s" __VA_OPT__(": " __android_second(0, __VA_ARGS__, "")), \
                getInstanceName().c_str(), __func__ __VA_OPT__(__android_rest(__VA_ARGS__)))

#define AUGMENT_LOG_IF(level, cond, ...)                                                    \
    ALOG##level##_IF(cond, "[%s] %s" __VA_OPT__(": " __android_second(0, __VA_ARGS__, "")), \
                     getInstanceName().c_str(), __func__ __VA_OPT__(__android_rest(__VA_ARGS__)))

class Args {
  public:
    explicit Args(const Vector<String16>& args)
+25 −24
Original line number Diff line number Diff line
@@ -140,7 +140,7 @@ status_t DeviceHalAidl::getAudioRoutes(std::vector<media::AudioRoute> *routes) {
}

status_t DeviceHalAidl::getSupportedModes(std::vector<media::audio::common::AudioMode> *modes) {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
    RETURN_IF_TELEPHONY_NOT_INIT(INVALID_OPERATION);
@@ -164,7 +164,7 @@ status_t DeviceHalAidl::getSupportedDevices(uint32_t*) {
}

status_t DeviceHalAidl::initCheck() {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
    std::lock_guard l(mLock);
@@ -196,7 +196,7 @@ status_t DeviceHalAidl::setMasterVolume(float volume) {
}

status_t DeviceHalAidl::getMasterVolume(float *volume) {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
    if (volume == nullptr) {
@@ -227,7 +227,7 @@ status_t DeviceHalAidl::setMicMute(bool state) {
}

status_t DeviceHalAidl::getMicMute(bool *state) {
    LOG_ENTRY();
    AUGMENT_LOG(D);

    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
@@ -247,7 +247,7 @@ status_t DeviceHalAidl::setMasterMute(bool state) {
}

status_t DeviceHalAidl::getMasterMute(bool *state) {
    LOG_ENTRY();
    AUGMENT_LOG(D);

    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
@@ -306,7 +306,7 @@ status_t DeviceHalAidl::getParameters(const String8& keys, String8 *values) {
}

status_t DeviceHalAidl::getInputBufferSize(struct audio_config* config, size_t* size) {
    LOG_ENTRY();
    AUGMENT_LOG(D);

    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
@@ -462,6 +462,7 @@ status_t DeviceHalAidl::openOutputStream(
        sp<StreamOutHalInterface>* outStream,
        const std::vector<playback_track_metadata_v7_t>& sourceMetadata) {
    AUGMENT_LOG(D, "handle: %d devices %0x flags %0x", handle, devices, flags);

    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
    if (outStream == nullptr || config == nullptr) {
@@ -611,7 +612,7 @@ status_t DeviceHalAidl::openInputStream(
}

status_t DeviceHalAidl::supportsAudioPatches(bool* supportsPatches) {
    LOG_ENTRY_V();
    AUGMENT_LOG(V);
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
    if (supportsPatches == nullptr) {
        AUGMENT_LOG(E, "uninitialized supportsPatches");
@@ -727,7 +728,7 @@ status_t DeviceHalAidl::releaseAudioPatch(audio_patch_handle_t patch) {
}

status_t DeviceHalAidl::getAudioPort(struct audio_port* port) {
    LOG_ENTRY_V();
    AUGMENT_LOG(V);
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
    if (port == nullptr) {
        AUGMENT_LOG(E, "port not initialized");
@@ -740,7 +741,7 @@ status_t DeviceHalAidl::getAudioPort(struct audio_port* port) {
}

status_t DeviceHalAidl::getAudioPort(struct audio_port_v7 *port) {
    LOG_ENTRY();
    AUGMENT_LOG(D);

    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
@@ -772,7 +773,7 @@ status_t DeviceHalAidl::getAudioPort(struct audio_port_v7 *port) {

status_t DeviceHalAidl::getAudioMixPort(const struct audio_port_v7 *devicePort,
                                        struct audio_port_v7 *mixPort) {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);

@@ -796,7 +797,7 @@ status_t DeviceHalAidl::getAudioMixPort(const struct audio_port_v7 *devicePort,
}

status_t DeviceHalAidl::setAudioPortConfig(const struct audio_port_config* config) {
    LOG_ENTRY();
    AUGMENT_LOG(D);

    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
@@ -815,7 +816,7 @@ status_t DeviceHalAidl::setAudioPortConfig(const struct audio_port_config* confi
}

MicrophoneInfoProvider::Info const* DeviceHalAidl::getMicrophoneInfo() {
    LOG_ENTRY();
    AUGMENT_LOG(D);

    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT({});
@@ -842,7 +843,7 @@ MicrophoneInfoProvider::Info const* DeviceHalAidl::getMicrophoneInfo() {

status_t DeviceHalAidl::getMicrophones(
        std::vector<audio_microphone_characteristic_t>* microphones) {
    LOG_ENTRY();
    AUGMENT_LOG(D);

    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
@@ -866,7 +867,7 @@ status_t DeviceHalAidl::getMicrophones(

status_t DeviceHalAidl::addDeviceEffect(
        const struct audio_port_config *device, sp<EffectHalInterface> effect) {
    LOG_ENTRY();
    AUGMENT_LOG(D);

    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
@@ -899,7 +900,7 @@ status_t DeviceHalAidl::addDeviceEffect(
}
status_t DeviceHalAidl::removeDeviceEffect(
        const struct audio_port_config *device, sp<EffectHalInterface> effect) {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
    if (device == nullptr || effect == nullptr) {
@@ -931,7 +932,7 @@ status_t DeviceHalAidl::removeDeviceEffect(
status_t DeviceHalAidl::getMmapPolicyInfos(
        media::audio::common::AudioMMapPolicyType policyType,
        std::vector<media::audio::common::AudioMMapPolicyInfo>* policyInfos) {
    LOG_ENTRY();
    AUGMENT_LOG(D);

    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
@@ -953,7 +954,7 @@ status_t DeviceHalAidl::getMmapPolicyInfos(
}

int32_t DeviceHalAidl::getAAudioMixerBurstCount() {
    LOG_ENTRY();
    AUGMENT_LOG(D);

    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
@@ -965,7 +966,7 @@ int32_t DeviceHalAidl::getAAudioMixerBurstCount() {
}

int32_t DeviceHalAidl::getAAudioHardwareBurstMinUsec() {
    LOG_ENTRY();
    AUGMENT_LOG(D);

    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
@@ -977,7 +978,7 @@ int32_t DeviceHalAidl::getAAudioHardwareBurstMinUsec() {
}

error::Result<audio_hw_sync_t> DeviceHalAidl::getHwAvSync() {
    LOG_ENTRY();
    AUGMENT_LOG(D);

    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
@@ -994,7 +995,7 @@ status_t DeviceHalAidl::dump(int fd, const Vector<String16>& args) {
}

status_t DeviceHalAidl::supportsBluetoothVariableLatency(bool* supports) {
    LOG_ENTRY();
    AUGMENT_LOG(D);

    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
@@ -1006,7 +1007,7 @@ status_t DeviceHalAidl::supportsBluetoothVariableLatency(bool* supports) {

status_t DeviceHalAidl::getSoundDoseInterface([[maybe_unused]] const std::string& module,
                                              ::ndk::SpAIBinder* soundDoseBinder) {
    LOG_ENTRY_V();
    AUGMENT_LOG(V);
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);

    if (soundDoseBinder == nullptr) {
@@ -1028,7 +1029,7 @@ status_t DeviceHalAidl::getSoundDoseInterface([[maybe_unused]] const std::string
}

status_t DeviceHalAidl::prepareToDisconnectExternalDevice(const struct audio_port_v7* port) {
    LOG_ENTRY_V();
    AUGMENT_LOG(V);
    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
    if (port == nullptr) {
@@ -1067,7 +1068,7 @@ status_t DeviceHalAidl::prepareToDisconnectExternalDevice(const struct audio_por
}

status_t DeviceHalAidl::setConnectedState(const struct audio_port_v7 *port, bool connected) {
    LOG_ENTRY_V();
    AUGMENT_LOG(V);
    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
    if (port == nullptr) {
@@ -1099,7 +1100,7 @@ status_t DeviceHalAidl::setConnectedState(const struct audio_port_v7 *port, bool
}

status_t DeviceHalAidl::setSimulateDeviceConnections(bool enabled) {
    LOG_ENTRY_V();
    AUGMENT_LOG(V);
    TIME_CHECK();
    RETURN_IF_MODULE_NOT_INIT(NO_INIT);
    {
+26 −26
Original line number Diff line number Diff line
@@ -89,7 +89,7 @@ StreamHalAidl::StreamHalAidl(std::string_view className, bool isInput, const aud
                           mContext.getBufferDurationMs(mConfig.sample_rate))
                  * NANOS_PER_MILLISECOND)
{
    LOG_ENTRY();
    AUGMENT_LOG(D);
    {
        std::lock_guard l(mLock);
        mLastReply.latencyMs = nominalLatency;
@@ -104,7 +104,7 @@ StreamHalAidl::StreamHalAidl(std::string_view className, bool isInput, const aud
}

StreamHalAidl::~StreamHalAidl() {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    if (mStream != nullptr) {
        ndk::ScopedAStatus status = mStream->close();
        AUGMENT_LOG_IF(E, !status.isOk(), "status %s", status.getDescription().c_str());
@@ -112,7 +112,7 @@ StreamHalAidl::~StreamHalAidl() {
}

status_t StreamHalAidl::getBufferSize(size_t *size) {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    if (size == nullptr) {
        return BAD_VALUE;
    }
@@ -126,7 +126,7 @@ status_t StreamHalAidl::getBufferSize(size_t *size) {
}

status_t StreamHalAidl::getAudioProperties(audio_config_base_t *configBase) {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    if (configBase == nullptr) {
        return BAD_VALUE;
    }
@@ -136,7 +136,7 @@ status_t StreamHalAidl::getAudioProperties(audio_config_base_t *configBase) {
}

status_t StreamHalAidl::setParameters(const String8& kvPairs) {
    LOG_ENTRY_V();
    AUGMENT_LOG(V);
    TIME_CHECK();
    if (!mStream) return NO_INIT;
    AudioParameter parameters(kvPairs);
@@ -151,7 +151,7 @@ status_t StreamHalAidl::setParameters(const String8& kvPairs) {
}

status_t StreamHalAidl::getParameters(const String8& keys __unused, String8 *values) {
    LOG_ENTRY_V();
    AUGMENT_LOG(V);
    TIME_CHECK();
    if (!mStream) return NO_INIT;
    if (values == nullptr) {
@@ -163,7 +163,7 @@ status_t StreamHalAidl::getParameters(const String8& keys __unused, String8 *val
}

status_t StreamHalAidl::getFrameSize(size_t *size) {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    if (size == nullptr) {
        return BAD_VALUE;
    }
@@ -175,7 +175,7 @@ status_t StreamHalAidl::getFrameSize(size_t *size) {
}

status_t StreamHalAidl::addEffect(sp<EffectHalInterface> effect) {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    if (!mStream) return NO_INIT;
    if (effect == nullptr) {
@@ -186,7 +186,7 @@ status_t StreamHalAidl::addEffect(sp<EffectHalInterface> effect) {
}

status_t StreamHalAidl::removeEffect(sp<EffectHalInterface> effect) {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    if (!mStream) return NO_INIT;
    if (effect == nullptr) {
@@ -197,7 +197,7 @@ status_t StreamHalAidl::removeEffect(sp<EffectHalInterface> effect) {
}

status_t StreamHalAidl::standby() {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    if (!mStream) return NO_INIT;
    const auto state = getState();
@@ -245,7 +245,7 @@ status_t StreamHalAidl::standby() {
}

status_t StreamHalAidl::dump(int fd, const Vector<String16>& args) {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    if (!mStream) return NO_INIT;
    status_t status = mStream->dump(fd, Args(args).args(), args.size());
@@ -254,7 +254,7 @@ status_t StreamHalAidl::dump(int fd, const Vector<String16>& args) {
}

status_t StreamHalAidl::start() {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    if (!mStream) return NO_INIT;
    if (!mContext.isMmapped()) {
@@ -300,7 +300,7 @@ status_t StreamHalAidl::start() {
}

status_t StreamHalAidl::stop() {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    if (!mStream) return NO_INIT;
    if (!mContext.isMmapped()) {
@@ -325,7 +325,7 @@ status_t StreamHalAidl::stop() {
}

status_t StreamHalAidl::getLatency(uint32_t *latency) {
    LOG_ENTRY_V();
    AUGMENT_LOG(V);
    if (!mStream) return NO_INIT;
    StreamDescriptor::Reply reply;
    RETURN_STATUS_IF_ERROR(updateCountersIfNeeded(&reply));
@@ -338,7 +338,7 @@ status_t StreamHalAidl::getLatency(uint32_t *latency) {

status_t StreamHalAidl::getObservablePosition(int64_t* frames, int64_t* timestamp,
        StatePositions* statePositions) {
    LOG_ENTRY_V();
    AUGMENT_LOG(V);
    if (!mStream) return NO_INIT;
    StreamDescriptor::Reply reply;
    RETURN_STATUS_IF_ERROR(updateCountersIfNeeded(&reply, statePositions));
@@ -348,7 +348,7 @@ status_t StreamHalAidl::getObservablePosition(int64_t* frames, int64_t* timestam
}

status_t StreamHalAidl::getHardwarePosition(int64_t *frames, int64_t *timestamp) {
    LOG_ENTRY_V();
    AUGMENT_LOG(V);
    if (!mStream) return NO_INIT;
    StreamDescriptor::Reply reply;
    RETURN_STATUS_IF_ERROR(updateCountersIfNeeded(&reply));
@@ -358,7 +358,7 @@ status_t StreamHalAidl::getHardwarePosition(int64_t *frames, int64_t *timestamp)
}

status_t StreamHalAidl::getXruns(int32_t *frames) {
    LOG_ENTRY_V();
    AUGMENT_LOG(V);
    if (!mStream) return NO_INIT;
    StreamDescriptor::Reply reply;
    RETURN_STATUS_IF_ERROR(updateCountersIfNeeded(&reply));
@@ -367,7 +367,7 @@ status_t StreamHalAidl::getXruns(int32_t *frames) {
}

status_t StreamHalAidl::transfer(void *buffer, size_t bytes, size_t *transferred) {
    LOG_ENTRY_V();
    AUGMENT_LOG(V);
    // TIME_CHECK();  // TODO(b/243839867) reenable only when optimized.
    if (!mStream || mContext.getDataMQ() == nullptr) return NO_INIT;
    mWorkerTid.store(gettid(), std::memory_order_release);
@@ -418,7 +418,7 @@ status_t StreamHalAidl::transfer(void *buffer, size_t bytes, size_t *transferred
}

status_t StreamHalAidl::pause(StreamDescriptor::Reply* reply) {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    if (!mStream) return NO_INIT;

@@ -434,7 +434,7 @@ status_t StreamHalAidl::pause(StreamDescriptor::Reply* reply) {
}

status_t StreamHalAidl::resume(StreamDescriptor::Reply* reply) {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    if (!mStream) return NO_INIT;
    if (mIsInput) {
@@ -471,7 +471,7 @@ status_t StreamHalAidl::resume(StreamDescriptor::Reply* reply) {
}

status_t StreamHalAidl::drain(bool earlyNotify, StreamDescriptor::Reply* reply) {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    if (!mStream) return NO_INIT;
    return sendCommand(makeHalCommand<HalCommand::Tag::drain>(
@@ -482,7 +482,7 @@ status_t StreamHalAidl::drain(bool earlyNotify, StreamDescriptor::Reply* reply)
}

status_t StreamHalAidl::flush(StreamDescriptor::Reply* reply) {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    if (!mStream) return NO_INIT;

@@ -501,7 +501,7 @@ status_t StreamHalAidl::flush(StreamDescriptor::Reply* reply) {
}

status_t StreamHalAidl::exit() {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    if (!mStream) return NO_INIT;
    return statusTFromBinderStatus(mStream->prepareToClose());
@@ -541,7 +541,7 @@ void StreamHalAidl::onAsyncError() {

status_t StreamHalAidl::createMmapBuffer(int32_t minSizeFrames __unused,
                                         struct audio_mmap_buffer_info *info) {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    if (!mStream) return NO_INIT;
    if (!mContext.isMmapped()) {
@@ -779,7 +779,7 @@ status_t StreamOutHalAidl::getRenderPosition(uint64_t *dspFrames) {
}

status_t StreamOutHalAidl::setCallback(wp<StreamOutHalInterfaceCallback> callback) {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    TIME_CHECK();
    if (!mStream) return NO_INIT;
    if (!mContext.isAsynchronous()) {
@@ -855,7 +855,7 @@ status_t StreamOutHalAidl::getPresentationPosition(uint64_t *frames, struct time
}

status_t StreamOutHalAidl::presentationComplete() {
    LOG_ENTRY();
    AUGMENT_LOG(D);
    return OK;
}