98 lines
5.6 KiB
C++
98 lines
5.6 KiB
C++
/*
|
|
* Copyright (C) 2020 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "RecordFilter.h"
|
|
#include "command.h"
|
|
|
|
namespace simpleperf {
|
|
|
|
struct AddrFilter;
|
|
|
|
std::vector<AddrFilter> ParseAddrFilterOption(const std::string& s);
|
|
|
|
inline const OptionFormatMap& GetRecordCmdOptionFormats() {
|
|
static OptionFormatMap option_formats;
|
|
if (option_formats.empty()) {
|
|
option_formats = {
|
|
{"-a", {OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::NOT_ALLOWED}},
|
|
{"--add-meta-info",
|
|
{OptionValueType::STRING, OptionType::MULTIPLE, AppRunnerType::ALLOWED}},
|
|
{"--addr-filter", {OptionValueType::STRING, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--app", {OptionValueType::STRING, OptionType::SINGLE, AppRunnerType::NOT_ALLOWED}},
|
|
{"--aux-buffer-size", {OptionValueType::UINT, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"-b", {OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"-c", {OptionValueType::UINT, OptionType::ORDERED, AppRunnerType::ALLOWED}},
|
|
{"--call-graph", {OptionValueType::STRING, OptionType::ORDERED, AppRunnerType::ALLOWED}},
|
|
{"--callchain-joiner-min-matching-nodes",
|
|
{OptionValueType::UINT, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--clockid", {OptionValueType::STRING, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--cpu", {OptionValueType::STRING, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--cpu-percent", {OptionValueType::UINT, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--duration", {OptionValueType::DOUBLE, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"-e", {OptionValueType::STRING, OptionType::ORDERED, AppRunnerType::ALLOWED}},
|
|
{"--exclude-perf", {OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--exit-with-parent", {OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"-f", {OptionValueType::UINT, OptionType::ORDERED, AppRunnerType::ALLOWED}},
|
|
{"-g", {OptionValueType::NONE, OptionType::ORDERED, AppRunnerType::ALLOWED}},
|
|
{"--group", {OptionValueType::STRING, OptionType::ORDERED, AppRunnerType::ALLOWED}},
|
|
{"--in-app", {OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"-j", {OptionValueType::STRING, OptionType::MULTIPLE, AppRunnerType::ALLOWED}},
|
|
{"--keep-failed-unwinding-result",
|
|
{OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--keep-failed-unwinding-debug-info",
|
|
{OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::NOT_ALLOWED}},
|
|
{"--kprobe", {OptionValueType::STRING, OptionType::MULTIPLE, AppRunnerType::NOT_ALLOWED}},
|
|
{"-m", {OptionValueType::UINT, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--no-callchain-joiner",
|
|
{OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--no-cut-samples", {OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--no-dump-kernel-symbols",
|
|
{OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--no-dump-symbols", {OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--no-inherit", {OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--no-unwind", {OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::NOT_ALLOWED}},
|
|
{"-o", {OptionValueType::STRING, OptionType::SINGLE, AppRunnerType::NOT_ALLOWED}},
|
|
{"--out-fd", {OptionValueType::UINT, OptionType::SINGLE, AppRunnerType::CHECK_FD}},
|
|
{"-p", {OptionValueType::STRING, OptionType::MULTIPLE, AppRunnerType::ALLOWED}},
|
|
{"--post-unwind", {OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--post-unwind=no", {OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--post-unwind=yes", {OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--size-limit", {OptionValueType::UINT, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--start_profiling_fd",
|
|
{OptionValueType::UINT, OptionType::SINGLE, AppRunnerType::CHECK_FD}},
|
|
{"--stdio-controls-profiling",
|
|
{OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--stop-signal-fd", {OptionValueType::UINT, OptionType::SINGLE, AppRunnerType::CHECK_FD}},
|
|
{"--symfs", {OptionValueType::STRING, OptionType::SINGLE, AppRunnerType::CHECK_PATH}},
|
|
{"-t", {OptionValueType::STRING, OptionType::MULTIPLE, AppRunnerType::ALLOWED}},
|
|
{"--tp-filter", {OptionValueType::STRING, OptionType::ORDERED, AppRunnerType::ALLOWED}},
|
|
{"--trace-offcpu", {OptionValueType::NONE, OptionType::SINGLE, AppRunnerType::ALLOWED}},
|
|
{"--tracepoint-events",
|
|
{OptionValueType::STRING, OptionType::SINGLE, AppRunnerType::CHECK_PATH}},
|
|
};
|
|
const OptionFormatMap& record_filter_options = GetRecordFilterOptionFormats();
|
|
option_formats.insert(record_filter_options.begin(), record_filter_options.end());
|
|
}
|
|
return option_formats;
|
|
}
|
|
|
|
} // namespace simpleperf
|