- data EventLog = EventLog {}
- data EventType = EventType {}
- data Event = Event {}
- data EventInfo
- = EventBlock { }
- | UnknownEvent {
- ref :: !EventTypeNum
- | Startup { }
- | Shutdown {
- | CreateThread { }
- | RunThread { }
- | StopThread {
- thread :: !ThreadId
- status :: ThreadStopStatus
- | ThreadRunnable { }
- | MigrateThread { }
- | WakeupThread { }
- | CreateSparkThread {
- sparkThread :: !ThreadId
- | SparkCounters {
- sparksCreated :: !Word64
- sparksDud :: !Word64
- sparksOverflowed :: !Word64
- sparksConverted :: !Word64
- sparksFizzled :: !Word64
- sparksGCd :: !Word64
- sparksRemaining :: !Word64
- | SparkCreate {
- | SparkDud {
- | SparkOverflow {
- | SparkRun {
- | SparkSteal { }
- | SparkFizzle {
- | SparkGC {
- | RequestSeqGC {
- | RequestParGC {
- | StartGC {
- | GCWork {
- | GCIdle {
- | GCDone {
- | EndGC {
- | CapsetCreate {
- capset :: !Word32
- capsetType :: CapsetType
- | CapsetDelete { }
- | CapsetAssignCap { }
- | CapsetRemoveCap { }
- | RtsIdentifier { }
- | ProgramArgs { }
- | ProgramEnv { }
- | OsProcessPid { }
- | OsProcessParentPid { }
- | Message { }
- | UserMessage { }
- | InternString { }
- | MerStartParConjunction { }
- | MerEndParConjunction {
- dyn_id :: !ParConjDynId
- | MerEndParConjunct {
- dyn_id :: !ParConjDynId
- | MerCreateSpark { }
- | MerFutureCreate { }
- | MerFutureWaitNosuspend {
- future_id :: !FutureId
- | MerFutureWaitSuspended {
- future_id :: !FutureId
- | MerFutureSignal {
- future_id :: !FutureId
- | MerLookingForGlobalThread
- | MerWorkStealing
- | MerLookingForLocalSpark
- | MerReleaseThread { }
- | MerCapSleeping
- | MerCallingMain
- data ThreadStopStatus
- = NoStatus
- | HeapOverflow
- | StackOverflow
- | ThreadYielding
- | ThreadBlocked
- | ThreadFinished
- | ForeignCall
- | BlockedOnMVar
- | BlockedOnBlackHole
- | BlockedOnRead
- | BlockedOnWrite
- | BlockedOnDelay
- | BlockedOnSTM
- | BlockedOnDoProc
- | BlockedOnCCall
- | BlockedOnCCall_NoUnblockExc
- | BlockedOnMsgThrowTo
- | ThreadMigrating
- | BlockedOnMsgGlobalise
- | BlockedOnBlackHoleOwnedBy !ThreadId
- newtype Header = Header {
- eventTypes :: [EventType]
- data Data = Data {}
- data CapsetType
- type Timestamp = Word64
- type ThreadId = Word32
- readEventLogFromFile :: FilePath -> IO (Either String EventLog)
- writeEventLogToFile :: FilePath -> EventLog -> IO ()
- data CapEvent = CapEvent {}
- sortEvents :: [Event] -> [CapEvent]
- groupEvents :: [Event] -> [(Maybe Int, [Event])]
- sortGroups :: [(Maybe Int, [Event])] -> [CapEvent]
- buildEventTypeMap :: [EventType] -> IntMap EventType
- showEventInfo :: EventInfo -> String
- showThreadStopStatus :: ThreadStopStatus -> String
- ppEventLog :: EventLog -> String
- ppEventType :: EventType -> String
- ppEvent :: IntMap EventType -> CapEvent -> String
The event log types
data ThreadStopStatus Source
Reading and writing event logs
writeEventLogToFile :: FilePath -> EventLog -> IO ()Source
Utilities
An event annotated with the Capability that generated it, if any
sortEvents :: [Event] -> [CapEvent]Source
sortGroups :: [(Maybe Int, [Event])] -> [CapEvent]Source
Sort the raw event stream by time, annotating each event with the capability that generated it.
Printing
ppEventLog :: EventLog -> StringSource
ppEventType :: EventType -> StringSource