diff options
Diffstat (limited to 'logd/LogStatistics.h')
-rw-r--r-- | logd/LogStatistics.h | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/logd/LogStatistics.h b/logd/LogStatistics.h index d44afa2..3733137 100644 --- a/logd/LogStatistics.h +++ b/logd/LogStatistics.h @@ -36,12 +36,20 @@ class PidStatistics { size_t mSizes; size_t mElements; + char *name; + bool mGone; + public: static const pid_t gone = (pid_t) -1; - PidStatistics(pid_t pid); + PidStatistics(pid_t pid, char *name = NULL); + PidStatistics(const PidStatistics ©); + ~PidStatistics(); pid_t getPid() const { return pid; } + bool pidGone(); + char *getName() const { return name; } + void setName(char *name); void add(unsigned short size); bool subtract(unsigned short size); // returns true if stats and PID gone @@ -52,6 +60,9 @@ public: size_t sizesTotal() const { return mSizesTotal; } size_t elementsTotal() const { return mElementsTotal; } + + // helper + static char *pidToName(pid_t pid); }; typedef android::List<PidStatistics *> PidStatisticsCollection; @@ -61,6 +72,9 @@ class UidStatistics { PidStatisticsCollection Pids; + size_t mSizes; + size_t mElements; + public: UidStatistics(uid_t uid); ~UidStatistics(); @@ -72,14 +86,23 @@ public: void add(unsigned short size, pid_t pid); void subtract(unsigned short size, pid_t pid); + void sort(); static const pid_t pid_all = (pid_t) -1; - size_t sizes(pid_t pid = pid_all); - size_t elements(pid_t pid = pid_all); + // fast track current value + size_t sizes() const { return mSizes; }; + size_t elements() const { return mElements; }; + + // statistical track + size_t sizes(pid_t pid); + size_t elements(pid_t pid); size_t sizesTotal(pid_t pid = pid_all); size_t elementsTotal(pid_t pid = pid_all); + + // helper + static char *pidToName(pid_t pid) { return PidStatistics::pidToName(pid); } }; typedef android::List<UidStatistics *> UidStatisticsCollection; @@ -96,6 +119,7 @@ public: void add(unsigned short size, uid_t uid, pid_t pid); void subtract(unsigned short size, uid_t uid, pid_t pid); + void sort(); static const pid_t pid_all = (pid_t) -1; static const uid_t uid_all = (uid_t) -1; @@ -114,6 +138,11 @@ class LogStatistics { size_t mSizes[LOG_ID_MAX]; size_t mElements[LOG_ID_MAX]; + bool dgram_qlen_statistics; + + static const unsigned short mBuckets[14]; + log_time mMinimum[sizeof(mBuckets) / sizeof(mBuckets[0])]; + public: const log_time start; @@ -121,8 +150,14 @@ public: LidStatistics &id(log_id_t log_id) { return LogIds[log_id]; } + void enableDgramQlenStatistics() { dgram_qlen_statistics = true; } + static unsigned short dgram_qlen(unsigned short bucket); + unsigned long long minimum(unsigned short bucket); + void recordDiff(log_time diff, unsigned short bucket); + void add(unsigned short size, log_id_t log_id, uid_t uid, pid_t pid); void subtract(unsigned short size, log_id_t log_id, uid_t uid, pid_t pid); + void sort(); // fast track current value by id only size_t sizes(log_id_t id) const { return mSizes[id]; } @@ -147,6 +182,10 @@ public: // *strp = malloc, balance with free void format(char **strp, uid_t uid, unsigned int logMask, log_time oldest); + + // helper + static char *pidToName(pid_t pid) { return PidStatistics::pidToName(pid); } + uid_t pidToUid(pid_t pid); }; #endif // _LOGD_LOG_STATISTICS_H__ |