1/* 2 * Copyright (c) 2021-2022 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 SUBCOMMAND_LIST_H_ 16#define SUBCOMMAND_LIST_H_ 17 18#include <algorithm> 19#include <memory> 20#include <string> 21#include <vector> 22 23#include "debug_logger.h" 24#include "option.h" 25#include "perf_events.h" 26#include "subcommand.h" 27#include "utilities.h" 28 29namespace OHOS { 30namespace Developtools { 31namespace HiPerf { 32class SubCommandList : public SubCommand { 33public: 34 SubCommandList() 35 // clang-format off 36 : SubCommand("list", "List the supported event types.", 37 "Usage: hiperf list [event type name]\n" 38 " List all supported event types on this devices.\n" 39 " To list the events of a specific type, specify the type name\n" 40 " hw hardware events\n" 41 " sw software events\n" 42 " tp tracepoint events\n" 43 " cache hardware cache events\n" 44 " raw raw pmu events\n\n" 45 ) 46 // clang-format on 47 { 48 } 49 50 bool OnSubCommand(std::vector<std::string> &args) override; 51 52 static void RegisterSubCommandList(void); 53 54private: 55 PerfEvents perfEvents_; 56 57 const std::map<std::string, perf_type_id> SUPPORT_NAME_OPTIONS = { 58 {"hw", PERF_TYPE_HARDWARE}, {"sw", PERF_TYPE_SOFTWARE}, {"tp", PERF_TYPE_TRACEPOINT}, 59 {"cache", PERF_TYPE_HW_CACHE}, {"raw", PERF_TYPE_RAW}, 60 }; 61 62 bool ShowSupportEventsTypes(std::vector<perf_type_id> requestEventTypes); 63 void SetHM(); 64}; 65} // namespace HiPerf 66} // namespace Developtools 67} // namespace OHOS 68#endif // SUBCOMMAND_LIST_H_ 69