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 MOCKABLE std::string GetSavedCmdLines() const; 42 MOCKABLE std::string GetSavedTgids() const; 43 MOCKABLE std::string GetPerCpuStats(int cpu) const; 44 MOCKABLE std::string GetRawTracePath(int cpu) const; 45 MOCKABLE std::string GetPageHeaderFormat() const; 46 MOCKABLE std::string GetEventDataFormat(const std::string& type, const std::string& name) const; 47 MOCKABLE std::vector<std::pair<std::string, std::string>> GetPlatformEvents(); 48 49 // for ftrace control nodes 50 MOCKABLE bool ClearTraceBuffer(); 51 MOCKABLE bool SetRecordCmdOption(bool enable); 52 MOCKABLE bool SetRecordTgidOption(bool enable); 53 MOCKABLE bool SetBufferSizeKb(int sizeKb); 54 MOCKABLE bool SetTraceClock(const std::string& clock); 55 MOCKABLE std::string GetTraceClock(); 56 MOCKABLE bool AppendSetEvent(const std::string& type, const std::string& name); 57 MOCKABLE bool ClearSetEvent(); 58 MOCKABLE bool EnableEvent(const std::string& type, const std::string& name); 59 MOCKABLE bool DisableEvent(const std::string& type, const std::string& name); 60 MOCKABLE bool DisableCategories(const std::string& categories); 61 MOCKABLE bool EnableTracing(); 62 MOCKABLE bool DisableTracing(); 63 64 // for UT SetFtraceRoot(std::string path)65 void SetFtraceRoot(std::string path) 66 { 67 ftraceRoot_ = path; 68 } 69 70 private: 71 FtraceFsOps(); 72 MOCKABLE ~FtraceFsOps(); 73 DISALLOW_COPY_AND_MOVE(FtraceFsOps); 74 75 private: 76 std::string ftraceRoot_; 77 }; 78 FTRACE_NS_END 79 80 #endif // FTRACE_FS_OPS_H