Merge changes I92cac83b,Ie897c40b
am: 4278f71118
Change-Id: I7cdd5f23e6b654b37f0c03e5d2ce05d2753646ad
This commit is contained in:
commit
898c8a6e51
2 changed files with 19 additions and 3 deletions
|
|
@ -57,8 +57,18 @@ void FlushCommand::runSocketCommand(SocketClient* client) {
|
||||||
entry = (*it);
|
entry = (*it);
|
||||||
if (entry->mClient == client) {
|
if (entry->mClient == client) {
|
||||||
if (entry->mTimeout.tv_sec || entry->mTimeout.tv_nsec) {
|
if (entry->mTimeout.tv_sec || entry->mTimeout.tv_nsec) {
|
||||||
LogTimeEntry::unlock();
|
if (mReader.logbuf().isMonotonic()) {
|
||||||
return;
|
LogTimeEntry::unlock();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// If the user changes the time in a gross manner that
|
||||||
|
// invalidates the timeout, fall through and trigger.
|
||||||
|
log_time now(CLOCK_REALTIME);
|
||||||
|
if (((entry->mEnd + entry->mTimeout) > now) &&
|
||||||
|
(now > entry->mEnd)) {
|
||||||
|
LogTimeEntry::unlock();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
entry->triggerReader_Locked();
|
entry->triggerReader_Locked();
|
||||||
if (entry->runningReader_Locked()) {
|
if (entry->runningReader_Locked()) {
|
||||||
|
|
|
||||||
|
|
@ -370,13 +370,19 @@ int LogBuffer::log(log_id_t log_id, log_time realtime, uid_t uid, pid_t pid,
|
||||||
|
|
||||||
// assumes mLogElementsLock held, owns elem, will look after garbage collection
|
// assumes mLogElementsLock held, owns elem, will look after garbage collection
|
||||||
void LogBuffer::log(LogBufferElement* elem) {
|
void LogBuffer::log(LogBufferElement* elem) {
|
||||||
|
// cap on how far back we will sort in-place, otherwise append
|
||||||
|
static uint32_t too_far_back = 5; // five seconds
|
||||||
// Insert elements in time sorted order if possible
|
// Insert elements in time sorted order if possible
|
||||||
// NB: if end is region locked, place element at end of list
|
// NB: if end is region locked, place element at end of list
|
||||||
LogBufferElementCollection::iterator it = mLogElements.end();
|
LogBufferElementCollection::iterator it = mLogElements.end();
|
||||||
LogBufferElementCollection::iterator last = it;
|
LogBufferElementCollection::iterator last = it;
|
||||||
if (__predict_true(it != mLogElements.begin())) --it;
|
if (__predict_true(it != mLogElements.begin())) --it;
|
||||||
if (__predict_false(it == mLogElements.begin()) ||
|
if (__predict_false(it == mLogElements.begin()) ||
|
||||||
__predict_true((*it)->getRealTime() <= elem->getRealTime())) {
|
__predict_true((*it)->getRealTime() <= elem->getRealTime()) ||
|
||||||
|
__predict_false((((*it)->getRealTime().tv_sec - too_far_back) >
|
||||||
|
elem->getRealTime().tv_sec) &&
|
||||||
|
(elem->getLogId() != LOG_ID_KERNEL) &&
|
||||||
|
((*it)->getLogId() != LOG_ID_KERNEL))) {
|
||||||
mLogElements.push_back(elem);
|
mLogElements.push_back(elem);
|
||||||
} else {
|
} else {
|
||||||
log_time end = log_time::EPOCH;
|
log_time end = log_time::EPOCH;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue