From: Josef Weidendorfer Date: Sat, 23 Dec 2006 23:11:20 +0000 (+0000) Subject: Callgrind: Throttle calls CLG_(run_thread) after r6413 X-Git-Tag: svn/VALGRIND_3_3_0~472 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3f6a706d72f6b60b1c123dab479097a10d35fa35;p=thirdparty%2Fvalgrind.git 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 --- 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