Loading logd/LogTimes.cpp +1 −1 Original line number Original line Diff line number Diff line Loading @@ -90,7 +90,7 @@ void LogTimeEntry::threadStop(void *obj) { while(it != times.end()) { while(it != times.end()) { if (*it == me) { if (*it == me) { times.erase(it); times.erase(it); me->release_Locked(); me->release_nodelete_Locked(); break; break; } } it++; it++; Loading logd/LogTimes.h +7 −1 Original line number Original line Diff line number Diff line Loading @@ -75,7 +75,13 @@ public: void triggerSkip_Locked(log_id_t id, unsigned int skip) { skipAhead[id] = skip; } void triggerSkip_Locked(log_id_t id, unsigned int skip) { skipAhead[id] = skip; } void cleanSkip_Locked(void); void cleanSkip_Locked(void); // Called after LogTimeEntry removed from list, lock implicitly held // These called after LogTimeEntry removed from list, lock implicitly held void release_nodelete_Locked(void) { mRelease = true; pthread_cond_signal(&threadTriggeredCondition); // assumes caller code path will call decRef_Locked() } void release_Locked(void) { void release_Locked(void) { mRelease = true; mRelease = true; pthread_cond_signal(&threadTriggeredCondition); pthread_cond_signal(&threadTriggeredCondition); Loading logd/main.cpp +6 −3 Original line number Original line Diff line number Diff line Loading @@ -165,7 +165,7 @@ bool property_get_bool(const char *key, int flag) { char newkey[PROPERTY_KEY_MAX]; char newkey[PROPERTY_KEY_MAX]; snprintf(newkey, sizeof(newkey), "ro.%s", key); snprintf(newkey, sizeof(newkey), "ro.%s", key); property_get(newkey, property, ""); property_get(newkey, property, ""); // persist properties set by /data require innoculation with // persist properties set by /data require inoculation with // logd-reinit. They may be set in init.rc early and function, but // logd-reinit. They may be set in init.rc early and function, but // otherwise are defunct unless reset. Do not rely on persist // otherwise are defunct unless reset. Do not rely on persist // properties for startup-only keys unless you are willing to restart // properties for startup-only keys unless you are willing to restart Loading Loading @@ -265,8 +265,11 @@ static void *reinit_thread_start(void * /*obj*/) { set_sched_policy(0, SP_BACKGROUND); set_sched_policy(0, SP_BACKGROUND); setpriority(PRIO_PROCESS, 0, ANDROID_PRIORITY_BACKGROUND); setpriority(PRIO_PROCESS, 0, ANDROID_PRIORITY_BACKGROUND); setgid(AID_SYSTEM); // If we are AID_ROOT, we should drop to AID_SYSTEM, if we are anything setuid(AID_SYSTEM); // else, we have even lesser privileges and accept our fate. Not worth // checking for error returns setting this thread's privileges. (void)setgid(AID_SYSTEM); (void)setuid(AID_SYSTEM); while (reinit_running && !sem_wait(&reinit) && reinit_running) { while (reinit_running && !sem_wait(&reinit) && reinit_running) { Loading Loading
logd/LogTimes.cpp +1 −1 Original line number Original line Diff line number Diff line Loading @@ -90,7 +90,7 @@ void LogTimeEntry::threadStop(void *obj) { while(it != times.end()) { while(it != times.end()) { if (*it == me) { if (*it == me) { times.erase(it); times.erase(it); me->release_Locked(); me->release_nodelete_Locked(); break; break; } } it++; it++; Loading
logd/LogTimes.h +7 −1 Original line number Original line Diff line number Diff line Loading @@ -75,7 +75,13 @@ public: void triggerSkip_Locked(log_id_t id, unsigned int skip) { skipAhead[id] = skip; } void triggerSkip_Locked(log_id_t id, unsigned int skip) { skipAhead[id] = skip; } void cleanSkip_Locked(void); void cleanSkip_Locked(void); // Called after LogTimeEntry removed from list, lock implicitly held // These called after LogTimeEntry removed from list, lock implicitly held void release_nodelete_Locked(void) { mRelease = true; pthread_cond_signal(&threadTriggeredCondition); // assumes caller code path will call decRef_Locked() } void release_Locked(void) { void release_Locked(void) { mRelease = true; mRelease = true; pthread_cond_signal(&threadTriggeredCondition); pthread_cond_signal(&threadTriggeredCondition); Loading
logd/main.cpp +6 −3 Original line number Original line Diff line number Diff line Loading @@ -165,7 +165,7 @@ bool property_get_bool(const char *key, int flag) { char newkey[PROPERTY_KEY_MAX]; char newkey[PROPERTY_KEY_MAX]; snprintf(newkey, sizeof(newkey), "ro.%s", key); snprintf(newkey, sizeof(newkey), "ro.%s", key); property_get(newkey, property, ""); property_get(newkey, property, ""); // persist properties set by /data require innoculation with // persist properties set by /data require inoculation with // logd-reinit. They may be set in init.rc early and function, but // logd-reinit. They may be set in init.rc early and function, but // otherwise are defunct unless reset. Do not rely on persist // otherwise are defunct unless reset. Do not rely on persist // properties for startup-only keys unless you are willing to restart // properties for startup-only keys unless you are willing to restart Loading Loading @@ -265,8 +265,11 @@ static void *reinit_thread_start(void * /*obj*/) { set_sched_policy(0, SP_BACKGROUND); set_sched_policy(0, SP_BACKGROUND); setpriority(PRIO_PROCESS, 0, ANDROID_PRIORITY_BACKGROUND); setpriority(PRIO_PROCESS, 0, ANDROID_PRIORITY_BACKGROUND); setgid(AID_SYSTEM); // If we are AID_ROOT, we should drop to AID_SYSTEM, if we are anything setuid(AID_SYSTEM); // else, we have even lesser privileges and accept our fate. Not worth // checking for error returns setting this thread's privileges. (void)setgid(AID_SYSTEM); (void)setuid(AID_SYSTEM); while (reinit_running && !sem_wait(&reinit) && reinit_running) { while (reinit_running && !sem_wait(&reinit) && reinit_running) { Loading