summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Kiryanov <rkir@google.com>2023-09-19 13:44:33 -0700
committerRoman Kiryanov <rkir@google.com>2023-09-19 13:44:33 -0700
commitb549ed40bb83bb03bf2d34c2b786c1befec2e402 (patch)
tree19695cdeb681a8091f90939d6fe8f0f37440f05e
parenta980f84324f9eacc5980c0352703ff998275aeaa (diff)
downloadgoldfish-b549ed40bb83bb03bf2d34c2b786c1befec2e402.tar.gz
Replace `abort()` with `LOG_ALWAYS_FATAL()` in the sensors HAL
for better crashes in logcat Bug: 285191212 Test: atest CtsSensorTestCases Change-Id: Ib9e39625b0c350b64d2c6b1debeebb5f4981fc73 Signed-off-by: Roman Kiryanov <rkir@google.com>
-rw-r--r--sensors/multihal_sensors.cpp50
-rw-r--r--sensors/multihal_sensors_epoll.cpp22
2 files changed, 29 insertions, 43 deletions
diff --git a/sensors/multihal_sensors.cpp b/sensors/multihal_sensors.cpp
index 1ce574a1..b4faceef 100644
--- a/sensors/multihal_sensors.cpp
+++ b/sensors/multihal_sensors.cpp
@@ -35,39 +35,32 @@ constexpr int64_t kMaxSamplingPeriodNs = 1000000000;
MultihalSensors::MultihalSensors(std::unique_ptr<SensorsTransport> transport)
: m_sensorsTransport(std::move(transport))
, m_batchInfo(getSensorNumber()) {
- if (!m_sensorsTransport->Ok()) {
- ALOGE("%s:%d: sensors transport is not opened", __func__, __LINE__);
- ::abort();
- }
+ LOG_ALWAYS_FATAL_IF(!m_sensorsTransport->Ok(),
+ "%s:%d: sensors transport is not opened", __func__, __LINE__);
char buffer[64];
int len = snprintf(buffer, sizeof(buffer),
"time:%" PRId64, ::android::elapsedRealtimeNano());
- if (m_sensorsTransport->Send(buffer, len) < 0) {
- ALOGE("%s:%d: send for %s failed", __func__, __LINE__, m_sensorsTransport->Name());
- ::abort();
- }
+ LOG_ALWAYS_FATAL_IF(m_sensorsTransport->Send(buffer, len) < 0,
+ "%s:%d: send for %s failed", __func__, __LINE__,
+ m_sensorsTransport->Name());
using namespace std::literals;
const std::string_view kListSensorsCmd = "list-sensors"sv;
- if (m_sensorsTransport->Send(kListSensorsCmd.data(),
- kListSensorsCmd.size()) < 0) {
- ALOGE("%s:%d: send for %s failed", __func__, __LINE__, m_sensorsTransport->Name());
- ::abort();
- }
+ LOG_ALWAYS_FATAL_IF(m_sensorsTransport->Send(kListSensorsCmd.data(),
+ kListSensorsCmd.size()) < 0,
+ "%s:%d: send for %s failed", __func__, __LINE__,
+ m_sensorsTransport->Name());
len = m_sensorsTransport->Receive(buffer, sizeof(buffer) - 1);
- if (len < 0) {
- ALOGE("%s:%d: receive for %s failed", __func__, __LINE__, m_sensorsTransport->Name());
- ::abort();
- }
+ LOG_ALWAYS_FATAL_IF(len < 0, "%s:%d: receive for %s failed", __func__, __LINE__,
+ m_sensorsTransport->Name());
+
buffer[len] = 0;
uint32_t hostSensorsMask = 0;
- if (sscanf(buffer, "%u", &hostSensorsMask) != 1) {
- ALOGE("%s:%d: Can't parse qemud response", __func__, __LINE__);
- ::abort();
- }
+ LOG_ALWAYS_FATAL_IF(sscanf(buffer, "%u", &hostSensorsMask) != 1,
+ "%s:%d: Can't parse qemud response", __func__, __LINE__);
m_availableSensorsMask = hostSensorsMask
& ((1u << getSensorNumber()) - 1);
@@ -75,11 +68,9 @@ MultihalSensors::MultihalSensors(std::unique_ptr<SensorsTransport> transport)
ALOGI("%s:%d: host sensors mask=%x, available sensors mask=%x",
__func__, __LINE__, hostSensorsMask, m_availableSensorsMask);
- if (!::android::base::Socketpair(AF_LOCAL, SOCK_STREAM, 0,
- &m_callersFd, &m_sensorThreadFd)) {
- ALOGE("%s:%d: Socketpair failed", __func__, __LINE__);
- ::abort();
- }
+ LOG_ALWAYS_FATAL_IF(!::android::base::Socketpair(AF_LOCAL, SOCK_STREAM, 0,
+ &m_callersFd, &m_sensorThreadFd),
+ "%s:%d: Socketpair failed", __func__, __LINE__);
setAdditionalInfoFrames();
@@ -271,10 +262,9 @@ Return<Result> MultihalSensors::batch(const int32_t sensorHandle,
char buffer[64];
const int len = snprintf(buffer, sizeof(buffer), "set-delay:%d", delayMs);
- if (m_sensorsTransport->Send(buffer, len) < 0) {
- ALOGE("%s:%d: send for %s failed", __func__, __LINE__, m_sensorsTransport->Name());
- ::abort();
- }
+ LOG_ALWAYS_FATAL_IF(m_sensorsTransport->Send(buffer, len) < 0,
+ "%s:%d: send for %s failed", __func__, __LINE__,
+ m_sensorsTransport->Name());
}
return Result::OK;
diff --git a/sensors/multihal_sensors_epoll.cpp b/sensors/multihal_sensors_epoll.cpp
index c8b5fd08..b896c6b6 100644
--- a/sensors/multihal_sensors_epoll.cpp
+++ b/sensors/multihal_sensors_epoll.cpp
@@ -41,10 +41,8 @@ int qemuSensortThreadRcvCommand(const int fd) {
void MultihalSensors::qemuSensorListenerThread() {
const int transportFd = m_sensorsTransport->Fd();
const unique_fd epollFd(epoll_create1(0));
- if (!epollFd.ok()) {
- ALOGE("%s:%d: epoll_create1 failed", __func__, __LINE__);
- ::abort();
- }
+ LOG_ALWAYS_FATAL_IF(!epollFd.ok(), "%s:%d: epoll_create1 failed",
+ __func__, __LINE__);
epollCtlAdd(epollFd.get(), transportFd);
epollCtlAdd(epollFd.get(), m_sensorThreadFd.get());
@@ -68,26 +66,24 @@ void MultihalSensors::qemuSensorListenerThread() {
if (fd == transportFd) {
if (ev_events & (EPOLLERR | EPOLLHUP)) {
- ALOGE("%s:%d: epoll_wait: devFd has an error, ev_events=%x",
- __func__, __LINE__, ev_events);
- ::abort();
+ LOG_ALWAYS_FATAL("%s:%d: epoll_wait: transportFd has an error, "
+ "ev_events=%x", __func__, __LINE__, ev_events);
} else if (ev_events & EPOLLIN) {
std::unique_lock<std::mutex> lock(m_mtx);
parseQemuSensorEventLocked(&m_protocolState);
}
} else if (fd == m_sensorThreadFd.get()) {
if (ev_events & (EPOLLERR | EPOLLHUP)) {
- ALOGE("%s:%d: epoll_wait: threadsFd has an error, ev_events=%x",
- __func__, __LINE__, ev_events);
- ::abort();
+ LOG_ALWAYS_FATAL("%s:%d: epoll_wait: threadFd has an error, "
+ "ev_events=%x", __func__, __LINE__, ev_events);
} else if (ev_events & EPOLLIN) {
const int cmd = qemuSensortThreadRcvCommand(fd);
if (cmd == kCMD_QUIT) {
return;
} else {
- ALOGE("%s:%d: qemuSensortThreadRcvCommand returned unexpected command, cmd=%d",
- __func__, __LINE__, cmd);
- ::abort();
+ LOG_ALWAYS_FATAL("%s:%d: qemuSensortThreadRcvCommand "
+ "returned unexpected command, cmd=%d",
+ __func__, __LINE__, cmd);
}
}
} else {