Revert "audiohal: Add diagnostics to investigate HAL call crashes"

This reverts commit 6c0f76a684.

Since the root cause of the crash has been established, there is no need to keep this code around.

Bug: 36225019
Change-Id: I74e570e863a0cdec5d9029f1672e2e8066c246b5
This commit is contained in:
Mikhail Naganov 2017-05-31 19:59:21 +00:00
parent 6c0f76a684
commit f811acf049
4 changed files with 10 additions and 63 deletions

View file

@ -17,11 +17,9 @@
#define LOG_TAG "DeviceHAL"
//#define LOG_NDEBUG 0
#include <algorithm>
#include <memory.h>
#include <string.h>
#include <algorithm>
#include <mutex>
#include <vector>
#include <android/log.h>
@ -37,57 +35,8 @@ namespace audio {
namespace V2_0 {
namespace implementation {
namespace {
class Diagnostics {
public:
static Diagnostics& getInstance() {
std::lock_guard<std::mutex> _(mLock);
if (mInstance == nullptr) {
mInstance = new Diagnostics;
}
return *mInstance;
}
void registerDevice(Device* dev) {
std::lock_guard<std::mutex> _(mLock);
mDevices.push_back(wp<Device>(dev));
}
void checkForErasedHalCblk(const Device* dev) {
if (dev->version() != 0) return; // all OK
std::ostringstream ss;
ss << "Zero HAL CB for " << dev->type() << ":" << std::hex
<< dev->device() << "; Others: ";
{
std::lock_guard<std::mutex> _(mLock);
for (auto wp : mDevices) {
sp<Device> other{wp.promote()};
if (other.get() == nullptr || other.get() == dev) continue;
ss << other->type() << ":" << other->version() << ":"
<< std::hex << other->device() << "; ";
}
}
ALOGE("%s", ss.str().c_str());
}
private:
Diagnostics() {}
static std::mutex mLock;
static Diagnostics* mInstance;
std::vector<wp<Device>> mDevices;
};
std::mutex Diagnostics::mLock;
Diagnostics* Diagnostics::mInstance{nullptr};
} // namespace
Device::Device(audio_hw_device_t* device, const char* type)
: mDevice{device}, mType{type} {
Diagnostics::getInstance().registerDevice(this);
Device::Device(audio_hw_device_t* device)
: mDevice(device) {
}
Device::~Device() {
@ -119,12 +68,10 @@ void Device::closeOutputStream(audio_stream_out_t* stream) {
}
char* Device::halGetParameters(const char* keys) {
Diagnostics::getInstance().checkForErasedHalCblk(this);
return mDevice->get_parameters(mDevice, keys);
}
int Device::halSetParameters(const char* keysAndValues) {
Diagnostics::getInstance().checkForErasedHalCblk(this);
return mDevice->set_parameters(mDevice, keysAndValues);
}

View file

@ -56,7 +56,7 @@ using ::android::hardware::hidl_string;
using ::android::sp;
struct Device : public IDevice, public ParametersUtil {
Device(audio_hw_device_t* device, const char* type);
explicit Device(audio_hw_device_t* device);
// Methods from ::android::hardware::audio::V2_0::IDevice follow.
Return<Result> initCheck() override;
@ -101,18 +101,17 @@ struct Device : public IDevice, public ParametersUtil {
void closeInputStream(audio_stream_in_t* stream);
void closeOutputStream(audio_stream_out_t* stream);
audio_hw_device_t* device() const { return mDevice; }
const char* type() const { return mType; }
uint32_t version() const { return mDevice->common.version; }
private:
private:
audio_hw_device_t *mDevice;
const char* mType;
virtual ~Device();
// Methods from ParametersUtil.
char* halGetParameters(const char* keys) override;
int halSetParameters(const char* keysAndValues) override;
uint32_t version() const { return mDevice->common.version; }
};
} // namespace implementation

View file

@ -86,7 +86,7 @@ Return<void> DevicesFactory::openDevice(IDevicesFactory::Device device, openDevi
result = new PrimaryDevice(halDevice);
} else {
result = new ::android::hardware::audio::V2_0::implementation::
Device(halDevice, moduleName);
Device(halDevice);
}
retval = Result::OK;
} else if (halStatus == -EINVAL) {

View file

@ -25,7 +25,8 @@ namespace V2_0 {
namespace implementation {
PrimaryDevice::PrimaryDevice(audio_hw_device_t* device)
: mDevice{new Device(device, AUDIO_HARDWARE_MODULE_ID_PRIMARY)} {}
: mDevice(new Device(device)) {
}
PrimaryDevice::~PrimaryDevice() {}