1syntax = "proto2";
2
3package uprobestats.protos;
4
5message UprobestatsConfig {
6
7  // A Task consists of one or more probes that target the same process and are
8  // activated and deactivated together.
9  message Task {
10
11    // A ProbeConfig defines the spec of a single probe, including which BPF to
12    // use and where to place the probe.
13    message ProbeConfig {
14
15      // Name of the BPF program and function. E.g.
16      // prog_BitmapAllocation_uprobe_bitmap_constructor_heap. Note that this
17      // does not include the full BPF program path.
18      optional string bpf_name = 1;
19
20      // Path to an executable or a library. E.g.
21      // /system/framework/arm64/boot-framework.oat. This is made a repeated
22      // paths to allow backup paths to be provided. Sometimes a library may be
23      // re-compiled by ART and stored in a different location. uprobestats
24      // would try to place the probe on each of the paths in the order
25      // specified here until the probe is successfully placed.
26      repeated string file_paths = 2;
27
28      // Full method signature. E.g.
29      // void android.content.pm.PackageManagerInternal.finishPackageInstall(int, boolean)
30      optional string method_signature = 3;
31
32      // Name of the FD that the BPF program writes to. E.g.
33      // map_BitmapAllocation_output_buf. Note that this does not include the full file path.
34      optional string bpf_map = 4;
35    }
36
37    repeated ProbeConfig probe_configs = 1;
38
39    // Name of the process to be probed, e.g. system_server.
40    optional string target_process_name = 2;
41
42    // How long the probes should remain active.
43    optional int32 duration_seconds = 3;
44
45    message StatsdLoggingConfig {
46      optional int64 atom_id = 1;
47    }
48    optional StatsdLoggingConfig statsd_logging_config = 5;
49
50  }
51
52  repeated Task tasks = 1;
53}
54