1 /* 2 * Copyright (C) 2014 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef _LOGD_LOG_WHITE_BLACK_LIST_H__ 18 #define _LOGD_LOG_WHITE_BLACK_LIST_H__ 19 20 #include <sys/types.h> 21 22 #include <string.h> 23 #include <list> 24 25 #include "LogBufferElement.h" 26 27 // White and Blacklist 28 29 class Prune { 30 friend class PruneList; 31 32 const uid_t mUid; 33 const pid_t mPid; 34 int cmp(uid_t uid, pid_t pid) const; 35 36 public: 37 static const uid_t uid_all = (uid_t)-1; 38 static const pid_t pid_all = (pid_t)-1; 39 40 Prune(uid_t uid, pid_t pid); 41 getUid()42 uid_t getUid() const { 43 return mUid; 44 } getPid()45 pid_t getPid() const { 46 return mPid; 47 } 48 cmp(LogBufferElement * e)49 int cmp(LogBufferElement* e) const { 50 return cmp(e->getUid(), e->getPid()); 51 } 52 53 std::string format(); 54 }; 55 56 typedef std::list<Prune> PruneCollection; 57 58 class PruneList { 59 PruneCollection mNaughty; 60 PruneCollection mNice; 61 bool mWorstUidEnabled; 62 bool mWorstPidOfSystemEnabled; 63 64 public: 65 PruneList(); 66 ~PruneList(); 67 68 int init(const char* str); 69 70 bool naughty(LogBufferElement* element); naughty(void)71 bool naughty(void) { 72 return !mNaughty.empty(); 73 } 74 bool nice(LogBufferElement* element); nice(void)75 bool nice(void) { 76 return !mNice.empty(); 77 } worstUidEnabled()78 bool worstUidEnabled() const { 79 return mWorstUidEnabled; 80 } worstPidOfSystemEnabled()81 bool worstPidOfSystemEnabled() const { 82 return mWorstPidOfSystemEnabled; 83 } 84 85 std::string format(); 86 }; 87 88 #endif // _LOGD_LOG_WHITE_BLACK_LIST_H__ 89