summaryrefslogtreecommitdiff
path: root/rts/Capability.c
diff options
context:
space:
mode:
authorManuel M T Chakravarty <chak@cse.unsw.edu.au>2009-12-12 10:08:09 +0000
committerManuel M T Chakravarty <chak@cse.unsw.edu.au>2009-12-12 10:08:09 +0000
commit015d3d46b6de2f95386a515a7d166d996a0416db (patch)
treeda6c07854ca7ac899f08d56e5185ba55b6b854ac /rts/Capability.c
parentdcba7784a1af5fd0c054031c49fe159d69af4f86 (diff)
downloadhaskell-015d3d46b6de2f95386a515a7d166d996a0416db.tar.gz
Expose all EventLog events as DTrace probes
- Defines a DTrace provider, called 'HaskellEvent', that provides a probe for every event of the eventlog framework. - In contrast to the original eventlog, the DTrace probes are available in all flavours of the runtime system (DTrace probes have virtually no overhead if not enabled); when -DTRACING is defined both the regular event log as well as DTrace probes can be used. - Currently, Mac OS X only. User-space DTrace probes are implemented differently on Mac OS X than in the original DTrace implementation. Nevertheless, it shouldn't be too hard to enable these probes on other platforms, too. - Documentation is at http://hackage.haskell.org/trac/ghc/wiki/DTrace
Diffstat (limited to 'rts/Capability.c')
-rw-r--r--rts/Capability.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/rts/Capability.c b/rts/Capability.c
index f4fdd70ed9..bd781e9cd7 100644
--- a/rts/Capability.c
+++ b/rts/Capability.c
@@ -98,7 +98,7 @@ findSpark (Capability *cap)
cap->sparks_converted++;
// Post event for running a spark from capability's own pool.
- traceSchedEvent(cap, EVENT_RUN_SPARK, cap->r.rCurrentTSO, 0);
+ traceEventRunSpark(cap, cap->r.rCurrentTSO);
return spark;
}
@@ -132,8 +132,7 @@ findSpark (Capability *cap)
if (spark != NULL) {
cap->sparks_converted++;
- traceSchedEvent(cap, EVENT_STEAL_SPARK,
- cap->r.rCurrentTSO, robbed->no);
+ traceEventStealSpark(cap, cap->r.rCurrentTSO, robbed->no);
return spark;
}
@@ -579,9 +578,9 @@ yieldCapability (Capability** pCap, Task *task)
Capability *cap = *pCap;
if (waiting_for_gc == PENDING_GC_PAR) {
- traceSchedEvent(cap, EVENT_GC_START, 0, 0);
+ traceEventGcStart(cap);
gcWorkerThread(cap);
- traceSchedEvent(cap, EVENT_GC_END, 0, 0);
+ traceEventGcEnd(cap);
return;
}
@@ -788,7 +787,7 @@ shutdownCapability (Capability *cap, Task *task, rtsBool safe)
continue;
}
- traceSchedEvent(cap, EVENT_SHUTDOWN, 0, 0);
+ traceEventShutdown(cap);
RELEASE_LOCK(&cap->lock);
break;
}