init eACGM

This commit is contained in:
Tokisakix
2025-08-07 10:14:54 +08:00
commit 7a4a0b1b14
51 changed files with 11495 additions and 0 deletions

View File

@@ -0,0 +1 @@
from .profetto import to_perfetto

View File

@@ -0,0 +1,21 @@
from typing import List
from eacgm.sampler import eBPFSamplerState
def to_perfetto(states:List[eBPFSamplerState]) -> List:
res = []
last_event = {}
for state in states:
if not isinstance(state, eBPFSamplerState):
continue
state = state.collect()
name = f"{state['name']}-{state['pid']}"
last_state = last_event.get(name, None)
if last_state is None:
last_event[name] = state
continue
if last_state["ph"] == "B" and state["ph"] == "E":
res.append(last_state)
res.append(state)
last_event[name] = state
return res