From 3f6a706d72f6b60b1c123dab479097a10d35fa35 Mon Sep 17 00:00:00 2001 From: Josef Weidendorfer Date: Sat, 23 Dec 2006 23:11:20 +0000 Subject: [PATCH] Callgrind: Throttle calls CLG_(run_thread) after r6413 After the change in r6413, CLG_(run_thread) is called a lot more often, increasing the polling overhead to check for a callgrind command file (created by callgrind_control for controlling a callgrind run in an interactive way). This reduces the calls to only be done every 5000 BBs, which gives a similar polling frequency as before. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6414 --- callgrind/main.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/callgrind/main.c b/callgrind/main.c index b54b72cc4f..b18147e036 100644 --- a/callgrind/main.c +++ b/callgrind/main.c @@ -1026,13 +1026,19 @@ static void clg_thread_runstate_callback ( ThreadId tid, Bool is_running, ULong blocks_done ) { + static ULong last_blocks_done = 0; + if (0) VG_(printf)("%d %c %llu\n", (Int)tid, is_running ? 'R' : 's', blocks_done); - /* Simply call onwards to CLG_(run_thread). Maybe this can be - simplified later? */ - if (is_running) - CLG_(run_thread)( tid ); + + if (!is_running) return; + + /* throttle calls to CLG_(run_thread) by number of BBs executed */ + if (blocks_done - last_blocks_done < 5000) return; + last_blocks_done = blocks_done; + + CLG_(run_thread)( tid ); } static -- 2.47.2