SensorService fixes.

i) Add more debug stats (acks needed, acks received)
  ii) Comment out write failure message.

Change-Id: Iac892a66530849a2dd023d6f5628cd070a79537d
This commit is contained in:
Aravind Akella 2014-08-21 12:28:35 -07:00
parent 61a4eecbe6
commit e74baf6ca7
2 changed files with 24 additions and 4 deletions

View File

@ -924,6 +924,7 @@ SensorService::SensorEventConnection::SensorEventConnection(
} }
#if DEBUG_CONNECTIONS #if DEBUG_CONNECTIONS
mEventsReceived = mEventsSentFromCache = mEventsSent = 0; mEventsReceived = mEventsSentFromCache = mEventsSent = 0;
mTotalAcksNeeded = mTotalAcksReceived = 0;
#endif #endif
} }
@ -960,12 +961,15 @@ void SensorService::SensorEventConnection::dump(String8& result) {
mCacheSize, mCacheSize,
mMaxCacheSize); mMaxCacheSize);
#if DEBUG_CONNECTIONS #if DEBUG_CONNECTIONS
result.appendFormat("\t events recvd: %d | sent %d | cache %d | dropped %d\n", result.appendFormat("\t events recvd: %d | sent %d | cache %d | dropped %d |"
" total_acks_needed %d | total_acks_recvd %d\n",
mEventsReceived, mEventsReceived,
mEventsSent, mEventsSent,
mEventsSentFromCache, mEventsSentFromCache,
mEventsReceived - (mEventsSentFromCache mEventsReceived - (mEventsSentFromCache +
mEventsSent + mCacheSize)); mEventsSent + mCacheSize),
mTotalAcksNeeded,
mTotalAcksReceived);
#endif #endif
} }
@ -1125,6 +1129,9 @@ status_t SensorService::SensorEventConnection::sendEvents(
if (index_wake_up_event >= 0) { if (index_wake_up_event >= 0) {
scratch[index_wake_up_event].flags |= WAKE_UP_SENSOR_EVENT_NEEDS_ACK; scratch[index_wake_up_event].flags |= WAKE_UP_SENSOR_EVENT_NEEDS_ACK;
++mWakeLockRefCount; ++mWakeLockRefCount;
#if DEBUG_CONNECTIONS
++mTotalAcksNeeded;
#endif
} }
// NOTE: ASensorEvent and sensors_event_t are the same type. // NOTE: ASensorEvent and sensors_event_t are the same type.
@ -1136,6 +1143,9 @@ status_t SensorService::SensorEventConnection::sendEvents(
// If there was a wake_up sensor_event, reset the flag. // If there was a wake_up sensor_event, reset the flag.
scratch[index_wake_up_event].flags &= ~WAKE_UP_SENSOR_EVENT_NEEDS_ACK; scratch[index_wake_up_event].flags &= ~WAKE_UP_SENSOR_EVENT_NEEDS_ACK;
--mWakeLockRefCount; --mWakeLockRefCount;
#if DEBUG_CONNECTIONS
--mTotalAcksNeeded;
#endif
} }
if (mEventCache == NULL) { if (mEventCache == NULL) {
mMaxCacheSize = computeMaxCacheSizeLocked(); mMaxCacheSize = computeMaxCacheSizeLocked();
@ -1214,6 +1224,9 @@ void SensorService::SensorEventConnection::writeToSocketFromCacheLocked() {
mEventCache[index_wake_up_event + numEventsSent].flags |= mEventCache[index_wake_up_event + numEventsSent].flags |=
WAKE_UP_SENSOR_EVENT_NEEDS_ACK; WAKE_UP_SENSOR_EVENT_NEEDS_ACK;
++mWakeLockRefCount; ++mWakeLockRefCount;
#if DEBUG_CONNECTIONS
++mTotalAcksNeeded;
#endif
} }
ssize_t size = SensorEventQueue::write(mChannel, ssize_t size = SensorEventQueue::write(mChannel,
@ -1225,6 +1238,9 @@ void SensorService::SensorEventConnection::writeToSocketFromCacheLocked() {
mEventCache[index_wake_up_event + numEventsSent].flags &= mEventCache[index_wake_up_event + numEventsSent].flags &=
~WAKE_UP_SENSOR_EVENT_NEEDS_ACK; ~WAKE_UP_SENSOR_EVENT_NEEDS_ACK;
--mWakeLockRefCount; --mWakeLockRefCount;
#if DEBUG_CONNECTIONS
--mTotalAcksNeeded;
#endif
} }
memmove(mEventCache, &mEventCache[numEventsSent], memmove(mEventCache, &mEventCache[numEventsSent],
(mCacheSize - numEventsSent) * sizeof(sensors_event_t)); (mCacheSize - numEventsSent) * sizeof(sensors_event_t));
@ -1333,6 +1349,9 @@ int SensorService::SensorEventConnection::handleEvent(int fd, int events, void*
{ {
Mutex::Autolock _l(mConnectionLock); Mutex::Autolock _l(mConnectionLock);
--mWakeLockRefCount; --mWakeLockRefCount;
#if DEBUG_CONNECTIONS
++mTotalAcksReceived;
#endif
} }
// Check if wakelock can be released by sensorservice. mConnectionLock needs to be released // Check if wakelock can be released by sensorservice. mConnectionLock needs to be released
// here as checkWakeLockState() will need it. // here as checkWakeLockState() will need it.
@ -1380,7 +1399,7 @@ int SensorService::SensorEventConnection::computeMaxCacheSizeLocked() const {
if (fifoWakeUpSensors + fifoNonWakeUpSensors == 0) { if (fifoWakeUpSensors + fifoNonWakeUpSensors == 0) {
// It is extremely unlikely that there is a write failure in non batch mode. Return a cache // It is extremely unlikely that there is a write failure in non batch mode. Return a cache
// size that is equal to that of the batch mode. // size that is equal to that of the batch mode.
ALOGI("Write failure in non-batch mode"); // ALOGW("Write failure in non-batch mode");
return MAX_SOCKET_BUFFER_SIZE_BATCHED/sizeof(sensors_event_t); return MAX_SOCKET_BUFFER_SIZE_BATCHED/sizeof(sensors_event_t);
} }
return fifoWakeUpSensors + fifoNonWakeUpSensors; return fifoWakeUpSensors + fifoNonWakeUpSensors;

View File

@ -142,6 +142,7 @@ class SensorService :
#if DEBUG_CONNECTIONS #if DEBUG_CONNECTIONS
int mEventsReceived, mEventsSent, mEventsSentFromCache; int mEventsReceived, mEventsSent, mEventsSentFromCache;
int mTotalAcksNeeded, mTotalAcksReceived;
#endif #endif
public: public: