import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import type { Message } from "@bufbuild/protobuf";
/**
 * Describes the file protos/perfetto/config/ftrace/ftrace_config.proto.
 */
export declare const file_protos_perfetto_config_ftrace_ftrace_config: GenFile;
/**
 * Next id: 31
 *
 * @generated from message perfetto.protos.FtraceConfig
 */
export type FtraceConfig = Message<"perfetto.protos.FtraceConfig"> & {
    /**
     * Ftrace events to record, example: "sched/sched_switch".
     *
     * @generated from field: repeated string ftrace_events = 1;
     */
    ftraceEvents: string[];
    /**
     * Ftrace events to record, specific for kprobes and kretprobes
     *
     * @generated from field: repeated perfetto.protos.FtraceConfig.KprobeEvent kprobe_events = 30;
     */
    kprobeEvents: FtraceConfig_KprobeEvent[];
    /**
     * Android-specific event categories:
     *
     * @generated from field: repeated string atrace_categories = 2;
     */
    atraceCategories: string[];
    /**
     * @generated from field: repeated string atrace_apps = 3;
     */
    atraceApps: string[];
    /**
     * Some processes can emit data through atrace or through the perfetto SDK via
     * the "track_event" data source. For these categories, the SDK will be
     * preferred, if possible, for this config.
     *
     * @generated from field: repeated string atrace_categories_prefer_sdk = 28;
     */
    atraceCategoriesPreferSdk: string[];
    /**
     * Size of each per-cpu kernel ftrace ring buffer.
     * Not guaranteed if there are multiple concurrent tracing sessions, as the
     * buffers cannot be resized without pausing recording in the kernel.
     *
     * @generated from field: optional uint32 buffer_size_kb = 10;
     */
    bufferSizeKb: number;
    /**
     * If set, specifies how often the tracing daemon reads from the kernel ring
     * buffer. Not guaranteed if there are multiple concurrent tracing sessions.
     * Leave unset unless you're fine-tuning a local config.
     *
     * @generated from field: optional uint32 drain_period_ms = 11;
     */
    drainPeriodMs: number;
    /**
     * If set, the tracing daemon will read kernel ring buffers as soon as
     * they're filled past this percentage of occupancy. In other words, a value
     * of 50 means that a read pass is triggered as soon as any per-cpu buffer is
     * half-full. Not guaranteed if there are multiple concurrent tracing
     * sessions.
     * Currently does nothing on Linux kernels below v6.9.
     * Introduced in: perfetto v48.
     *
     * @generated from field: optional uint32 drain_buffer_percent = 29;
     */
    drainBufferPercent: number;
    /**
     * @generated from field: optional perfetto.protos.FtraceConfig.CompactSchedConfig compact_sched = 12;
     */
    compactSched?: FtraceConfig_CompactSchedConfig;
    /**
     * @generated from field: optional perfetto.protos.FtraceConfig.PrintFilter print_filter = 22;
     */
    printFilter?: FtraceConfig_PrintFilter;
    /**
     * Enables symbol name resolution against /proc/kallsyms.
     * It requires that either traced_probes is running as root or that
     * kptr_restrict has been manually lowered.
     * It does not disclose KASLR, symbol addresses are mangled.
     *
     * @generated from field: optional bool symbolize_ksyms = 13;
     */
    symbolizeKsyms: boolean;
    /**
     * @generated from field: optional perfetto.protos.FtraceConfig.KsymsMemPolicy ksyms_mem_policy = 17;
     */
    ksymsMemPolicy: FtraceConfig_KsymsMemPolicy;
    /**
     * By default the kernel symbolizer is lazily initialized on a deferred task
     * to reduce ftrace's time-to-start-recording. Unfortunately that makes
     * ksyms integration tests hard. This flag forces the kernel symbolizer to be
     * initialized synchronously on the data source start and hence avoiding
     * timing races in tests.
     * DEPRECATED in v28 / Android U. This is now the default behavior, setting it
     * to true is a no-op.
     *
     * @generated from field: optional bool initialize_ksyms_synchronously_for_testing = 14 [deprecated = true];
     * @deprecated
     */
    initializeKsymsSynchronouslyForTesting: boolean;
    /**
     * When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
     * this option causes traced_probes to enable the "kmem/rss_stat_throttled"
     * event instead if present, and fall back to "kmem/rss_stat" if not present.
     * The historical context for this is the following:
     * - Up to Android S (12), the rss_stat was internally throttled in its
     *   kernel implementation.
     * - A change introduced in the kernels after S has introduced a new
     *   "rss_stat_throttled" making the original "rss_stat" event unthrottled
     *   (hence very spammy).
     * - Not all Android T/13 devices will receive a new kernel though, hence we
     *   need to deal with both cases.
     * For more context: go/rss-stat-throttled.
     *
     * @generated from field: optional bool throttle_rss_stat = 15;
     */
    throttleRssStat: boolean;
    /**
     * If true, avoid enabling events that aren't statically known by
     * traced_probes. Otherwise, the default is to emit such events as
     * GenericFtraceEvent protos.
     * Prefer to keep this flag at its default. This was added for Android
     * tracing, where atrace categories and/or atrace HAL requested events can
     * expand to events that aren't of interest to the tracing user.
     * Introduced in: Android T.
     *
     * @generated from field: optional bool disable_generic_events = 16;
     */
    disableGenericEvents: boolean;
    /**
     * The subset of syscalls to record. To record all syscalls, leave this unset
     * and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
     * * before perfetto v43, requires the config to also enable
     *   raw_syscalls/sys_{enter,exit}.
     * * perfetto v43+ does the right thing if you set only this field.
     * Example: ["sys_read", "sys_open"].
     * Introduced in: Android U.
     *
     * @generated from field: repeated string syscall_events = 18;
     */
    syscallEvents: string[];
    /**
     * If true, enable the "function_graph" kernel tracer that emits events
     * whenever a kernel function is entered and exited
     * (funcgraph_entry/funcgraph_exit).
     * Notes on use:
     * * Requires |symbolize_ksyms| for function name resolution.
     * * Use |function_filters| or |function_graph_roots| to constrain the traced
     *   set of functions, otherwise the event bandwidth will be too high for
     *   practical use.
     * * The data source might be rejected if there is already a concurrent
     *   ftrace data source that does not use function graph itself, as we do not
     *   support switching kernel tracers mid-trace.
     * * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
     *   enabled if "cat /sys/kernel/tracing/available_tracers" includes
     *   "function_graph".
     * Android:
     * * Available only on debuggable builds.
     * * Introduced in: Android U.
     *
     * @generated from field: optional bool enable_function_graph = 19;
     */
    enableFunctionGraph: boolean;
    /**
     * Constrains the set of functions traced when |enable_function_graph| is
     * true. Supports globs, e.g. "sched*". You can specify multiple filters,
     * in which case all matching functions will be traced. See kernel
     * documentation on ftrace "set_ftrace_filter" file for more details.
     * Android:
     * * Available only on debuggable builds.
     * * Introduced in: Android U.
     *
     * @generated from field: repeated string function_filters = 20;
     */
    functionFilters: string[];
    /**
     * If |enable_function_graph| is true, trace this set of functions *and* all
     * of its callees. Supports globs. Can be set together with
     * |function_filters|, in which case only callees matching the filter will be
     * traced. If setting both, you most likely want all roots to also be
     * included in |function_filters|.
     * Android:
     * * Available only on debuggable builds.
     * * Introduced in: Android U.
     *
     * @generated from field: repeated string function_graph_roots = 21;
     */
    functionGraphRoots: string[];
    /**
     * If true, does not clear ftrace buffers before the start of the program.
     * This makes sense only if this is the first ftrace data source instance
     * created after the daemon has been started. Can be useful for gathering boot
     * traces, if ftrace has been separately configured (e.g. via kernel
     * commandline).
     *
     * @generated from field: optional bool preserve_ftrace_buffer = 23;
     */
    preserveFtraceBuffer: boolean;
    /**
     * If true, overrides the default timestamp clock and uses a raw hardware
     * based monotonic clock for getting timestamps.
     * * Introduced in: Android U.
     *
     * @generated from field: optional bool use_monotonic_raw_clock = 24;
     */
    useMonotonicRawClock: boolean;
    /**
     * If |instance_name| is not empty, then attempt to use that tracefs instance
     * for event recording. Normally, this means
     * `/sys/kernel/tracing/instances/$instance_name`.
     *
     * The name "hyp" is reserved.
     *
     * The instance must already exist, the tracing daemon *will not* create it
     * for you as it typically doesn't have such permissions.
     * Only a subset of features is guaranteed to work with non-default instances,
     * at the time of writing:
     *  * ftrace_events
     *  * buffer_size_kb
     *
     * @generated from field: optional string instance_name = 25;
     */
    instanceName: string;
    /**
     * If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
     * implementation to choose a bigger buffer size.
     *
     * Most configs for perfetto v43+ should simply leave both fields unset.
     *
     * If you need a config compatible with a range of perfetto builds and you
     * used to set a non-default buffer_size_kb, consider setting both fields.
     * Example:
     *   buffer_size_kb: 4096
     *   buffer_size_lower_bound: true
     * On older builds, the per-cpu buffers will be exactly 4 MB.
     * On v43+, buffers will be at least 4 MB.
     * In both cases, neither is guaranteed if there are other concurrent
     * perfetto ftrace sessions, as the buffers cannot be resized without pausing
     * the recording in the kernel.
     * Introduced in: perfetto v43.
     *
     * @generated from field: optional bool buffer_size_lower_bound = 27;
     */
    bufferSizeLowerBound: boolean;
};
/**
 * Describes the message perfetto.protos.FtraceConfig.
 * Use `create(FtraceConfigSchema)` to create a new message.
 */
export declare const FtraceConfigSchema: GenMessage<FtraceConfig>;
/**
 * @generated from message perfetto.protos.FtraceConfig.KprobeEvent
 */
export type FtraceConfig_KprobeEvent = Message<"perfetto.protos.FtraceConfig.KprobeEvent"> & {
    /**
     * Kernel function name to attach to, for example "fuse_file_write_iter"
     *
     * @generated from field: optional string probe = 1;
     */
    probe: string;
    /**
     * @generated from field: optional perfetto.protos.FtraceConfig.KprobeEvent.KprobeType type = 2;
     */
    type: FtraceConfig_KprobeEvent_KprobeType;
};
/**
 * Describes the message perfetto.protos.FtraceConfig.KprobeEvent.
 * Use `create(FtraceConfig_KprobeEventSchema)` to create a new message.
 */
export declare const FtraceConfig_KprobeEventSchema: GenMessage<FtraceConfig_KprobeEvent>;
/**
 * @generated from enum perfetto.protos.FtraceConfig.KprobeEvent.KprobeType
 */
export declare enum FtraceConfig_KprobeEvent_KprobeType {
    /**
     * @generated from enum value: KPROBE_TYPE_UNKNOWN = 0;
     */
    UNKNOWN = 0,
    /**
     * @generated from enum value: KPROBE_TYPE_KPROBE = 1;
     */
    KPROBE = 1,
    /**
     * @generated from enum value: KPROBE_TYPE_KRETPROBE = 2;
     */
    KRETPROBE = 2,
    /**
     * @generated from enum value: KPROBE_TYPE_BOTH = 3;
     */
    BOTH = 3
}
/**
 * Describes the enum perfetto.protos.FtraceConfig.KprobeEvent.KprobeType.
 */
export declare const FtraceConfig_KprobeEvent_KprobeTypeSchema: GenEnum<FtraceConfig_KprobeEvent_KprobeType>;
/**
 * Configuration for compact encoding of scheduler events. When enabled (and
 * recording the relevant ftrace events), specific high-volume events are
 * encoded in a denser format than normal.
 *
 * @generated from message perfetto.protos.FtraceConfig.CompactSchedConfig
 */
export type FtraceConfig_CompactSchedConfig = Message<"perfetto.protos.FtraceConfig.CompactSchedConfig"> & {
    /**
     * If true, and sched_switch or sched_waking ftrace events are enabled,
     * record those events in the compact format.
     *
     * If the field is unset, the default is:
     * * perfetto v42.0+: enabled
     * * before: disabled
     *
     * @generated from field: optional bool enabled = 1;
     */
    enabled: boolean;
};
/**
 * Describes the message perfetto.protos.FtraceConfig.CompactSchedConfig.
 * Use `create(FtraceConfig_CompactSchedConfigSchema)` to create a new message.
 */
export declare const FtraceConfig_CompactSchedConfigSchema: GenMessage<FtraceConfig_CompactSchedConfig>;
/**
 * Optional filter for "ftrace/print" events.
 *
 * The filter consists of multiple rules. As soon as a rule matches (the rules
 * are processed in order), its `allow` field will be used as the outcome: if
 * `allow` is true, the event will be included in the trace, otherwise it will
 * be discarded. If an event does not match any rule, it will be allowed by
 * default (a rule with an empty prefix and allow=false, disallows everything
 * by default).
 *
 * @generated from message perfetto.protos.FtraceConfig.PrintFilter
 */
export type FtraceConfig_PrintFilter = Message<"perfetto.protos.FtraceConfig.PrintFilter"> & {
    /**
     * @generated from field: repeated perfetto.protos.FtraceConfig.PrintFilter.Rule rules = 1;
     */
    rules: FtraceConfig_PrintFilter_Rule[];
};
/**
 * Describes the message perfetto.protos.FtraceConfig.PrintFilter.
 * Use `create(FtraceConfig_PrintFilterSchema)` to create a new message.
 */
export declare const FtraceConfig_PrintFilterSchema: GenMessage<FtraceConfig_PrintFilter>;
/**
 * @generated from message perfetto.protos.FtraceConfig.PrintFilter.Rule
 */
export type FtraceConfig_PrintFilter_Rule = Message<"perfetto.protos.FtraceConfig.PrintFilter.Rule"> & {
    /**
     * @generated from oneof perfetto.protos.FtraceConfig.PrintFilter.Rule.match
     */
    match: {
        /**
         * This rule matches if `prefix` matches exactly with the beginning of
         * the "ftrace/print" "buf" field.
         *
         * @generated from field: string prefix = 1;
         */
        value: string;
        case: "prefix";
    } | {
        /**
         * This rule matches if the "buf" field contains an atrace-style print
         * message as specified in `atrace_msg`.
         *
         * @generated from field: perfetto.protos.FtraceConfig.PrintFilter.Rule.AtraceMessage atrace_msg = 3;
         */
        value: FtraceConfig_PrintFilter_Rule_AtraceMessage;
        case: "atraceMsg";
    } | {
        case: undefined;
        value?: undefined;
    };
    /**
     * @generated from field: optional bool allow = 2;
     */
    allow: boolean;
};
/**
 * Describes the message perfetto.protos.FtraceConfig.PrintFilter.Rule.
 * Use `create(FtraceConfig_PrintFilter_RuleSchema)` to create a new message.
 */
export declare const FtraceConfig_PrintFilter_RuleSchema: GenMessage<FtraceConfig_PrintFilter_Rule>;
/**
 * Matches an atrace message of the form:
 * <type>|pid|<prefix>...
 *
 * @generated from message perfetto.protos.FtraceConfig.PrintFilter.Rule.AtraceMessage
 */
export type FtraceConfig_PrintFilter_Rule_AtraceMessage = Message<"perfetto.protos.FtraceConfig.PrintFilter.Rule.AtraceMessage"> & {
    /**
     * @generated from field: optional string type = 1;
     */
    type: string;
    /**
     * @generated from field: optional string prefix = 2;
     */
    prefix: string;
};
/**
 * Describes the message perfetto.protos.FtraceConfig.PrintFilter.Rule.AtraceMessage.
 * Use `create(FtraceConfig_PrintFilter_Rule_AtraceMessageSchema)` to create a new message.
 */
export declare const FtraceConfig_PrintFilter_Rule_AtraceMessageSchema: GenMessage<FtraceConfig_PrintFilter_Rule_AtraceMessage>;
/**
 * When symbolize_ksyms=true, determines whether the traced_probes daemon
 * should keep the symbol map in memory (and reuse it for future tracing
 * sessions) or clear it (saving memory) and re-create it on each tracing
 * session (wasting cpu and wall time).
 * The tradeoff is roughly:
 *  KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
 *  KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
 * Default behavior: KSYMS_CLEANUP_ON_STOP.
 *
 * @generated from enum perfetto.protos.FtraceConfig.KsymsMemPolicy
 */
export declare enum FtraceConfig_KsymsMemPolicy {
    /**
     * @generated from enum value: KSYMS_UNSPECIFIED = 0;
     */
    KSYMS_UNSPECIFIED = 0,
    /**
     * @generated from enum value: KSYMS_CLEANUP_ON_STOP = 1;
     */
    KSYMS_CLEANUP_ON_STOP = 1,
    /**
     * @generated from enum value: KSYMS_RETAIN = 2;
     */
    KSYMS_RETAIN = 2
}
/**
 * Describes the enum perfetto.protos.FtraceConfig.KsymsMemPolicy.
 */
export declare const FtraceConfig_KsymsMemPolicySchema: GenEnum<FtraceConfig_KsymsMemPolicy>;
//# sourceMappingURL=ftrace_config_pb.d.ts.map