1 /* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #ifndef FTRACE_FS_OPS_H 16 #define FTRACE_FS_OPS_H 17 18 #include <string> 19 #include <vector> 20 21 #include "ftrace_namespace.h" 22 23 #ifndef MOCKABLE 24 #define MOCKABLE virtual 25 #endif 26 27 FTRACE_NS_BEGIN 28 class FtraceFsOps { 29 public: 30 static FtraceFsOps& GetInstance(); 31 32 static std::string GetFtraceRoot(); 33 34 MOCKABLE std::string GetKernelSymbols() const; 35 MOCKABLE std::string GetPrintkFormats() const; 36 37 MOCKABLE std::string GetProcessComm(int pid); 38 MOCKABLE std::string GetThreadComm(int pid, int tid); 39 40 // for ftrace status nodes 41 bool SetSavedCmdLinesSize(uint32_t size); 42 MOCKABLE std::string GetSavedCmdLines() const; 43 MOCKABLE std::string GetSavedTgids() const; 44 MOCKABLE std::string GetPerCpuStats(int cpu) const; 45 MOCKABLE std::string GetRawTracePath(int cpu) const; 46 MOCKABLE std::string GetPageHeaderFormat() const; 47 MOCKABLE std::string GetEventDataFormat(const std::string& type, const std::string& name) const; 48 MOCKABLE std::vector<std::pair<std::string, std::string>> GetPlatformEvents(); 49 50 // for ftrace control nodes 51 MOCKABLE bool ClearTraceBuffer(); 52 MOCKABLE bool SetRecordCmdOption(bool enable); 53 MOCKABLE bool SetRecordTgidOption(bool enable); 54 MOCKABLE bool SetBufferSizeKb(int sizeKb); 55 MOCKABLE bool SetTraceClock(const std::string& clock); 56 MOCKABLE std::string GetTraceClock(); 57 MOCKABLE bool AppendSetEvent(const std::string& type, const std::string& name); 58 MOCKABLE bool ClearSetEvent(); 59 MOCKABLE bool EnableEvent(const std::string& type, const std::string& name); 60 MOCKABLE bool DisableEvent(const std::string& type, const std::string& name); 61 MOCKABLE bool DisableCategories(const std::string& categories); 62 MOCKABLE bool EnableTracing(); 63 MOCKABLE bool DisableTracing(); 64 65 // for UT SetFtraceRoot(std::string path)66 void SetFtraceRoot(std::string path) 67 { 68 ftraceRoot_ = path; 69 } 70 71 private: 72 FtraceFsOps(); 73 MOCKABLE ~FtraceFsOps(); 74 DISALLOW_COPY_AND_MOVE(FtraceFsOps); 75 76 private: 77 std::string ftraceRoot_; 78 }; 79 FTRACE_NS_END 80 81 #endif // FTRACE_FS_OPS_H