xref: /linux/tools/perf/python/perf.pyi (revision b9514a9a13fc782546df0fae7d5767dadd2094f5)
1fed8332bSIan Rogers"""Type stubs for the perf Python module."""
2*b9514a9aSIan Rogersfrom typing import Callable, Dict, List, Optional, Any, Iterator, Union
3fed8332bSIan Rogers
4fed8332bSIan Rogersdef config_get(name: str) -> Optional[str]:
5fed8332bSIan Rogers    """Get a configuration value from perf config.
6fed8332bSIan Rogers
7fed8332bSIan Rogers    Args:
8fed8332bSIan Rogers        name: The configuration variable name (e.g., 'colors.top').
9fed8332bSIan Rogers
10fed8332bSIan Rogers    Returns:
11fed8332bSIan Rogers        The configuration value as a string, or None if not set.
12fed8332bSIan Rogers    """
13fed8332bSIan Rogers    ...
14fed8332bSIan Rogers
15*b9514a9aSIan Rogersdef metrics() -> List[Dict[str, Union[str, List[str]]]]:
16fed8332bSIan Rogers    """Get a list of available metrics.
17fed8332bSIan Rogers
18fed8332bSIan Rogers    Returns:
19fed8332bSIan Rogers        A list of dictionaries, each describing a metric.
20fed8332bSIan Rogers    """
21fed8332bSIan Rogers    ...
22fed8332bSIan Rogers
23fed8332bSIan Rogersdef syscall_name(id: int, *, elf_machine: Optional[int] = None) -> str:
24fed8332bSIan Rogers    """Convert a syscall number to its name.
25fed8332bSIan Rogers
26fed8332bSIan Rogers    Args:
27fed8332bSIan Rogers        sc_id: The syscall number.
28fed8332bSIan Rogers        elf_machine: Optional ELF machine type.
29fed8332bSIan Rogers
30fed8332bSIan Rogers    Returns:
31fed8332bSIan Rogers        The name of the syscall.
32fed8332bSIan Rogers    """
33fed8332bSIan Rogers    ...
34fed8332bSIan Rogers
35fed8332bSIan Rogersdef syscall_id(name: str, *, elf_machine: Optional[int] = None) -> int:
36fed8332bSIan Rogers    """Convert a syscall name to its number.
37fed8332bSIan Rogers
38fed8332bSIan Rogers    Args:
39fed8332bSIan Rogers        name: The syscall name.
40fed8332bSIan Rogers        elf_machine: Optional ELF machine type.
41fed8332bSIan Rogers
42fed8332bSIan Rogers    Returns:
43fed8332bSIan Rogers        The number of the syscall.
44fed8332bSIan Rogers    """
45fed8332bSIan Rogers    ...
46fed8332bSIan Rogers
47fed8332bSIan Rogersdef parse_events(
48fed8332bSIan Rogers    event_string: str,
49fed8332bSIan Rogers    cpus: Optional[cpu_map] = None,
50fed8332bSIan Rogers    threads: Optional['thread_map'] = None
51fed8332bSIan Rogers) -> 'evlist':
52fed8332bSIan Rogers    """Parse an event string and return an evlist.
53fed8332bSIan Rogers
54fed8332bSIan Rogers    Args:
55fed8332bSIan Rogers        event_string: The event string (e.g., 'cycles,instructions').
56fed8332bSIan Rogers        cpus: Optional CPU map to bind events to.
57fed8332bSIan Rogers        threads: Optional thread map to bind events to.
58fed8332bSIan Rogers
59fed8332bSIan Rogers    Returns:
60fed8332bSIan Rogers        An evlist containing the parsed events.
61fed8332bSIan Rogers    """
62fed8332bSIan Rogers    ...
63fed8332bSIan Rogers
64fed8332bSIan Rogersdef parse_metrics(
65fed8332bSIan Rogers    metrics_string: str,
66fed8332bSIan Rogers    pmu: Optional[str] = None,
67fed8332bSIan Rogers    cpus: Optional[cpu_map] = None,
68fed8332bSIan Rogers    threads: Optional['thread_map'] = None
69fed8332bSIan Rogers) -> 'evlist':
70fed8332bSIan Rogers    """Parse a string of metrics or metric groups and return an evlist."""
71fed8332bSIan Rogers    ...
72fed8332bSIan Rogers
73fed8332bSIan Rogersdef tracepoint(sys: str, name: str) -> int:
74fed8332bSIan Rogers    """Returns the tracepoint ID for a given system and name."""
75fed8332bSIan Rogers    ...
76fed8332bSIan Rogers
77fed8332bSIan Rogersdef pmus() -> Iterator[Any]:
78fed8332bSIan Rogers    """Returns a sequence of pmus."""
79fed8332bSIan Rogers    ...
80fed8332bSIan Rogers
81fed8332bSIan Rogersclass data:
82fed8332bSIan Rogers    """Represents a perf data file."""
83fed8332bSIan Rogers    def __init__(self, path: str = ..., fd: int = ...) -> None: ...
84fed8332bSIan Rogers
85fed8332bSIan Rogersclass thread:
86fed8332bSIan Rogers    """Represents a thread in the system."""
87fed8332bSIan Rogers    def comm(self) -> str:
88fed8332bSIan Rogers        """Get the command name of the thread."""
89fed8332bSIan Rogers        ...
90fed8332bSIan Rogers    pid: int
91fed8332bSIan Rogers    tid: int
92fed8332bSIan Rogers    ppid: int
93fed8332bSIan Rogers    cpu: int
94fed8332bSIan Rogers
95fed8332bSIan Rogersclass counts_values:
96fed8332bSIan Rogers    """Raw counter values."""
97fed8332bSIan Rogers    id: int
98fed8332bSIan Rogers    val: int
99fed8332bSIan Rogers    ena: int
100fed8332bSIan Rogers    run: int
101fed8332bSIan Rogers    lost: int
102fed8332bSIan Rogers    values: List[int]
103fed8332bSIan Rogers
104fed8332bSIan Rogersclass thread_map:
105fed8332bSIan Rogers    """Map of threads being monitored."""
106fed8332bSIan Rogers    def __init__(self, pid: int = -1, tid: int = -1) -> None:
107fed8332bSIan Rogers        """Initialize a thread map.
108fed8332bSIan Rogers
109fed8332bSIan Rogers        Args:
110fed8332bSIan Rogers            pid: Process ID to monitor (-1 for all).
111fed8332bSIan Rogers            tid: Thread ID to monitor (-1 for all).
112fed8332bSIan Rogers        """
113fed8332bSIan Rogers        ...
114fed8332bSIan Rogers    def __len__(self) -> int: ...
115fed8332bSIan Rogers    def __getitem__(self, index: int) -> int: ...
116fed8332bSIan Rogers    def __iter__(self) -> Iterator[int]: ...
117fed8332bSIan Rogers
118fed8332bSIan Rogersclass evsel:
119fed8332bSIan Rogers    """Event selector, represents a single event being monitored."""
120fed8332bSIan Rogers    def __init__(
121fed8332bSIan Rogers        self,
122fed8332bSIan Rogers        type: int = ...,
123fed8332bSIan Rogers        config: int = ...,
124fed8332bSIan Rogers        sample_freq: int = ...,
125fed8332bSIan Rogers        sample_period: int = ...,
126fed8332bSIan Rogers        sample_type: int = ...,
127fed8332bSIan Rogers        read_format: int = ...,
128fed8332bSIan Rogers        disabled: bool = ...,
129fed8332bSIan Rogers        inherit: bool = ...,
130fed8332bSIan Rogers        pinned: bool = ...,
131fed8332bSIan Rogers        exclusive: bool = ...,
132fed8332bSIan Rogers        exclude_user: bool = ...,
133fed8332bSIan Rogers        exclude_kernel: bool = ...,
134fed8332bSIan Rogers        exclude_hv: bool = ...,
135fed8332bSIan Rogers        exclude_idle: bool = ...,
136fed8332bSIan Rogers        mmap: bool = ...,
137fed8332bSIan Rogers        context_switch: bool = ...,
138fed8332bSIan Rogers        comm: bool = ...,
139fed8332bSIan Rogers        freq: bool = ...,
140fed8332bSIan Rogers        inherit_stat: bool = ...,
141fed8332bSIan Rogers        enable_on_exec: bool = ...,
142fed8332bSIan Rogers        task: bool = ...,
143fed8332bSIan Rogers        watermark: int = ...,
144fed8332bSIan Rogers        precise_ip: int = ...,
145fed8332bSIan Rogers        mmap_data: bool = ...,
146fed8332bSIan Rogers        sample_id_all: bool = ...,
147fed8332bSIan Rogers        wakeup_events: int = ...,
148fed8332bSIan Rogers        bp_type: int = ...,
149fed8332bSIan Rogers        bp_addr: int = ...,
150fed8332bSIan Rogers        bp_len: int = ...,
151fed8332bSIan Rogers        idx: int = ...,
152fed8332bSIan Rogers    ) -> None: ...
153fed8332bSIan Rogers    def __str__(self) -> str:
154fed8332bSIan Rogers        """Return string representation of the event."""
155fed8332bSIan Rogers        ...
156fed8332bSIan Rogers    def open(self) -> None:
157fed8332bSIan Rogers        """Open the event selector file descriptor table."""
158fed8332bSIan Rogers        ...
159fed8332bSIan Rogers    def read(self, cpu: int, thread: int) -> counts_values:
160fed8332bSIan Rogers        """Read counter values for a specific CPU and thread."""
161fed8332bSIan Rogers        ...
162fed8332bSIan Rogers    ids: List[int]
163fed8332bSIan Rogers    def cpus(self) -> cpu_map:
164fed8332bSIan Rogers        """Get CPU map for this event."""
165fed8332bSIan Rogers        ...
166fed8332bSIan Rogers    def threads(self) -> thread_map:
167fed8332bSIan Rogers        """Get thread map for this event."""
168fed8332bSIan Rogers        ...
169fed8332bSIan Rogers    tracking: bool
170fed8332bSIan Rogers    config: int
171fed8332bSIan Rogers    read_format: int
172fed8332bSIan Rogers    sample_period: int
173fed8332bSIan Rogers    sample_type: int
174fed8332bSIan Rogers    size: int
175fed8332bSIan Rogers    type: int
176fed8332bSIan Rogers    wakeup_events: int
177fed8332bSIan Rogers
178fed8332bSIan Rogers
179fed8332bSIan Rogersclass _sample_members:
180fed8332bSIan Rogers    sample_pid: int
181fed8332bSIan Rogers    sample_tid: int
182fed8332bSIan Rogers    sample_time: int
183fed8332bSIan Rogers    sample_id: int
184fed8332bSIan Rogers    sample_stream_id: int
185fed8332bSIan Rogers    sample_period: int
186fed8332bSIan Rogers    sample_cpu: int
187fed8332bSIan Rogers
188fed8332bSIan Rogersclass sample_event(_sample_members):
189fed8332bSIan Rogers    """Represents a sample event from perf."""
190fed8332bSIan Rogers    evsel: evsel
191fed8332bSIan Rogers    sample_ip: int
192fed8332bSIan Rogers    sample_addr: int
193fed8332bSIan Rogers    sample_phys_addr: int
194fed8332bSIan Rogers    sample_weight: int
195fed8332bSIan Rogers    sample_data_src: int
196fed8332bSIan Rogers    sample_insn_count: int
197fed8332bSIan Rogers    sample_cyc_count: int
198fed8332bSIan Rogers    type: int
199fed8332bSIan Rogers    raw_buf: bytes
200fed8332bSIan Rogers    dso: str
201fed8332bSIan Rogers    dso_long_name: str
202fed8332bSIan Rogers    dso_bid: Optional[bytes]
203fed8332bSIan Rogers    map_start: int
204fed8332bSIan Rogers    map_end: int
205fed8332bSIan Rogers    map_pgoff: int
206fed8332bSIan Rogers    symbol: str
207fed8332bSIan Rogers    sym_start: int
208fed8332bSIan Rogers    sym_end: int
209fed8332bSIan Rogers    brstack: Optional['branch_stack']
210fed8332bSIan Rogers    callchain: Optional['callchain']
211fed8332bSIan Rogers    def srccode(self) -> str: ...
212fed8332bSIan Rogers    def insn(self) -> str: ...
213fed8332bSIan Rogers    def __getattr__(self, name: str) -> Any: ...
214fed8332bSIan Rogers
215fed8332bSIan Rogersclass mmap_event(_sample_members):
216fed8332bSIan Rogers    """Represents a mmap event from perf."""
217fed8332bSIan Rogers    type: int
218fed8332bSIan Rogers    misc: int
219fed8332bSIan Rogers    pid: int
220fed8332bSIan Rogers    tid: int
221fed8332bSIan Rogers    start: int
222fed8332bSIan Rogers    len: int
223fed8332bSIan Rogers    pgoff: int
224fed8332bSIan Rogers    filename: str
225fed8332bSIan Rogers    evsel: Optional['evsel']
226fed8332bSIan Rogers
227fed8332bSIan Rogersclass mmap2_event(_sample_members):
228fed8332bSIan Rogers    """Represents a mmap2 event from perf."""
229fed8332bSIan Rogers    type: int
230fed8332bSIan Rogers    misc: int
231fed8332bSIan Rogers    pid: int
232fed8332bSIan Rogers    tid: int
233fed8332bSIan Rogers    start: int
234fed8332bSIan Rogers    len: int
235fed8332bSIan Rogers    pgoff: int
236fed8332bSIan Rogers    prot: int
237fed8332bSIan Rogers    flags: int
238fed8332bSIan Rogers    filename: str
239fed8332bSIan Rogers    maj: Optional[int]
240fed8332bSIan Rogers    min: Optional[int]
241fed8332bSIan Rogers    ino: Optional[int]
242fed8332bSIan Rogers    ino_generation: Optional[int]
243fed8332bSIan Rogers    build_id: Optional[bytes]
244fed8332bSIan Rogers    evsel: Optional['evsel']
245fed8332bSIan Rogers
246fed8332bSIan Rogersclass lost_event(_sample_members):
247fed8332bSIan Rogers    """Represents a lost events record."""
248fed8332bSIan Rogers    type: int
249fed8332bSIan Rogers    id: int
250fed8332bSIan Rogers    lost: int
251fed8332bSIan Rogers    evsel: Optional['evsel']
252fed8332bSIan Rogers
253fed8332bSIan Rogersclass comm_event(_sample_members):
254fed8332bSIan Rogers    """Represents a COMM record."""
255fed8332bSIan Rogers    type: int
256fed8332bSIan Rogers    pid: int
257fed8332bSIan Rogers    tid: int
258fed8332bSIan Rogers    comm: str
259fed8332bSIan Rogers    evsel: Optional['evsel']
260fed8332bSIan Rogers
261fed8332bSIan Rogersclass task_event(_sample_members):
262fed8332bSIan Rogers    """Represents an EXIT or FORK record."""
263fed8332bSIan Rogers    type: int
264fed8332bSIan Rogers    pid: int
265fed8332bSIan Rogers    ppid: int
266fed8332bSIan Rogers    tid: int
267fed8332bSIan Rogers    ptid: int
268fed8332bSIan Rogers    time: int
269fed8332bSIan Rogers    evsel: Optional['evsel']
270fed8332bSIan Rogers
271fed8332bSIan Rogersclass throttle_event(_sample_members):
272fed8332bSIan Rogers    """Represents a THROTTLE or UNTHROTTLE record."""
273fed8332bSIan Rogers    type: int
274fed8332bSIan Rogers    time: int
275fed8332bSIan Rogers    id: int
276fed8332bSIan Rogers    stream_id: int
277fed8332bSIan Rogers    evsel: Optional['evsel']
278fed8332bSIan Rogers
279fed8332bSIan Rogersclass read_event(_sample_members):
280fed8332bSIan Rogers    """Represents a READ record."""
281fed8332bSIan Rogers    type: int
282fed8332bSIan Rogers    pid: int
283fed8332bSIan Rogers    tid: int
284fed8332bSIan Rogers    evsel: Optional['evsel']
285fed8332bSIan Rogers
286fed8332bSIan Rogersclass switch_event(_sample_members):
287fed8332bSIan Rogers    """Represents a SWITCH or SWITCH_CPU_WIDE record."""
288fed8332bSIan Rogers    type: int
289fed8332bSIan Rogers    next_prev_pid: int
290fed8332bSIan Rogers    next_prev_tid: int
291fed8332bSIan Rogers    evsel: Optional['evsel']
292fed8332bSIan Rogers
293fed8332bSIan Rogersclass branch_entry:
294fed8332bSIan Rogers    """Represents a branch entry in the branch stack.
295fed8332bSIan Rogers
296fed8332bSIan Rogers    Attributes:
297fed8332bSIan Rogers        from_ip: Source address of the branch (corresponds to 'from' keyword in C).
298fed8332bSIan Rogers        to_ip: Destination address of the branch.
299fed8332bSIan Rogers        mispred: True if the branch was mispredicted.
300fed8332bSIan Rogers        predicted: True if the branch was predicted.
301fed8332bSIan Rogers        in_tx: True if the branch was in a transaction.
302fed8332bSIan Rogers        abort: True if the branch was an abort.
303fed8332bSIan Rogers        cycles: Number of cycles since the last branch.
304fed8332bSIan Rogers        type: Type of branch.
305fed8332bSIan Rogers    """
306fed8332bSIan Rogers    from_ip: int
307fed8332bSIan Rogers    to_ip: int
308fed8332bSIan Rogers    mispred: bool
309fed8332bSIan Rogers    predicted: bool
310fed8332bSIan Rogers    in_tx: bool
311fed8332bSIan Rogers    abort: bool
312fed8332bSIan Rogers    cycles: int
313fed8332bSIan Rogers    type: int
314fed8332bSIan Rogers
315fed8332bSIan Rogersclass branch_stack:
316fed8332bSIan Rogers    """Sequence of branch entries in the branch stack."""
317fed8332bSIan Rogers    def __len__(self) -> int: ...
318fed8332bSIan Rogers    def __getitem__(self, index: int) -> branch_entry: ...
319fed8332bSIan Rogers
320fed8332bSIan Rogersclass callchain_node:
321fed8332bSIan Rogers    """Represents a frame in the callchain."""
322fed8332bSIan Rogers    ip: int
323fed8332bSIan Rogers    symbol: Optional[str]
324fed8332bSIan Rogers    dso: Optional[str]
325fed8332bSIan Rogers
326fed8332bSIan Rogersclass callchain:
327fed8332bSIan Rogers    """Sequence of callchain frames."""
328fed8332bSIan Rogers    def __len__(self) -> int: ...
329fed8332bSIan Rogers    def __getitem__(self, index: int) -> callchain_node: ...
330fed8332bSIan Rogers
331fed8332bSIan Rogersclass stat_event(_sample_members):
332fed8332bSIan Rogers    """Represents a stat event from perf."""
333fed8332bSIan Rogers    type: int
334fed8332bSIan Rogers    id: int
335fed8332bSIan Rogers    cpu: int
336fed8332bSIan Rogers    thread: int
337fed8332bSIan Rogers    val: int
338fed8332bSIan Rogers    ena: int
339fed8332bSIan Rogers    run: int
340fed8332bSIan Rogers    evsel: Optional['evsel']
341fed8332bSIan Rogers
342fed8332bSIan Rogersclass stat_round_event(_sample_members):
343fed8332bSIan Rogers    """Represents a stat round event from perf."""
344fed8332bSIan Rogers    type: int
345fed8332bSIan Rogers    time: int
346fed8332bSIan Rogers    stat_round_type: int
347fed8332bSIan Rogers    evsel: Optional['evsel']
348fed8332bSIan Rogers
349fed8332bSIan Rogersclass cpu_map:
350fed8332bSIan Rogers    """Map of CPUs being monitored."""
351fed8332bSIan Rogers    def __init__(self, cpustr: Optional[str] = None) -> None: ...
352fed8332bSIan Rogers    def __len__(self) -> int: ...
353fed8332bSIan Rogers    def __getitem__(self, index: int) -> int: ...
354fed8332bSIan Rogers    def __iter__(self) -> Iterator[int]: ...
355fed8332bSIan Rogers
356fed8332bSIan Rogers
357fed8332bSIan Rogersclass evlist:
358fed8332bSIan Rogers    def __init__(self, cpus: cpu_map, threads: thread_map) -> None: ...
359fed8332bSIan Rogers    def open(self) -> None:
360fed8332bSIan Rogers        """Open the events in the list."""
361fed8332bSIan Rogers        ...
362fed8332bSIan Rogers    def close(self) -> None:
363fed8332bSIan Rogers        """Close the events in the list."""
364fed8332bSIan Rogers        ...
365fed8332bSIan Rogers    def mmap(self) -> None:
366fed8332bSIan Rogers        """Memory map the event buffers."""
367fed8332bSIan Rogers        ...
368fed8332bSIan Rogers    def poll(self, timeout: int) -> int:
369fed8332bSIan Rogers        """Poll for events.
370fed8332bSIan Rogers
371fed8332bSIan Rogers        Args:
372fed8332bSIan Rogers            timeout: Timeout in milliseconds.
373fed8332bSIan Rogers
374fed8332bSIan Rogers        Returns:
375fed8332bSIan Rogers            Number of events ready.
376fed8332bSIan Rogers        """
377fed8332bSIan Rogers        ...
378fed8332bSIan Rogers    def read_on_cpu(self, cpu: int) -> Optional[Any]:
379fed8332bSIan Rogers        """Read a sample event from a specific CPU.
380fed8332bSIan Rogers
381fed8332bSIan Rogers        Args:
382fed8332bSIan Rogers            cpu: The CPU number.
383fed8332bSIan Rogers
384fed8332bSIan Rogers        Returns:
385fed8332bSIan Rogers            A sample_event or other event type if available, or None.
386fed8332bSIan Rogers        """
387fed8332bSIan Rogers        ...
388fed8332bSIan Rogers    def all_cpus(self) -> cpu_map:
389fed8332bSIan Rogers        """Get a cpu_map of all CPUs in the system."""
390fed8332bSIan Rogers        ...
391fed8332bSIan Rogers    def metrics(self) -> List[str]:
392fed8332bSIan Rogers        """Get a list of metric names within the evlist."""
393fed8332bSIan Rogers        ...
394fed8332bSIan Rogers    def compute_metric(self, metric: str, cpu: int, thread: int) -> float:
395fed8332bSIan Rogers        """Compute metric for given name, cpu and thread.
396fed8332bSIan Rogers
397fed8332bSIan Rogers        Args:
398fed8332bSIan Rogers            metric: The metric name.
399fed8332bSIan Rogers            cpu: The CPU number.
400fed8332bSIan Rogers            thread: The thread ID.
401fed8332bSIan Rogers
402fed8332bSIan Rogers        Returns:
403fed8332bSIan Rogers            The computed metric value.
404fed8332bSIan Rogers        """
405fed8332bSIan Rogers        ...
406fed8332bSIan Rogers    def config(self) -> None:
407fed8332bSIan Rogers        """Configure the events in the list."""
408fed8332bSIan Rogers        ...
409fed8332bSIan Rogers    def disable(self) -> None:
410fed8332bSIan Rogers        """Disable all events in the list."""
411fed8332bSIan Rogers        ...
412fed8332bSIan Rogers    def enable(self) -> None:
413fed8332bSIan Rogers        """Enable all events in the list."""
414fed8332bSIan Rogers        ...
415fed8332bSIan Rogers    def get_pollfd(self) -> List[int]:
416fed8332bSIan Rogers        """Get a list of file descriptors for polling."""
417fed8332bSIan Rogers        ...
418fed8332bSIan Rogers    def add(self, evsel: evsel) -> int:
419fed8332bSIan Rogers        """Add an event to the list."""
420fed8332bSIan Rogers        ...
421fed8332bSIan Rogers    def __iter__(self) -> Iterator[evsel]:
422fed8332bSIan Rogers        """Iterate over the events (evsel) in the list."""
423fed8332bSIan Rogers        ...
424fed8332bSIan Rogers
425fed8332bSIan Rogers
426fed8332bSIan Rogersclass session:
427fed8332bSIan Rogers    def __init__(
428fed8332bSIan Rogers        self,
429fed8332bSIan Rogers        data: data,
430fed8332bSIan Rogers        sample: Optional[Callable[[sample_event], None]] = None,
431fed8332bSIan Rogers        stat: Optional[Callable[[Any, Optional[str]], None]] = None
432fed8332bSIan Rogers    ) -> None:
433fed8332bSIan Rogers        """Initialize a perf session.
434fed8332bSIan Rogers
435fed8332bSIan Rogers        Args:
436fed8332bSIan Rogers            data: The perf data file to read.
437fed8332bSIan Rogers            sample: Callback for sample events.
438fed8332bSIan Rogers            stat: Callback for stat events.
439fed8332bSIan Rogers        """
440fed8332bSIan Rogers        ...
441fed8332bSIan Rogers    def process_events(self) -> None:
442fed8332bSIan Rogers        """Process all events in the session."""
443fed8332bSIan Rogers        ...
444fed8332bSIan Rogers    def find_thread(self, pid: int) -> thread:
445fed8332bSIan Rogers        """Returns the thread associated with a pid."""
446fed8332bSIan Rogers        ...
447fed8332bSIan Rogers
448fed8332bSIan Rogers# Event Types
449fed8332bSIan RogersTYPE_HARDWARE: int
450fed8332bSIan Rogers"""Hardware event."""
451fed8332bSIan Rogers
452fed8332bSIan RogersTYPE_SOFTWARE: int
453fed8332bSIan Rogers"""Software event."""
454fed8332bSIan Rogers
455fed8332bSIan RogersTYPE_TRACEPOINT: int
456fed8332bSIan Rogers"""Tracepoint event."""
457fed8332bSIan Rogers
458fed8332bSIan RogersTYPE_HW_CACHE: int
459fed8332bSIan Rogers"""Hardware cache event."""
460fed8332bSIan Rogers
461fed8332bSIan RogersTYPE_RAW: int
462fed8332bSIan Rogers"""Raw hardware event."""
463fed8332bSIan Rogers
464fed8332bSIan RogersTYPE_BREAKPOINT: int
465fed8332bSIan Rogers"""Breakpoint event."""
466fed8332bSIan Rogers
467fed8332bSIan Rogers
468fed8332bSIan Rogers# Hardware Counters
469fed8332bSIan RogersCOUNT_HW_CPU_CYCLES: int
470fed8332bSIan Rogers"""Total cycles. Be wary of what happens during CPU frequency scaling."""
471fed8332bSIan Rogers
472fed8332bSIan RogersCOUNT_HW_INSTRUCTIONS: int
473fed8332bSIan Rogers"""Retired instructions. Be careful, these can be affected by various issues,
474fed8332bSIan Rogersmost notably hardware interrupt counts."""
475fed8332bSIan Rogers
476fed8332bSIan RogersCOUNT_HW_CACHE_REFERENCES: int
477fed8332bSIan Rogers"""Cache accesses. Usually this indicates Last Level Cache accesses but this
478fed8332bSIan Rogersmay vary depending on your CPU."""
479fed8332bSIan Rogers
480fed8332bSIan RogersCOUNT_HW_CACHE_MISSES: int
481fed8332bSIan Rogers"""Cache misses. Usually this indicates Last Level Cache misses."""
482fed8332bSIan Rogers
483fed8332bSIan RogersCOUNT_HW_BRANCH_INSTRUCTIONS: int
484fed8332bSIan Rogers"""Retired branch instructions."""
485fed8332bSIan Rogers
486fed8332bSIan RogersCOUNT_HW_BRANCH_MISSES: int
487fed8332bSIan Rogers"""Mispredicted branch instructions."""
488fed8332bSIan Rogers
489fed8332bSIan RogersCOUNT_HW_BUS_CYCLES: int
490fed8332bSIan Rogers"""Bus cycles, which can be different from total cycles."""
491fed8332bSIan Rogers
492fed8332bSIan RogersCOUNT_HW_STALLED_CYCLES_FRONTEND: int
493fed8332bSIan Rogers"""Stalled cycles during issue [This event is an alias of idle-cycles-frontend]."""
494fed8332bSIan Rogers
495fed8332bSIan RogersCOUNT_HW_STALLED_CYCLES_BACKEND: int
496fed8332bSIan Rogers"""Stalled cycles during retirement [This event is an alias of idle-cycles-backend]."""
497fed8332bSIan Rogers
498fed8332bSIan RogersCOUNT_HW_REF_CPU_CYCLES: int
499fed8332bSIan Rogers"""Total cycles; not affected by CPU frequency scaling."""
500fed8332bSIan Rogers
501fed8332bSIan Rogers
502fed8332bSIan Rogers# Cache Counters
503fed8332bSIan RogersCOUNT_HW_CACHE_L1D: int
504fed8332bSIan Rogers"""Level 1 data cache."""
505fed8332bSIan Rogers
506fed8332bSIan RogersCOUNT_HW_CACHE_L1I: int
507fed8332bSIan Rogers"""Level 1 instruction cache."""
508fed8332bSIan Rogers
509fed8332bSIan RogersCOUNT_HW_CACHE_LL: int
510fed8332bSIan Rogers"""Last Level Cache."""
511fed8332bSIan Rogers
512fed8332bSIan RogersCOUNT_HW_CACHE_DTLB: int
513fed8332bSIan Rogers"""Data TLB."""
514fed8332bSIan Rogers
515fed8332bSIan RogersCOUNT_HW_CACHE_ITLB: int
516fed8332bSIan Rogers"""Instruction TLB."""
517fed8332bSIan Rogers
518fed8332bSIan RogersCOUNT_HW_CACHE_BPU: int
519fed8332bSIan Rogers"""Branch Processing Unit."""
520fed8332bSIan Rogers
521fed8332bSIan RogersCOUNT_HW_CACHE_OP_READ: int
522fed8332bSIan Rogers"""Read accesses."""
523fed8332bSIan Rogers
524fed8332bSIan RogersCOUNT_HW_CACHE_OP_WRITE: int
525fed8332bSIan Rogers"""Write accesses."""
526fed8332bSIan Rogers
527fed8332bSIan RogersCOUNT_HW_CACHE_OP_PREFETCH: int
528fed8332bSIan Rogers"""Prefetch accesses."""
529fed8332bSIan Rogers
530fed8332bSIan RogersCOUNT_HW_CACHE_RESULT_ACCESS: int
531fed8332bSIan Rogers"""Accesses."""
532fed8332bSIan Rogers
533fed8332bSIan RogersCOUNT_HW_CACHE_RESULT_MISS: int
534fed8332bSIan Rogers"""Misses."""
535fed8332bSIan Rogers
536fed8332bSIan Rogers
537fed8332bSIan Rogers# Software Counters
538fed8332bSIan RogersCOUNT_SW_CPU_CLOCK: int
539fed8332bSIan Rogers"""CPU clock event."""
540fed8332bSIan Rogers
541fed8332bSIan RogersCOUNT_SW_TASK_CLOCK: int
542fed8332bSIan Rogers"""Task clock event."""
543fed8332bSIan Rogers
544fed8332bSIan RogersCOUNT_SW_PAGE_FAULTS: int
545fed8332bSIan Rogers"""Page faults."""
546fed8332bSIan Rogers
547fed8332bSIan RogersCOUNT_SW_CONTEXT_SWITCHES: int
548fed8332bSIan Rogers"""Context switches."""
549fed8332bSIan Rogers
550fed8332bSIan RogersCOUNT_SW_CPU_MIGRATIONS: int
551fed8332bSIan Rogers"""CPU migrations."""
552fed8332bSIan Rogers
553fed8332bSIan RogersCOUNT_SW_PAGE_FAULTS_MIN: int
554fed8332bSIan Rogers"""Minor page faults."""
555fed8332bSIan Rogers
556fed8332bSIan RogersCOUNT_SW_PAGE_FAULTS_MAJ: int
557fed8332bSIan Rogers"""Major page faults."""
558fed8332bSIan Rogers
559fed8332bSIan RogersCOUNT_SW_ALIGNMENT_FAULTS: int
560fed8332bSIan Rogers"""Alignment faults."""
561fed8332bSIan Rogers
562fed8332bSIan RogersCOUNT_SW_EMULATION_FAULTS: int
563fed8332bSIan Rogers"""Emulation faults."""
564fed8332bSIan Rogers
565fed8332bSIan RogersCOUNT_SW_DUMMY: int
566fed8332bSIan Rogers"""Dummy event."""
567fed8332bSIan Rogers
568fed8332bSIan Rogers
569fed8332bSIan Rogers# Sample Fields
570fed8332bSIan RogersSAMPLE_IP: int
571fed8332bSIan Rogers"""Instruction pointer."""
572fed8332bSIan Rogers
573fed8332bSIan RogersSAMPLE_TID: int
574fed8332bSIan Rogers"""Process and thread ID."""
575fed8332bSIan Rogers
576fed8332bSIan RogersSAMPLE_TIME: int
577fed8332bSIan Rogers"""Timestamp."""
578fed8332bSIan Rogers
579fed8332bSIan RogersSAMPLE_ADDR: int
580fed8332bSIan Rogers"""Sampled address."""
581fed8332bSIan Rogers
582fed8332bSIan RogersSAMPLE_READ: int
583fed8332bSIan Rogers"""Read barcode."""
584fed8332bSIan Rogers
585fed8332bSIan RogersSAMPLE_CALLCHAIN: int
586fed8332bSIan Rogers"""Call chain."""
587fed8332bSIan Rogers
588fed8332bSIan RogersSAMPLE_ID: int
589fed8332bSIan Rogers"""Unique ID."""
590fed8332bSIan Rogers
591fed8332bSIan RogersSAMPLE_CPU: int
592fed8332bSIan Rogers"""CPU number."""
593fed8332bSIan Rogers
594fed8332bSIan RogersSAMPLE_PERIOD: int
595fed8332bSIan Rogers"""Sample period."""
596fed8332bSIan Rogers
597fed8332bSIan RogersSAMPLE_STREAM_ID: int
598fed8332bSIan Rogers"""Stream ID."""
599fed8332bSIan Rogers
600fed8332bSIan RogersSAMPLE_RAW: int
601fed8332bSIan Rogers"""Raw sample."""
602fed8332bSIan Rogers
603fed8332bSIan Rogers
604fed8332bSIan Rogers# Format Fields
605fed8332bSIan RogersFORMAT_TOTAL_TIME_ENABLED: int
606fed8332bSIan Rogers"""Total time enabled."""
607fed8332bSIan Rogers
608fed8332bSIan RogersFORMAT_TOTAL_TIME_RUNNING: int
609fed8332bSIan Rogers"""Total time running."""
610fed8332bSIan Rogers
611fed8332bSIan RogersFORMAT_ID: int
612fed8332bSIan Rogers"""Event ID."""
613fed8332bSIan Rogers
614fed8332bSIan RogersFORMAT_GROUP: int
615fed8332bSIan Rogers"""Event group."""
616fed8332bSIan Rogers
617fed8332bSIan Rogers
618fed8332bSIan Rogers# Record Types
619fed8332bSIan RogersRECORD_MMAP: int
620fed8332bSIan Rogers"""MMAP record. Contains header, pid, tid, addr, len, pgoff, filename, and sample_id."""
621fed8332bSIan Rogers
622fed8332bSIan RogersRECORD_LOST: int
623fed8332bSIan Rogers"""Lost events record. Contains header, id, lost count, and sample_id."""
624fed8332bSIan Rogers
625fed8332bSIan RogersRECORD_COMM: int
626fed8332bSIan Rogers"""COMM record. Contains header, pid, tid, comm, and sample_id."""
627fed8332bSIan Rogers
628fed8332bSIan RogersRECORD_EXIT: int
629fed8332bSIan Rogers"""EXIT record. Contains header, pid, ppid, tid, ptid, time, and sample_id."""
630fed8332bSIan Rogers
631fed8332bSIan RogersRECORD_THROTTLE: int
632fed8332bSIan Rogers"""THROTTLE record. Contains header, time, id, stream_id, and sample_id."""
633fed8332bSIan Rogers
634fed8332bSIan RogersRECORD_UNTHROTTLE: int
635fed8332bSIan Rogers"""UNTHROTTLE record. Contains header, time, id, stream_id, and sample_id."""
636fed8332bSIan Rogers
637fed8332bSIan RogersRECORD_FORK: int
638fed8332bSIan Rogers"""FORK record. Contains header, pid, ppid, tid, ptid, time, and sample_id."""
639fed8332bSIan Rogers
640fed8332bSIan RogersRECORD_READ: int
641fed8332bSIan Rogers"""READ record. Contains header, and read values."""
642fed8332bSIan Rogers
643fed8332bSIan RogersRECORD_SAMPLE: int
644fed8332bSIan Rogers"""SAMPLE record. Contains header, and sample data requested by sample_type."""
645fed8332bSIan Rogers
646fed8332bSIan RogersRECORD_MMAP2: int
647fed8332bSIan Rogers"""MMAP2 record. Contains header, pid, tid, addr, len, pgoff, maj, min, ino,
648fed8332bSIan Rogersino_generation, prot, flags, filename, and sample_id."""
649fed8332bSIan Rogers
650fed8332bSIan RogersRECORD_AUX: int
651fed8332bSIan Rogers"""AUX record. Contains header, aux_offset, aux_size, flags, and sample_id."""
652fed8332bSIan Rogers
653fed8332bSIan RogersRECORD_ITRACE_START: int
654fed8332bSIan Rogers"""ITRACE_START record. Contains header, pid, tid, and sample_id."""
655fed8332bSIan Rogers
656fed8332bSIan RogersRECORD_LOST_SAMPLES: int
657fed8332bSIan Rogers"""LOST_SAMPLES record. Contains header, lost count, and sample_id."""
658fed8332bSIan Rogers
659fed8332bSIan RogersRECORD_SWITCH: int
660fed8332bSIan Rogers"""SWITCH record. Contains header, and sample_id."""
661fed8332bSIan Rogers
662fed8332bSIan RogersRECORD_SWITCH_CPU_WIDE: int
663fed8332bSIan Rogers"""SWITCH_CPU_WIDE record. Contains header, and sample_id."""
664fed8332bSIan Rogers
665fed8332bSIan RogersRECORD_STAT: int
666fed8332bSIan Rogers"""STAT record."""
667fed8332bSIan Rogers
668fed8332bSIan RogersRECORD_STAT_ROUND: int
669fed8332bSIan Rogers"""STAT_ROUND record."""
670fed8332bSIan Rogers
671fed8332bSIan RogersRECORD_MISC_SWITCH_OUT: int
672fed8332bSIan Rogers"""MISC_SWITCH_OUT record."""
673