You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
1
(15) |
2
(17) |
3
(23) |
4
(13) |
5
(7) |
6
(8) |
7
(9) |
|
8
(8) |
9
(31) |
10
(31) |
11
(19) |
12
(11) |
13
(38) |
14
(14) |
|
15
(8) |
16
(11) |
17
(7) |
18
(17) |
19
(12) |
20
(12) |
21
(17) |
|
22
(19) |
23
(33) |
24
(42) |
25
(37) |
26
(23) |
27
(27) |
28
(27) |
|
29
(16) |
30
(52) |
31
(33) |
|
|
|
|
|
From: Nicholas N. <nj...@ca...> - 2004-08-02 16:54:12
|
CVS commit by nethercote:
comment wibble
M +0 -1 vg_main.c 1.185
--- valgrind/coregrind/vg_main.c #1.184:1.185
@@ -2880,5 +2880,4 @@ int main(int argc, char **argv)
// Set up the ProxyLWP machinery
// p: VG_(scheduler_init)()? [XXX: subtle dependency?]
- // - subs: VG_(sigstartup_actions)()?
//--------------------------------------------------------------
VG_(proxy_init)();
|
|
From: Nicholas N. <nj...@ca...> - 2004-08-02 16:27:50
|
CVS commit by nethercote:
Removed cruft from vg_scheduler.c:
things not used any more, eg. global variables
- removed some things from vg_include.h, making them local -- functions,
variables and macros
- other minor clean-ups
M +1 -24 vg_include.h 1.213
M +76 -108 vg_scheduler.c 1.163
--- valgrind/coregrind/vg_include.h #1.212:1.213
@@ -463,5 +463,5 @@ extern Bool VG_(is_empty_arena) ( Arena
#define VG_USERREQ__GET_FHSTACK_ENTRY 0x3028
-/* Denote the finish of VG_(__libc_freeres_wrapper). */
+/* Denote the finish of __libc_freeres_wrapper(). */
#define VG_USERREQ__LIBC_FREERES_DONE 0x3029
@@ -938,12 +938,4 @@ extern Bool VG_(is_running_thread)(Threa
extern ThreadState *VG_(get_ThreadState)(ThreadId tid);
-/* Copy the specified thread's state into VG_(baseBlock) in
- preparation for running it. */
-extern void VG_(load_thread_state)( ThreadId );
-
-/* Save the specified thread's state back in VG_(baseBlock), and fill
- VG_(baseBlock) with junk, for sanity-check reasons. */
-extern void VG_(save_thread_state)( ThreadId );
-
/* And for the currently running one, if valid. */
extern ThreadState* VG_(get_current_thread_state) ( void );
@@ -961,7 +953,4 @@ extern void VG_(nuke_all_threads_except)
extern void VG_(need_resched) ( ThreadId prefer_sched );
-/* Add a new timeout event for a thread*/
-extern void VG_(add_timeout) ( ThreadId tid, UInt time );
-
/* Return codes from the scheduler. */
typedef
@@ -992,11 +981,4 @@ extern void VG_(resume_scheduler) ( Int
#define VG_AR_CLIENT_STACKBASE_REDZONE_SZB 16
-/* Junk to fill up a thread's shadow regs with when shadow regs aren't
- being used. */
-#define VG_UNUSED_SHADOW_REG_VALUE 0x27182818
-/* For sanity checking: if this ends up in a thread's shadow regs when
- shadow regs aren't being used, something went wrong. */
-#define VG_USED_SHADOW_REG_VALUE 0x31415927
-
/* Write a value to a client's thread register, and shadow (if necessary) */
#define SET_THREAD_REG( zztid, zzval, zzreg, zzREG, zzevent, zzargs... ) \
@@ -1008,7 +990,4 @@ extern void VG_(resume_scheduler) ( Int
SET_THREAD_REG(zztid, zzval, eax, EAX, post_reg_write_syscall_return)
-#define SET_SIGNAL_EDX(zztid, zzval) \
- SET_THREAD_REG(zztid, zzval, edx, EDX, post_reg_write_deliver_signal)
-
#define SET_SIGNAL_ESP(zztid, zzval) \
SET_THREAD_REG(zztid, zzval, esp, ESP, post_reg_write_deliver_signal)
@@ -1071,6 +1050,4 @@ extern void VG_(restore_all_host_signals
( /* IN */ vki_ksigset_t* saved_mask );
-extern vki_ksiginfo_t VG_(unresumable_siginfo);
-
extern void VG_(kill_self)(Int sigNo);
--- valgrind/coregrind/vg_scheduler.c #1.162:1.163
@@ -33,32 +33,4 @@
#include "vg_include.h"
-/* BORKAGE/ISSUES as of 29 May 02
-
-- Currently, when a signal is run, just the ThreadStatus.status fields
- are saved in the signal frame, along with the CPU state. Question:
- should I also save and restore:
- ThreadStatus.joiner
- ThreadStatus.waited_on_mid
- ThreadStatus.awaken_at
- ThreadStatus.retval
- Currently unsure, and so am not doing so.
-
-- So, what's the deal with signals and mutexes? If a thread is
- blocked on a mutex, or for a condition variable for that matter, can
- signals still be delivered to it? This has serious consequences --
- deadlocks, etc.
-
- TODO for valgrind-1.0:
-
-- Update assertion checking in scheduler_sanity().
-
- TODO sometime:
-
-- Mutex scrubbing - clearup_after_thread_exit: look for threads
- blocked on mutexes held by the exiting thread, and release them
- appropriately. (??)
-
-*/
-
/* ---------------------------------------------------------------------
@@ -66,7 +38,5 @@
------------------------------------------------------------------ */
-/* type ThreadId is defined in vg_include.h. */
-
-/* struct ThreadState is defined in vg_include.h. */
+/* ThreadId and ThreadState are defined in vg_include.h. */
/* Globals. A statically allocated array of threads. NOTE: [0] is
@@ -89,15 +59,15 @@ static ThreadId vg_tid_last_in_baseBlock
/* vg_oursignalhandler() might longjmp(). Here's the jmp_buf. */
-jmp_buf scheduler_jmpbuf;
+static jmp_buf scheduler_jmpbuf;
/* This says whether scheduler_jmpbuf is actually valid. Needed so
that our signal handler doesn't longjmp when the buffer isn't
actually valid. */
-Bool scheduler_jmpbuf_valid = False;
+static Bool scheduler_jmpbuf_valid = False;
/* ... and if so, here's the signal which caused it to do so. */
-Int longjmpd_on_signal;
+static Int longjmpd_on_signal;
/* If the current thread gets a syncronous unresumable signal, then
its details are placed here by the signal handler, to be passed to
the applications signal handler later on. */
-vki_ksiginfo_t VG_(unresumable_siginfo);
+static vki_ksiginfo_t unresumable_siginfo;
/* If != VG_INVALID_THREADID, this is the preferred tid to schedule */
@@ -122,11 +92,5 @@ typedef UInt ThreadKey;
/* The scheduler does need to know the address of it so it can be
called at program exit. */
-static Addr VG_(__libc_freeres_wrapper);
-
-
-UInt VG_(syscall_altered_shadow_reg);
-UInt VG_(signal_delivery_altered_shadow_reg);
-UInt VG_(pthread_op_altered_shadow_reg);
-UInt VG_(client_request_altered_shadow_reg);
+static Addr __libc_freeres_wrapper;
/* Forwards */
@@ -289,6 +249,5 @@ void create_translation_for ( ThreadId t
/* Copy data at trans_addr into the translation cache. */
- /* Since the .orig_size and .trans_size fields are
- UShort, be paranoid. */
+ /* Since the .orig_size and .trans_size fields are UShort, be paranoid. */
vg_assert(orig_size > 0 && orig_size < 65536);
vg_assert(trans_size > 0 && trans_size < 65536);
@@ -357,7 +316,11 @@ static Int extractDflag(UInt eflags)
}
+/* Junk to fill up a thread's shadow regs with when shadow regs aren't
+ being used. */
+#define VG_UNUSED_SHADOW_REG_VALUE 0x27182818
+
/* Copy the saved state of a thread into VG_(baseBlock), ready for it
to be run. */
-void VG_(load_thread_state) ( ThreadId tid )
+static void load_thread_state ( ThreadId tid )
{
Int i;
@@ -426,5 +389,5 @@ void VG_(load_thread_state) ( ThreadId t
VG_(baseBlock) without first doing a load_thread_state().
*/
-void VG_(save_thread_state) ( ThreadId tid )
+static void save_thread_state ( ThreadId tid )
{
Int i;
@@ -540,5 +503,5 @@ void VG_(resume_scheduler)(Int sigNo, vk
/* Can't continue; must longjmp back to the scheduler and thus
enter the sighandler immediately. */
- VG_(memcpy)(&VG_(unresumable_siginfo), info, sizeof(vki_ksiginfo_t));
+ VG_(memcpy)(&unresumable_siginfo, info, sizeof(vki_ksiginfo_t));
longjmpd_on_signal = sigNo;
@@ -558,8 +521,8 @@ UInt run_thread_for_a_while ( ThreadId t
VGP_PUSHCC(VgpRun);
- VG_(load_thread_state) ( tid );
+ load_thread_state ( tid );
/* there should be no undealt-with signals */
- vg_assert(VG_(unresumable_siginfo).si_signo == 0);
+ vg_assert(unresumable_siginfo.si_signo == 0);
if (__builtin_setjmp(scheduler_jmpbuf) == 0) {
@@ -579,5 +542,5 @@ UInt run_thread_for_a_while ( ThreadId t
vg_assert(!scheduler_jmpbuf_valid);
- VG_(save_thread_state) ( tid );
+ save_thread_state ( tid );
VGP_POPCC(VgpRun);
return trc;
@@ -656,5 +619,5 @@ void VG_(scheduler_init) ( void )
vg_tid_last_in_baseBlock = tid_main;
VG_(baseBlock)[VGOFF_(tls)] = (UInt)VG_(threads)[tid_main].tls;
- VG_(save_thread_state) ( tid_main );
+ save_thread_state ( tid_main );
VG_(threads)[tid_main].stack_highest_word
@@ -714,4 +674,35 @@ void handle_signal_return ( ThreadId tid
+struct timeout {
+ UInt time; /* time we should awaken */
+ ThreadId tid; /* thread which cares about this timeout */
+ struct timeout *next;
+};
+
+static struct timeout *timeouts;
+
+static void add_timeout(ThreadId tid, UInt time)
+{
+ struct timeout *t = VG_(arena_malloc)(VG_AR_CORE, sizeof(*t));
+ struct timeout **prev, *tp;
+
+ t->time = time;
+ t->tid = tid;
+
+ if (VG_(clo_trace_sched)) {
+ Char msg_buf[100];
+ VG_(sprintf)(msg_buf, "add_timeout: now=%u adding timeout at %u",
+ VG_(read_millisecond_timer)(), time);
+ print_sched_event(tid, msg_buf);
+ }
+
+ for(tp = timeouts, prev = &timeouts;
+ tp != NULL && tp->time < time;
+ prev = &tp->next, tp = tp->next)
+ ;
+ t->next = tp;
+ *prev = t;
+}
+
static
void sched_do_syscall ( ThreadId tid )
@@ -752,5 +743,5 @@ void sched_do_syscall ( ThreadId tid )
print_sched_event(tid, msg_buf);
}
- VG_(add_timeout)(tid, t_awaken);
+ add_timeout(tid, t_awaken);
/* Force the scheduler to run something else for a while. */
return;
@@ -768,35 +759,4 @@ void sched_do_syscall ( ThreadId tid )
-struct timeout {
- UInt time; /* time we should awaken */
- ThreadId tid; /* thread which cares about this timeout */
- struct timeout *next;
-};
-
-static struct timeout *timeouts;
-
-void VG_(add_timeout)(ThreadId tid, UInt time)
-{
- struct timeout *t = VG_(arena_malloc)(VG_AR_CORE, sizeof(*t));
- struct timeout **prev, *tp;
-
- t->time = time;
- t->tid = tid;
-
- if (VG_(clo_trace_sched)) {
- Char msg_buf[100];
- VG_(sprintf)(msg_buf, "add_timeout: now=%u adding timeout at %u",
- VG_(read_millisecond_timer)(), time);
- print_sched_event(tid, msg_buf);
- }
-
- for(tp = timeouts, prev = &timeouts;
- tp != NULL && tp->time < time;
- prev = &tp->next, tp = tp->next)
- ;
- t->next = tp;
- *prev = t;
-}
-
/* Sleep for a while, but be willing to be woken. */
static
@@ -1133,5 +1093,5 @@ VgSchedReturnCode VG_(scheduler) ( Int*
/* Deal with calling __libc_freeres() at exit. When the
client does __NR_exit, it's exiting for good. So we
- then run VG_(__libc_freeres_wrapper). That quits by
+ then run __libc_freeres_wrapper. That quits by
doing VG_USERREQ__LIBC_FREERES_DONE, and at that point
we really exit. To be safe we nuke all other threads
@@ -1155,5 +1115,5 @@ VgSchedReturnCode VG_(scheduler) ( Int*
if (VG_(needs).libc_freeres &&
VG_(clo_run_libc_freeres) &&
- VG_(__libc_freeres_wrapper) != 0) {
+ __libc_freeres_wrapper != 0) {
if (VG_(clo_verbosity) > 2
|| VG_(clo_trace_syscalls) || VG_(clo_trace_sched)) {
@@ -1162,5 +1122,5 @@ VgSchedReturnCode VG_(scheduler) ( Int*
}
VG_(nuke_all_threads_except) ( tid );
- VG_(threads)[tid].m_eip = (UInt)VG_(__libc_freeres_wrapper);
+ VG_(threads)[tid].m_eip = (UInt)__libc_freeres_wrapper;
vg_assert(VG_(threads)[tid].status == VgTs_Runnable);
goto stage1; /* party on, dudes (but not for much longer :) */
@@ -1254,15 +1214,15 @@ VgSchedReturnCode VG_(scheduler) ( Int*
/* It got a SIGSEGV/SIGBUS/SIGILL/SIGFPE, which we need to
deliver right away. */
- vg_assert(VG_(unresumable_siginfo).si_signo == VKI_SIGSEGV ||
- VG_(unresumable_siginfo).si_signo == VKI_SIGBUS ||
- VG_(unresumable_siginfo).si_signo == VKI_SIGILL ||
- VG_(unresumable_siginfo).si_signo == VKI_SIGFPE);
- vg_assert(longjmpd_on_signal == VG_(unresumable_siginfo).si_signo);
+ vg_assert(unresumable_siginfo.si_signo == VKI_SIGSEGV ||
+ unresumable_siginfo.si_signo == VKI_SIGBUS ||
+ unresumable_siginfo.si_signo == VKI_SIGILL ||
+ unresumable_siginfo.si_signo == VKI_SIGFPE);
+ vg_assert(longjmpd_on_signal == unresumable_siginfo.si_signo);
/* make sure we've unblocked the signals which the handler blocked */
VG_(unblock_host_signal)(longjmpd_on_signal);
- VG_(deliver_signal)(tid, &VG_(unresumable_siginfo), False);
- VG_(unresumable_siginfo).si_signo = 0; /* done */
+ VG_(deliver_signal)(tid, &unresumable_siginfo, False);
+ unresumable_siginfo.si_signo = 0; /* done */
break;
@@ -1429,5 +1389,13 @@ void make_thread_jump_to_cancelhdlr ( Th
/* Release resources and generally clean up once a thread has finally
- disappeared. */
+ disappeared.
+
+ BORKAGE/ISSUES as of 29 May 02 (moved from top of file --njn 2004-Aug-02)
+
+ TODO sometime:
+ - Mutex scrubbing - clearup_after_thread_exit: look for threads
+ blocked on mutexes held by the exiting thread, and release them
+ appropriately. (??)
+*/
static
void cleanup_after_thread_exited ( ThreadId tid, Bool forcekill )
@@ -1942,5 +1910,5 @@ void do__apply_in_new_thread ( ThreadId
/* Copy the parent's CPU state into the child's, in a roundabout
way (via baseBlock). */
- VG_(load_thread_state)(parent_tid);
+ load_thread_state(parent_tid);
/* We inherit our parent's LDT. */
@@ -1959,5 +1927,5 @@ void do__apply_in_new_thread ( ThreadId
VG_(baseBlock)[VGOFF_(tls)] = (UInt)VG_(threads)[tid].tls;
- VG_(save_thread_state)(tid);
+ save_thread_state(tid);
vg_tid_last_in_baseBlock = tid;
@@ -2540,5 +2508,5 @@ void do_pthread_cond_wait ( ThreadId tid
VG_(threads)[tid].awaken_at = ms_end;
if (ms_end != 0xFFFFFFFF)
- VG_(add_timeout)(tid, ms_end);
+ add_timeout(tid, ms_end);
if (VG_(clo_trace_pthread_level) >= 1) {
@@ -3013,5 +2981,5 @@ UInt VG_(get_exit_status_shadow) ( void
void VG_(intercept_libc_freeres_wrapper)(Addr addr)
{
- VG_(__libc_freeres_wrapper) = addr;
+ __libc_freeres_wrapper = addr;
}
|
|
From: Nicholas N. <nj...@ca...> - 2004-08-02 15:27:28
|
CVS commit by nethercote:
Scheduler counts don't need to be in vg_include.h. Replace with a print
function.
M +1 -4 vg_include.h 1.212
M +2 -9 vg_main.c 1.184
M +13 -2 vg_scheduler.c 1.162
--- valgrind/coregrind/vg_include.h #1.211:1.212
@@ -1359,8 +1359,5 @@ extern UInt VG_(bb_dechain_count);
extern UInt VG_(unchained_jumps_done);
-
-/* Counts pertaining to the scheduler. */
-extern UInt VG_(num_scheduling_events_MINOR);
-extern UInt VG_(num_scheduling_events_MAJOR);
+extern void VG_(print_scheduler_stats) ( void );
/* ---------------------------------------------------------------------
--- valgrind/coregrind/vg_main.c #1.183:1.184
@@ -202,9 +202,4 @@ static UInt sanity_fast_count = 0;
static UInt sanity_slow_count = 0;
-/* Counts pertaining to the scheduler. */
-UInt VG_(num_scheduling_events_MINOR) = 0;
-UInt VG_(num_scheduling_events_MAJOR) = 0;
-
-
static __inline__ Int safe_idiv(Int a, Int b)
{
@@ -240,9 +235,7 @@ static void show_counts ( void )
);
+ VG_(print_scheduler_stats)();
VG_(message)(Vg_DebugMsg,
- " %d/%d major/minor sched events. %d tt_fast misses.",
- VG_(num_scheduling_events_MAJOR),
- VG_(num_scheduling_events_MINOR),
- VG_(tt_fast_misses));
+ " %d tt_fast misses.", VG_(tt_fast_misses));
VG_(print_reg_alloc_stats)();
--- valgrind/coregrind/vg_scheduler.c #1.161:1.162
@@ -135,4 +135,15 @@ static void scheduler_sanity ( void );
static void do_pthread_cond_timedwait_TIMEOUT ( ThreadId tid );
+/* Stats. */
+static UInt n_scheduling_events_MINOR = 0;
+static UInt n_scheduling_events_MAJOR = 0;
+
+void VG_(print_scheduler_stats)(void)
+{
+ VG_(message)(Vg_DebugMsg,
+ " %d/%d major/minor sched events.",
+ n_scheduling_events_MAJOR, n_scheduling_events_MINOR);
+}
+
/* ---------------------------------------------------------------------
Helper functions for the scheduler.
@@ -939,5 +950,5 @@ VgSchedReturnCode VG_(scheduler) ( Int*
/* For stats purposes only. */
- VG_(num_scheduling_events_MAJOR) ++;
+ n_scheduling_events_MAJOR++;
/* Route signals to their proper places */
@@ -1039,5 +1050,5 @@ VgSchedReturnCode VG_(scheduler) ( Int*
/* For stats purposes only. */
- VG_(num_scheduling_events_MINOR) ++;
+ n_scheduling_events_MINOR++;
if (0)
|
|
From: Nicholas N. <nj...@ca...> - 2004-08-02 15:20:09
|
CVS commit by nethercote: whoops, forgot to remove these in the last commit M +0 -16 vg_main.c 1.183 --- valgrind/coregrind/vg_main.c #1.182:1.183 @@ -198,20 +198,4 @@ UInt VG_(bb_dechain_count) = 0; UInt VG_(unchained_jumps_done) = 0; - -/* Counts pertaining to the register allocator. */ - -/* total number of uinstrs input to reg-alloc */ -UInt VG_(uinstrs_prealloc) = 0; - -/* total number of uinstrs added due to spill code */ -UInt VG_(uinstrs_spill) = 0; - -/* number of bbs requiring spill code */ -UInt VG_(translations_needing_spill) = 0; - -/* total of register ranks over all translations */ -UInt VG_(total_reg_rank) = 0; - - /* Counts pertaining to internal sanity checking. */ static UInt sanity_fast_count = 0; |
|
From: Nicholas N. <nj...@ca...> - 2004-08-02 15:17:53
|
CVS commit by nethercote:
sanity_*_count don't need to be in vg_include.h.
Also hide the reg-alloc counters, and replace with a printing function.
M +12 -29 vg_include.h 1.211
M +1 -7 vg_main.c 1.182
M +22 -5 vg_translate.c 1.81
--- valgrind/coregrind/vg_include.h #1.210:1.211
@@ -1185,4 +1185,5 @@ extern void VG_(saneUCodeBlock) (
extern Bool VG_(saneUCodeBlockCalls) ( UCodeBlock* cb );
+extern void VG_(print_reg_alloc_stats) ( void );
/* ---------------------------------------------------------------------
@@ -1359,22 +1360,4 @@ extern UInt VG_(unchained_jumps_done);
-/* Counts pertaining to the register allocator. */
-
-/* total number of uinstrs input to reg-alloc */
-extern UInt VG_(uinstrs_prealloc);
-
-/* total number of uinstrs added due to spill code */
-extern UInt VG_(uinstrs_spill);
-
-/* number of bbs requiring spill code */
-extern UInt VG_(translations_needing_spill);
-
-/* total of register ranks over all translations */
-extern UInt VG_(total_reg_rank);
-
-/* Counts pertaining to internal sanity checking. */
-extern UInt VG_(sanity_fast_count);
-extern UInt VG_(sanity_slow_count);
-
/* Counts pertaining to the scheduler. */
extern UInt VG_(num_scheduling_events_MINOR);
--- valgrind/coregrind/vg_main.c #1.181:1.182
@@ -262,11 +262,5 @@ static void show_counts ( void )
VG_(tt_fast_misses));
- VG_(message)(Vg_DebugMsg,
- "reg-alloc: %d t-req-spill, "
- "%d+%d orig+spill uis, %d total-reg-r.",
- VG_(translations_needing_spill),
- VG_(uinstrs_prealloc),
- VG_(uinstrs_spill),
- VG_(total_reg_rank) );
+ VG_(print_reg_alloc_stats)();
VG_(message)(Vg_DebugMsg,
" sanity: %d cheap, %d expensive checks.",
--- valgrind/coregrind/vg_translate.c #1.80:1.81
@@ -38,4 +38,21 @@
#define dis VG_(print_codegen)
+/*------------------------------------------------------------*/
+/*--- Reg-alloc stats ---*/
+/*------------------------------------------------------------*/
+
+static UInt n_uinstrs_prealloc; // # uinstrs input to reg-alloc
+static UInt n_uinstrs_spill; // # uinstrs added due to spill code
+static UInt n_translations_needing_spill; // # bbs requiring spill code
+static UInt n_total_reg_rank; // total of register ranks over all translations
+
+void VG_(print_reg_alloc_stats)(void)
+{
+ VG_(message)(Vg_DebugMsg,
+ "reg-alloc: %d t-req-spill, "
+ "%d+%d orig+spill uis, %d total-reg-r.",
+ n_translations_needing_spill,
+ n_uinstrs_prealloc, n_uinstrs_spill, n_total_reg_rank );
+}
/*------------------------------------------------------------*/
@@ -2087,5 +2104,5 @@ UCodeBlock* vg_do_register_allocation (
}
- VG_(total_reg_rank) += (max_ss_no+1);
+ n_total_reg_rank += (max_ss_no+1);
/* Show live ranges and assigned spill slot nos. */
@@ -2132,5 +2149,5 @@ UCodeBlock* vg_do_register_allocation (
if (c1->instrs[i].opcode == NOP) continue;
- VG_(uinstrs_prealloc)++;
+ n_uinstrs_prealloc++;
# if 0
@@ -2268,5 +2285,5 @@ UCodeBlock* vg_do_register_allocation (
RealReg, VG_(rank_to_realreg)(r),
SpillNo, temp_info[real_to_temp[r]].spill_no);
- VG_(uinstrs_spill)++;
+ n_uinstrs_spill++;
spill_reqd = True;
if (dis)
@@ -2285,5 +2302,5 @@ UCodeBlock* vg_do_register_allocation (
SpillNo, temp_info[tno].spill_no,
RealReg, VG_(rank_to_realreg)(r) );
- VG_(uinstrs_spill)++;
+ n_uinstrs_spill++;
spill_reqd = True;
if (dis)
@@ -2317,5 +2334,5 @@ UCodeBlock* vg_do_register_allocation (
if (spill_reqd)
- VG_(translations_needing_spill)++;
+ n_translations_needing_spill++;
return c2;
|
|
From: Nicholas N. <nj...@ca...> - 2004-08-02 15:13:49
|
CVS commit by nethercote:
Sanity counters don't need to be in vg_include.h.
M +8 -9 vg_main.c 1.181
--- valgrind/coregrind/vg_main.c #1.180:1.181
@@ -215,6 +215,6 @@ UInt VG_(total_reg_rank) = 0;
/* Counts pertaining to internal sanity checking. */
-UInt VG_(sanity_fast_count) = 0;
-UInt VG_(sanity_slow_count) = 0;
+static UInt sanity_fast_count = 0;
+static UInt sanity_slow_count = 0;
/* Counts pertaining to the scheduler. */
@@ -271,6 +271,5 @@ static void show_counts ( void )
VG_(message)(Vg_DebugMsg,
" sanity: %d cheap, %d expensive checks.",
- VG_(sanity_fast_count),
- VG_(sanity_slow_count) );
+ sanity_fast_count, sanity_slow_count );
VG_(print_ccall_stats)();
}
@@ -2558,5 +2557,5 @@ void VG_(do_sanity_checks) ( Bool force_
/* --- First do all the tests that we can do quickly. ---*/
- VG_(sanity_fast_count)++;
+ sanity_fast_count++;
/* Check stuff pertaining to the memory check system. */
@@ -2575,8 +2574,8 @@ void VG_(do_sanity_checks) ( Bool force_
if ( force_expensive
|| VG_(clo_sanity_level) > 1
- || (VG_(clo_sanity_level) == 1 && (VG_(sanity_fast_count) % 25) == 0)) {
+ || (VG_(clo_sanity_level) == 1 && (sanity_fast_count % 25) == 0)) {
VGP_PUSHCC(VgpCoreExpensiveSanity);
- VG_(sanity_slow_count)++;
+ sanity_slow_count++;
VG_(proxy_sanity)();
@@ -2586,5 +2585,5 @@ void VG_(do_sanity_checks) ( Bool force_
# endif
- if ((VG_(sanity_fast_count) % 250) == 0)
+ if ((sanity_fast_count % 250) == 0)
VG_(sanity_check_tc_tt)();
@@ -2595,5 +2594,5 @@ void VG_(do_sanity_checks) ( Bool force_
}
/*
- if ((VG_(sanity_fast_count) % 500) == 0) VG_(mallocSanityCheckAll)();
+ if ((sanity_fast_count % 500) == 0) VG_(mallocSanityCheckAll)();
*/
VGP_POPCC(VgpCoreExpensiveSanity);
|
|
From: Nicholas N. <nj...@ca...> - 2004-08-02 14:14:51
|
CVS commit by nethercote:
Tweak to remove another global variable from vg_include.h
M +2 -3 vg_include.h 1.210
M +9 -8 vg_main.c 1.180
M +2 -2 vg_signals.c 1.76
--- valgrind/coregrind/vg_include.h #1.209:1.210
@@ -1332,6 +1332,5 @@ extern ThreadId VG_(last_run_tid);
/* If we're doing the default action of a fatal signal */
-extern jmp_buf VG_(fatal_signal_jmpbuf);
-extern Bool VG_(fatal_signal_set); /* jmp_buf is valid */
+extern jmp_buf* VG_(fatal_signal_jmpbuf_ptr);
extern Int VG_(fatal_sigNo); /* the fatal signal */
--- valgrind/coregrind/vg_main.c #1.179:1.180
@@ -152,8 +152,9 @@ Char** VG_(client_envp);
UInt VG_(sigstack)[VG_SIGSTACK_SIZE_W];
-/* jmp_buf for fatal signals */
+/* jmp_buf for fatal signals; VG_(fatal_signal_jmpbuf_ptr) is NULL until
+ the time is right that it can be used. */
Int VG_(fatal_sigNo) = -1;
-Bool VG_(fatal_signal_set) = False;
-jmp_buf VG_(fatal_signal_jmpbuf);
+jmp_buf* VG_(fatal_signal_jmpbuf_ptr) = NULL;
+jmp_buf fatal_signal_jmpbuf;
/* Counts downwards in VG_(run_innerloop). */
@@ -2981,10 +2982,10 @@ int main(int argc, char **argv)
VGP_PUSHCC(VgpSched);
- if (__builtin_setjmp(&VG_(fatal_signal_jmpbuf)) == 0) {
- VG_(fatal_signal_set) = True;
+ VG_(fatal_signal_jmpbuf_ptr) = &fatal_signal_jmpbuf;
+ if (__builtin_setjmp(VG_(fatal_signal_jmpbuf_ptr)) == 0) {
src = VG_(scheduler)( &exitcode );
- } else
+ } else {
src = VgSrc_FatalSig;
-
+ }
VGP_POPCC(VgpSched);
--- valgrind/coregrind/vg_signals.c #1.75:1.76
@@ -1796,7 +1796,7 @@ static void vg_default_action(const vki_
}
- if (VG_(fatal_signal_set)) {
+ if (NULL != VG_(fatal_signal_jmpbuf_ptr)) {
VG_(fatal_sigNo) = sigNo;
- __builtin_longjmp(VG_(fatal_signal_jmpbuf), 1);
+ __builtin_longjmp(*VG_(fatal_signal_jmpbuf_ptr), 1);
}
}
|
|
From: Nicholas N. <nj...@ca...> - 2004-08-02 14:12:45
|
CVS commit by nethercote:
Make VG_(n_errs_found) local; replace globally with a 'get' function. Renamed
vg_n_errs_suppressed too.
M +18 -16 vg_errcontext.c 1.56
M +2 -2 vg_include.h 1.209
M +1 -1 vg_scheduler.c 1.161
--- valgrind/coregrind/vg_errcontext.c #1.55:1.56
@@ -44,8 +44,8 @@ static Supp* vg_suppressions = NULL;
/* Running count of unsuppressed errors detected. */
-UInt VG_(n_errs_found) = 0;
+static UInt n_errs_found = 0;
/* Running count of suppressed errors detected. */
-static UInt vg_n_errs_suppressed = 0;
+static UInt n_errs_suppressed = 0;
/* forwards ... */
@@ -114,4 +114,9 @@ void* VG_(get_error_extra) ( Error* err
}
+UInt VG_(get_n_errs_found)( void )
+{
+ return n_errs_found;
+}
+
/*------------------------------------------------------------*/
/*--- Suppression type ---*/
@@ -424,5 +429,5 @@ void VG_(maybe_record_error) ( ThreadId
if (VG_(clo_error_limit)
&& (vg_n_errs_shown >= M_VG_COLLECT_NO_ERRORS_AFTER_SHOWN
- || VG_(n_errs_found) >= M_VG_COLLECT_NO_ERRORS_AFTER_FOUND)) {
+ || n_errs_found >= M_VG_COLLECT_NO_ERRORS_AFTER_FOUND)) {
if (!stopping_message) {
VG_(message)(Vg_UserMsg, "");
@@ -483,7 +488,7 @@ void VG_(maybe_record_error) ( ThreadId
/* Deal correctly with suppressed errors. */
p->supp->count++;
- vg_n_errs_suppressed++;
+ n_errs_suppressed++;
} else {
- VG_(n_errs_found)++;
+ n_errs_found++;
}
@@ -540,5 +545,5 @@ void VG_(maybe_record_error) ( ThreadId
vg_errors = p;
if (p->supp == NULL) {
- VG_(n_errs_found)++;
+ n_errs_found++;
if (!is_first_shown_context)
VG_(message)(Vg_UserMsg, "");
@@ -548,5 +553,5 @@ void VG_(maybe_record_error) ( ThreadId
do_actions_on_error(p, /*allow_db_attach*/True);
} else {
- vg_n_errs_suppressed++;
+ n_errs_suppressed++;
p->supp->count++;
}
@@ -558,5 +563,5 @@ void VG_(maybe_record_error) ( ThreadId
comparing stuff. But they can be suppressed; returns True if it is
suppressed. Bool `print_error' dictates whether to print the error.
- Bool `count_error' dictates whether to count the error in VG_(n_errs_found)
+ Bool `count_error' dictates whether to count the error in n_errs_found.
*/
Bool VG_(unique_error) ( ThreadId tid, ErrorKind ekind, Addr a, Char* s,
@@ -579,5 +584,5 @@ Bool VG_(unique_error) ( ThreadId tid, E
if (NULL == is_suppressible_error(&err)) {
if (count_error)
- VG_(n_errs_found)++;
+ n_errs_found++;
if (print_error) {
@@ -592,5 +597,5 @@ Bool VG_(unique_error) ( ThreadId tid, E
} else {
- vg_n_errs_suppressed++;
+ n_errs_suppressed++;
return True;
}
@@ -610,6 +615,4 @@ void VG_(record_pthread_error) ( ThreadI
}
-/*------------------------------*/
-
void VG_(show_all_errors) ( void )
{
@@ -637,6 +640,6 @@ void VG_(show_all_errors) ( void )
"ERROR SUMMARY: "
"%d errors from %d contexts (suppressed: %d from %d)",
- VG_(n_errs_found), n_err_contexts,
- vg_n_errs_suppressed, n_supp_contexts );
+ n_errs_found, n_err_contexts,
+ n_errs_suppressed, n_supp_contexts );
if (VG_(clo_verbosity) <= 1)
@@ -686,6 +689,5 @@ void VG_(show_all_errors) ( void )
"IN SUMMARY: "
"%d errors from %d contexts (suppressed: %d from %d)",
- VG_(n_errs_found), n_err_contexts,
- vg_n_errs_suppressed,
+ n_errs_found, n_err_contexts, n_errs_suppressed,
n_supp_contexts );
VG_(message)(Vg_UserMsg, "");
--- valgrind/coregrind/vg_include.h #1.208:1.209
@@ -1224,5 +1224,5 @@ extern void VG_(show_all_errors) (
extern Bool VG_(is_action_requested) ( Char* action, Bool* clo );
-extern UInt VG_(n_errs_found);
+extern UInt VG_(get_n_errs_found) ( void );
/* ---------------------------------------------------------------------
--- valgrind/coregrind/vg_scheduler.c #1.160:1.161
@@ -3345,5 +3345,5 @@ void do_client_request ( ThreadId tid )
case VG_USERREQ__COUNT_ERRORS:
- SET_CLREQ_RETVAL( tid, VG_(n_errs_found) );
+ SET_CLREQ_RETVAL( tid, VG_(get_n_errs_found)() );
break;
|
|
From: Nicholas N. <nj...@ca...> - 2004-08-02 12:21:22
|
CVS commit by nethercote:
Make the Supp and Error types local to vg_errcontext.h; they don't need to be
global.
M +133 -0 vg_errcontext.c 1.55
M +0 -79 vg_include.h 1.208
M +0 -62 vg_needs.c 1.17
--- valgrind/coregrind/vg_errcontext.c #1.54:1.55
@@ -54,4 +54,137 @@ static Supp* is_suppressible_error ( Err
/*------------------------------------------------------------*/
+/*--- Error type ---*/
+/*------------------------------------------------------------*/
+
+/* Note: it is imperative this doesn't overlap with (0..) at all, as skins
+ * effectively extend it by defining their own enums in the (0..) range. */
+typedef
+ enum {
+ PThreadErr = -1, // Pthreading error
+ }
+ CoreErrorKind;
+
+/* Errors. Extensible (via the 'extra' field). Tools can use a normal
+ enum (with element values in the normal range (0..)) for `ekind'.
+ Functions for getting/setting the tool-relevant fields are in
+ include/vg_skin.h.
+
+ When errors are found and recorded with VG_(maybe_record_error)(), all
+ the tool must do is pass in the four parameters; core will
+ allocate/initialise the error record.
+*/
+struct _Error {
+ struct _Error* next;
+ // NULL if unsuppressed; or ptr to suppression record.
+ Supp* supp;
+ Int count;
+ ThreadId tid;
+
+ // The tool-specific part
+ ExeContext* where; // Initialised by core
+ Int ekind; // Used by ALL. Must be in the range (0..)
+ Addr addr; // Used frequently
+ Char* string; // Used frequently
+ void* extra; // For any tool-specific extras
+};
+
+ExeContext* VG_(get_error_where) ( Error* err )
+{
+ return err->where;
+}
+
+ErrorKind VG_(get_error_kind) ( Error* err )
+{
+ return err->ekind;
+}
+
+Addr VG_(get_error_address) ( Error* err )
+{
+ return err->addr;
+}
+
+Char* VG_(get_error_string) ( Error* err )
+{
+ return err->string;
+}
+
+void* VG_(get_error_extra) ( Error* err )
+{
+ return err->extra;
+}
+
+/*------------------------------------------------------------*/
+/*--- Suppression type ---*/
+/*------------------------------------------------------------*/
+
+/* Note: it is imperative this doesn't overlap with (0..) at all, as tools
+ * effectively extend it by defining their own enums in the (0..) range. */
+typedef
+ enum {
+ PThreadSupp = -1, /* Matches PThreadErr */
+ }
+ CoreSuppKind;
+
+/* For each caller specified for a suppression, record the nature of
+ the caller name. Not of interest to tools. */
+typedef
+ enum {
+ ObjName, /* Name is of an shared object file. */
+ FunName /* Name is of a function. */
+ }
+ SuppLocTy;
+
+/* Suppressions. Tools can get/set tool-relevant parts with functions
+ declared in include/vg_skin.h. Extensible via the 'extra' field.
+ Tools can use a normal enum (with element values in the normal range
+ (0..)) for `skind'. */
+struct _Supp {
+ struct _Supp* next;
+ Int count; // The number of times this error has been suppressed.
+ Char* sname; // The name by which the suppression is referred to.
+ /* First two (name of fn where err occurs, and immediate caller)
+ * are mandatory; extra two are optional. */
+ SuppLocTy caller_ty[VG_N_SUPP_CALLERS];
+ Char* caller [VG_N_SUPP_CALLERS];
+
+ /* The tool-specific part */
+ SuppKind skind; // What kind of suppression. Must use the range (0..).
+ Char* string; // String -- use is optional. NULL by default.
+ void* extra; // Anything else -- use is optional. NULL by default.
+};
+
+SuppKind VG_(get_supp_kind) ( Supp* su )
+{
+ return su->skind;
+}
+
+Char* VG_(get_supp_string) ( Supp* su )
+{
+ return su->string;
+}
+
+void* VG_(get_supp_extra) ( Supp* su )
+{
+ return su->extra;
+}
+
+
+void VG_(set_supp_kind) ( Supp* su, SuppKind skind )
+{
+ su->skind = skind;
+}
+
+void VG_(set_supp_string) ( Supp* su, Char* string )
+{
+ su->string = string;
+}
+
+void VG_(set_supp_extra) ( Supp* su, void* extra )
+{
+ su->extra = extra;
+}
+
+
+/*------------------------------------------------------------*/
/*--- Helper fns ---*/
/*------------------------------------------------------------*/
--- valgrind/coregrind/vg_include.h #1.207:1.208
@@ -1216,83 +1216,4 @@ extern ExeContext* VG_(get_ExeContext2)
------------------------------------------------------------------ */
-/* Note: it is imperative this doesn't overlap with (0..) at all, as skins
- * effectively extend it by defining their own enums in the (0..) range. */
-typedef
- enum {
- PThreadSupp = -1, /* Matches PThreadErr */
- }
- CoreSuppKind;
-
-/* For each caller specified for a suppression, record the nature of
- the caller name. Not of interest to skins. */
-typedef
- enum {
- ObjName, /* Name is of an shared object file. */
- FunName /* Name is of a function. */
- }
- SuppLocTy;
-
-/* Suppressions. Skins can get/set skin-relevant parts with functions
- declared in include/vg_skin.h. Extensible via the 'extra' field.
- Skins can use a normal enum (with element values in the normal range
- (0..)) for `skind'. */
-struct _Supp {
- struct _Supp* next;
- /* The number of times this error has been suppressed. */
- Int count;
- /* The name by which the suppression is referred to. */
- Char* sname;
- /* First two (name of fn where err occurs, and immediate caller)
- * are mandatory; extra two are optional. */
- SuppLocTy caller_ty[VG_N_SUPP_CALLERS];
- Char* caller [VG_N_SUPP_CALLERS];
-
- /* The skin-specific part */
- /* What kind of suppression. Must use the range (0..) */
- SuppKind skind;
- /* String -- use is optional. NULL by default. */
- Char* string;
- /* Anything else -- use is optional. NULL by default. */
- void* extra;
-};
-
-/* Note: it is imperative this doesn't overlap with (0..) at all, as skins
- * effectively extend it by defining their own enums in the (0..) range. */
-typedef
- enum {
- PThreadErr = -1, /* Pthreading error */
- }
- CoreErrorKind;
-
-/* Errors. Extensible (via the 'extra' field). Skins can use a normal
- enum (with element values in the normal range (0..)) for `ekind'.
- Functions for getting/setting the skin-relevant fields are in
- include/vg_skin.h.
-
- When errors are found and recorded with VG_(maybe_record_error)(), all
- the skin must do is pass in the four parameters; core will
- allocate/initialise the error record.
-*/
-struct _Error {
- struct _Error* next;
- /* NULL if unsuppressed; or ptr to suppression record. */
- Supp* supp;
- Int count;
- ThreadId tid;
-
- /* The skin-specific part */
- /* Initialised by core */
- ExeContext* where;
- /* Used by ALL. Must be in the range (0..) */
- Int ekind;
- /* Used frequently */
- Addr addr;
- /* Used frequently */
- Char* string;
- /* For any skin-specific extras */
- void* extra;
-};
-
-
extern void VG_(load_suppressions) ( void );
--- valgrind/coregrind/vg_needs.c #1.16:1.17
@@ -192,66 +192,4 @@ UInstr* VG_(get_last_instr) ( UCodeBlock
/*--------------------------------------------------------------------*/
-/* Suppressions */
-
-SuppKind VG_(get_supp_kind) ( Supp* su )
-{
- return su->skind;
-}
-
-Char* VG_(get_supp_string) ( Supp* su )
-{
- return su->string;
-}
-
-void* VG_(get_supp_extra) ( Supp* su )
-{
- return su->extra;
-}
-
-
-void VG_(set_supp_kind) ( Supp* su, SuppKind skind )
-{
- su->skind = skind;
-}
-
-void VG_(set_supp_string) ( Supp* su, Char* string )
-{
- su->string = string;
-}
-
-void VG_(set_supp_extra) ( Supp* su, void* extra )
-{
- su->extra = extra;
-}
-
-/*--------------------------------------------------------------------*/
-/* Errors */
-
-ExeContext* VG_(get_error_where) ( Error* err )
-{
- return err->where;
-}
-
-ErrorKind VG_(get_error_kind) ( Error* err )
-{
- return err->ekind;
-}
-
-Addr VG_(get_error_address) ( Error* err )
-{
- return err->addr;
-}
-
-Char* VG_(get_error_string) ( Error* err )
-{
- return err->string;
-}
-
-void* VG_(get_error_extra) ( Error* err )
-{
- return err->extra;
-}
-
-/*--------------------------------------------------------------------*/
/*--- end vg_needs.c ---*/
/*--------------------------------------------------------------------*/
|
|
From: Nicholas N. <nj...@ca...> - 2004-08-02 12:10:23
|
CVS commit by nethercote:
Fold VG_(send_signal_to_thread)() into vg_scheduler.c, so it doesn't need to be
exported any more.
M +0 -2 vg_include.h 1.207
M +4 -1 vg_scheduler.c 1.160
M +0 -14 vg_signals.c 1.75
--- valgrind/coregrind/vg_include.h #1.206:1.207
@@ -1060,6 +1060,4 @@ extern void VG_(do_pthread_sigmask_SCSS_
vki_ksigset_t* set,
vki_ksigset_t* oldset );
-extern void VG_(send_signal_to_thread) ( ThreadId thread, Int signo );
-
/* Modify the current thread's state once we have detected it is
--- valgrind/coregrind/vg_scheduler.c #1.159:1.160
@@ -2826,4 +2826,5 @@ void do_pthread_kill ( ThreadId tid, /*
Int sig )
{
+ ThreadState* tst;
Char msg_buf[100];
@@ -2856,5 +2857,7 @@ void do_pthread_kill ( ThreadId tid, /*
}
- VG_(send_signal_to_thread)( thread, sig );
+ tst = VG_(get_ThreadState)(thread);
+ vg_assert(NULL != tst->proxy);
+ VG_(proxy_sendsig)(thread, sig);
SET_PTHREQ_RETVAL(tid, 0);
}
--- valgrind/coregrind/vg_signals.c #1.74:1.75
@@ -731,18 +731,4 @@ void VG_(do_pthread_sigmask_SCSS_upd) (
-void VG_(send_signal_to_thread) ( ThreadId thread, Int sig )
-{
- ThreadState *tst;
-
- vg_assert(VG_(is_valid_tid)(thread));
- vg_assert(sig >= 1 && sig <= VKI_KNSIG);
-
- tst = VG_(get_ThreadState)(thread);
- vg_assert(tst->proxy != NULL);
-
- VG_(proxy_sendsig)(thread, sig);
-}
-
-
/* ---------------------------------------------------------------------
LOW LEVEL STUFF TO DO WITH SIGNALS: IMPLEMENTATION
|
|
From: Doug R. <df...@nl...> - 2004-08-02 08:47:26
|
On Monday 02 August 2004 00:31, Nicholas Nethercote wrote: > On Sun, 1 Aug 2004, Doug Rabson wrote: > >> Valgrind Linux > >> -------- ----- > >> include/vki_linux.h include/linux/*.h > >> include/vki_asm-generic.h include/asm-generic/*.h > >> include/vki_asm-x86_64.h include/asm-x86_64/*.h > >> include/vki_asm-i386.h include/asm-i386/*.h > > > > For FreeBSD, I would really prefer to use the system headers > > directly. We don't have the same problems as Linux wrt. libc > > redefining headers. Since the same people maintain libc and kernel, > > there is never an opportunity to get out of sync. > > That's good; one less thing to get wrong. > > I realised my above-mentioned dir/*.h --> vki_dir.h scheme won't > work, because the dependencies between the various .h files under > Linux are complex enough that you can't reduce a directory's worth of > .h files into a single one. > > I'm contemplating using as many of the kernel headers as necessary, > keeping them separate, but only copying the used parts. That way, > with the current usage, there would be about 45 .h files, each one > typically very short with only one or two vki_/VKI_ types or > constants used. That's kind of sucky, but I can't think of anything > better. If you are re-organising things, would it be possible to do whatever is necessary to facilitate merging in all the FreeBSD bits? I would quite like to get all that stuff into the mainline sources at some point. |
|
From: <js...@ac...> - 2004-08-02 02:58:55
|
Nightly build on nemesis ( SuSE 9.1 ) started at 2004-08-02 03:50:01 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow sem: valgrind ./sem semlimit: valgrind ./semlimit sha1_test: valgrind ./sha1_test shortpush: valgrind ./shortpush shorts: valgrind ./shorts smc1: valgrind ./smc1 susphello: valgrind ./susphello syscall-restart1: valgrind ./syscall-restart1 syscall-restart2: valgrind ./syscall-restart2 system: valgrind ./system yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 169 tests, 4 stderr failures, 0 stdout failures ================= corecheck/tests/as_mmap (stderr) corecheck/tests/fdleak_fcntl (stderr) memcheck/tests/writev (stderr) memcheck/tests/zeropage (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <to...@co...> - 2004-08-02 02:25:10
|
Nightly build on dunsmere ( Fedora Core 2 ) started at 2004-08-02 03:20:02 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow shorts: valgrind ./shorts smc1: valgrind ./smc1 susphello: valgrind ./susphello syscall-restart1: valgrind ./syscall-restart1 syscall-restart2: valgrind ./syscall-restart2 system: valgrind ./system yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 174 tests, 7 stderr failures, 1 stdout failure ================= corecheck/tests/fdleak_cmsg (stderr) corecheck/tests/fdleak_fcntl (stderr) corecheck/tests/fdleak_ipv4 (stderr) corecheck/tests/fdleak_socketpair (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/execve (stderr) memcheck/tests/writev (stderr) none/tests/exec-sigmask (stdout) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2004-08-02 02:19:26
|
Nightly build on audi ( Red Hat 9 ) started at 2004-08-02 03:15:02 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow shortpush: valgrind ./shortpush shorts: valgrind ./shorts smc1: valgrind ./smc1 susphello: valgrind ./susphello syscall-restart1: valgrind ./syscall-restart1 syscall-restart2: valgrind ./syscall-restart2 system: valgrind ./system yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 174 tests, 7 stderr failures, 0 stdout failures ================= corecheck/tests/fdleak_cmsg (stderr) corecheck/tests/fdleak_fcntl (stderr) corecheck/tests/fdleak_ipv4 (stderr) corecheck/tests/fdleak_socketpair (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/execve (stderr) memcheck/tests/writev (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2004-08-02 02:13:18
|
Nightly build on ginetta ( Red Hat 8.0 ) started at 2004-08-02 03:10:02 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow seg_override: valgrind ./seg_override sem: valgrind ./sem semlimit: valgrind ./semlimit sha1_test: valgrind ./sha1_test shortpush: valgrind ./shortpush shorts: valgrind ./shorts smc1: valgrind ./smc1 susphello: valgrind ./susphello syscall-restart1: valgrind ./syscall-restart1 syscall-restart2: valgrind ./syscall-restart2 system: valgrind ./system yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 174 tests, 3 stderr failures, 0 stdout failures ================= helgrind/tests/race (stderr) helgrind/tests/race2 (stderr) memcheck/tests/writev (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2004-08-02 02:08:15
|
Nightly build on alvis ( Red Hat 7.3 ) started at 2004-08-02 03:05:02 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow susphello: valgrind ./susphello syscall-restart1: valgrind ./syscall-restart1 syscall-restart2: valgrind ./syscall-restart2 system: valgrind ./system yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 174 tests, 9 stderr failures, 1 stdout failure ================= addrcheck/tests/toobig-allocs (stderr) helgrind/tests/deadlock (stderr) helgrind/tests/race (stderr) helgrind/tests/race2 (stderr) memcheck/tests/badjump (stderr) memcheck/tests/brk (stderr) memcheck/tests/error_counts (stdout) memcheck/tests/new_nothrow (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/writev (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2004-08-02 02:07:18
|
Nightly build on standard ( Red Hat 7.2 ) started at 2004-08-02 03:00:02 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow rcrl: valgrind ./rcrl readline1: valgrind ./readline1 resolv: valgrind ./resolv rlimit_nofile: valgrind ./rlimit_nofile seg_override: valgrind ./seg_override sem: valgrind ./sem semlimit: valgrind ./semlimit sha1_test: valgrind ./sha1_test shortpush: valgrind ./shortpush shorts: valgrind ./shorts smc1: valgrind ./smc1 susphello: valgrind ./susphello syscall-restart1: valgrind ./syscall-restart1 syscall-restart2: valgrind ./syscall-restart2 system: valgrind ./system yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 174 tests, 0 stderr failures, 0 stdout failures ================= |