From 0f28389c783a54a74c472f176c250ddf7a9c4bf4 Mon Sep 17 00:00:00 2001 From: Ben Gamari Date: Tue, 24 Nov 2020 19:42:27 -0500 Subject: rts/Stats: Reintroduce mut_user_time Fix the previous backport; this function was dead code in master but is still needed due to ProfHeap.c in ghc-8.10. --- rts/Stats.c | 21 +++++++++++++++++++++ rts/Stats.h | 2 ++ 2 files changed, 23 insertions(+) diff --git a/rts/Stats.c b/rts/Stats.c index 1a91e706fb..282e799d23 100644 --- a/rts/Stats.c +++ b/rts/Stats.c @@ -86,6 +86,27 @@ Time stat_getElapsedTime(void) Measure the current MUT time, for profiling ------------------------------------------------------------------------ */ +static double +mut_user_time_until( Time t ) +{ + ACQUIRE_LOCK(&stats_mutex); + double ret = TimeToSecondsDbl(t - stats.gc_cpu_ns - stats.nonmoving_gc_cpu_ns); + RELEASE_LOCK(&stats_mutex); + return ret; + // heapCensus() time is included in GC_tot_cpu, so we don't need + // to subtract it here. + + // TODO: This seems wrong to me. Surely we should be subtracting + // (at least) start_init_cpu? +} + +double +mut_user_time( void ) +{ + Time cpu = getProcessCPUTime(); + return mut_user_time_until(cpu); +} + #if defined(PROFILING) /* mut_user_time_during_RP() returns the MUT time during retainer profiling. diff --git a/rts/Stats.h b/rts/Stats.h index 9d62acef37..cd8b74a983 100644 --- a/rts/Stats.h +++ b/rts/Stats.h @@ -66,6 +66,8 @@ void initStats0(void); void initStats1(void); void resetChildProcessStats(void); +double mut_user_time(void); + void statDescribeGens( void ); Time stat_getElapsedGCTime(void); -- cgit v1.2.1