diff options
Diffstat (limited to 'logd/LogTags.h')
-rw-r--r-- | logd/LogTags.h | 49 |
1 files changed, 27 insertions, 22 deletions
diff --git a/logd/LogTags.h b/logd/LogTags.h index 4457c462f..203318d91 100644 --- a/logd/LogTags.h +++ b/logd/LogTags.h | |||
@@ -17,9 +17,9 @@ | |||
17 | #ifndef _LOGD_LOG_TAGS_H__ | 17 | #ifndef _LOGD_LOG_TAGS_H__ |
18 | #define _LOGD_LOG_TAGS_H__ | 18 | #define _LOGD_LOG_TAGS_H__ |
19 | 19 | ||
20 | #include <string> | ||
20 | #include <unordered_map> | 21 | #include <unordered_map> |
21 | #include <unordered_set> | 22 | #include <unordered_set> |
22 | #include <string> | ||
23 | 23 | ||
24 | #include <utils/RWLock.h> | 24 | #include <utils/RWLock.h> |
25 | 25 | ||
@@ -35,64 +35,70 @@ class LogTags { | |||
35 | 35 | ||
36 | // key is Name + "+" + Format | 36 | // key is Name + "+" + Format |
37 | std::unordered_map<std::string, uint32_t> key2tag; | 37 | std::unordered_map<std::string, uint32_t> key2tag; |
38 | typedef std::unordered_map<std::string, uint32_t>::const_iterator key2tag_const_iterator; | 38 | typedef std::unordered_map<std::string, uint32_t>::const_iterator |
39 | key2tag_const_iterator; | ||
39 | 40 | ||
40 | // Allows us to manage access permissions based on uid registrants | 41 | // Allows us to manage access permissions based on uid registrants |
41 | // Global entries are specifically erased. | 42 | // Global entries are specifically erased. |
42 | typedef std::unordered_set<uid_t> uid_list; | 43 | typedef std::unordered_set<uid_t> uid_list; |
43 | std::unordered_map<uint32_t, uid_list> tag2uid; | 44 | std::unordered_map<uint32_t, uid_list> tag2uid; |
44 | typedef std::unordered_map<uint32_t, uid_list>::const_iterator tag2uid_const_iterator; | 45 | typedef std::unordered_map<uint32_t, uid_list>::const_iterator |
46 | tag2uid_const_iterator; | ||
45 | 47 | ||
46 | std::unordered_map<uint32_t, std::string> tag2name; | 48 | std::unordered_map<uint32_t, std::string> tag2name; |
47 | typedef std::unordered_map<uint32_t, std::string>::const_iterator tag2name_const_iterator; | 49 | typedef std::unordered_map<uint32_t, std::string>::const_iterator |
50 | tag2name_const_iterator; | ||
48 | 51 | ||
49 | std::unordered_map<uint32_t, std::string> tag2format; | 52 | std::unordered_map<uint32_t, std::string> tag2format; |
50 | typedef std::unordered_map<uint32_t, std::string>::const_iterator tag2format_const_iterator; | 53 | typedef std::unordered_map<uint32_t, std::string>::const_iterator |
54 | tag2format_const_iterator; | ||
51 | 55 | ||
52 | static const size_t max_per_uid = 256; // Put a cap on the tags per uid | 56 | static const size_t max_per_uid = 256; // Put a cap on the tags per uid |
53 | std::unordered_map<uid_t, size_t> uid2count; | 57 | std::unordered_map<uid_t, size_t> uid2count; |
54 | typedef std::unordered_map<uid_t, size_t>::const_iterator uid2count_const_iterator; | 58 | typedef std::unordered_map<uid_t, size_t>::const_iterator |
59 | uid2count_const_iterator; | ||
55 | 60 | ||
56 | // Dynamic entries are assigned | 61 | // Dynamic entries are assigned |
57 | std::unordered_map<uint32_t, size_t> tag2total; | 62 | std::unordered_map<uint32_t, size_t> tag2total; |
58 | typedef std::unordered_map<uint32_t, size_t>::const_iterator tag2total_const_iterator; | 63 | typedef std::unordered_map<uint32_t, size_t>::const_iterator |
64 | tag2total_const_iterator; | ||
59 | 65 | ||
60 | // emplace unique tag | 66 | // emplace unique tag |
61 | uint32_t nameToTag(uid_t uid, const char* name, const char* format); | 67 | uint32_t nameToTag(uid_t uid, const char* name, const char* format); |
62 | // find unique or associated tag | 68 | // find unique or associated tag |
63 | uint32_t nameToTag_locked(const std::string& name, const char* format, bool &unique); | 69 | uint32_t nameToTag_locked(const std::string& name, const char* format, |
70 | bool& unique); | ||
64 | 71 | ||
65 | // Record expected file watermarks to detect corruption. | 72 | // Record expected file watermarks to detect corruption. |
66 | std::unordered_map<std::string, size_t> file2watermark; | 73 | std::unordered_map<std::string, size_t> file2watermark; |
67 | typedef std::unordered_map<std::string, size_t>::const_iterator file2watermark_const_iterator; | 74 | typedef std::unordered_map<std::string, size_t>::const_iterator |
75 | file2watermark_const_iterator; | ||
68 | 76 | ||
69 | void ReadPersistEventLogTags(); | 77 | void ReadPersistEventLogTags(); |
70 | 78 | ||
71 | // format helpers | 79 | // format helpers |
72 | // format a single entry, does not need object data | 80 | // format a single entry, does not need object data |
73 | static std::string formatEntry(uint32_t tag, uid_t uid, | 81 | static std::string formatEntry(uint32_t tag, uid_t uid, const char* name, |
74 | const char* name, const char* format); | 82 | const char* format); |
75 | // caller locks, database lookup, authenticate against uid | 83 | // caller locks, database lookup, authenticate against uid |
76 | std::string formatEntry_locked(uint32_t tag, uid_t uid, | 84 | std::string formatEntry_locked(uint32_t tag, uid_t uid, |
77 | bool authenticate = true); | 85 | bool authenticate = true); |
78 | 86 | ||
79 | bool RebuildFileEventLogTags(const char* filename, bool warn = true); | 87 | bool RebuildFileEventLogTags(const char* filename, bool warn = true); |
80 | 88 | ||
81 | void AddEventLogTags(uint32_t tag, uid_t uid, | 89 | void AddEventLogTags(uint32_t tag, uid_t uid, const std::string& Name, |
82 | const std::string& Name, const std::string& Format, | 90 | const std::string& Format, const char* source = NULL, |
83 | const char* source = NULL, bool warn = false); | 91 | bool warn = false); |
84 | 92 | ||
85 | void WriteDynamicEventLogTags(uint32_t tag, uid_t uid); | 93 | void WriteDynamicEventLogTags(uint32_t tag, uid_t uid); |
86 | void WriteDebugEventLogTags(uint32_t tag, uid_t uid); | 94 | void WriteDebugEventLogTags(uint32_t tag, uid_t uid); |
87 | // push tag details to persistent storage | 95 | // push tag details to persistent storage |
88 | void WritePersistEventLogTags(uint32_t tag, | 96 | void WritePersistEventLogTags(uint32_t tag, uid_t uid = AID_ROOT, |
89 | uid_t uid = AID_ROOT, | ||
90 | const char* source = NULL); | 97 | const char* source = NULL); |
91 | 98 | ||
92 | static const uint32_t emptyTag = uint32_t(-1); | 99 | static const uint32_t emptyTag = uint32_t(-1); |
93 | 100 | ||
94 | public: | 101 | public: |
95 | |||
96 | static const char system_event_log_tags[]; | 102 | static const char system_event_log_tags[]; |
97 | static const char dynamic_event_log_tags[]; | 103 | static const char dynamic_event_log_tags[]; |
98 | // Only for userdebug and eng | 104 | // Only for userdebug and eng |
@@ -111,9 +117,8 @@ public: | |||
111 | uint32_t nameToTag(const char* name) const; | 117 | uint32_t nameToTag(const char* name) const; |
112 | 118 | ||
113 | // emplace tag if necessary, provide event-log-tag formated output in string | 119 | // emplace tag if necessary, provide event-log-tag formated output in string |
114 | std::string formatGetEventTag(uid_t uid, | 120 | std::string formatGetEventTag(uid_t uid, const char* name, |
115 | const char* name, | ||
116 | const char* format); | 121 | const char* format); |
117 | }; | 122 | }; |
118 | 123 | ||
119 | #endif // _LOGD_LOG_TAGS_H__ | 124 | #endif // _LOGD_LOG_TAGS_H__ |