mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 18:13:01 +00:00
Reinstate timestamping, sort-of, having trashed VG_(ctime) as part of
the glibc-removal process. Timestamps are now printed in terms of elapsed wallclock time since startup, shown as days, hours, minutes, seconds and milliseconds. The arithmetic is done with 32-bit unsigned ints, so people doing Valgrind runs that last longer than 49.71 days are going to see some funny results :-) git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5042
This commit is contained in:
parent
db732ea188
commit
63bfdbc99f
@ -32,9 +32,9 @@
|
||||
#include "pub_core_debuglog.h"
|
||||
#include "pub_core_libcbase.h"
|
||||
#include "pub_core_libcassert.h"
|
||||
#include "pub_core_libcfile.h" // For VG_(write)(), VG_(write_socket)()
|
||||
#include "pub_core_libcfile.h" // VG_(write)(), VG_(write_socket)()
|
||||
#include "pub_core_libcprint.h"
|
||||
#include "pub_core_libcproc.h" // For VG_(getpid)()
|
||||
#include "pub_core_libcproc.h" // VG_(getpid)(), VG_(read_millisecond_timer()
|
||||
#include "pub_core_options.h"
|
||||
#include "valgrind.h" // For RUNNING_ON_VALGRIND
|
||||
|
||||
@ -252,28 +252,35 @@ void VG_(percentify)(ULong n, ULong m, UInt d, Int n_buf, char buf[])
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
ctime()
|
||||
elapsed_wallclock_time()
|
||||
------------------------------------------------------------------ */
|
||||
|
||||
/* BUF must be at least 25 characters long. This is unchecked. */
|
||||
/* Get the elapsed wallclock time since startup into buf, which must
|
||||
16 chars long. This is unchecked. It also relies on the
|
||||
millisecond timer having been set to zero by an initial read in
|
||||
m_main during startup. */
|
||||
|
||||
void VG_(ctime) ( /*OUT*/HChar* buf )
|
||||
void VG_(elapsed_wallclock_time) ( /*OUT*/HChar* buf )
|
||||
{
|
||||
#if 0
|
||||
struct timeval tv;
|
||||
struct tm tm;
|
||||
buf[0] = 0;
|
||||
if ( gettimeofday( &tv, NULL ) == 0
|
||||
&& localtime_r( &tv.tv_sec, &tm ) == &tm )
|
||||
{
|
||||
VG_(sprintf)( buf,
|
||||
"%04d-%02d-%02d %02d:%02d:%02d.%03d",
|
||||
tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
|
||||
tm.tm_hour, tm.tm_min, tm.tm_sec, tv.tv_usec / 1000 );
|
||||
}
|
||||
#else
|
||||
VG_(strcpy)(buf, "VG_(ctime) HACK!");
|
||||
#endif
|
||||
UInt t, ms, s, mins, hours, days;
|
||||
|
||||
t = VG_(read_millisecond_timer)(); /* milliseconds */
|
||||
|
||||
ms = t % 1000;
|
||||
t /= 1000; /* now in seconds */
|
||||
|
||||
s = t % 60;
|
||||
t /= 60; /* now in minutes */
|
||||
|
||||
mins = t % 60;
|
||||
t /= 60; /* now in hours */
|
||||
|
||||
hours = t % 24;
|
||||
t /= 24; /* now in days */
|
||||
|
||||
days = t;
|
||||
|
||||
VG_(sprintf)(buf, "%02u:%02u:%02u:%02u.%03u", days, hours, mins, s, ms);
|
||||
}
|
||||
|
||||
|
||||
@ -307,7 +314,7 @@ UInt VG_(vmessage) ( VgMsgKind kind, const HChar* format, va_list vargs )
|
||||
|
||||
if (VG_(clo_time_stamp)) {
|
||||
HChar buf[50];
|
||||
VG_(ctime)(buf);
|
||||
VG_(elapsed_wallclock_time)(buf);
|
||||
count += VG_(printf)( "%s ", buf);
|
||||
}
|
||||
|
||||
|
||||
@ -2233,6 +2233,12 @@ Int main(Int argc, HChar **argv, HChar **envp)
|
||||
"setup logging\n");
|
||||
logging_to_fd = process_cmd_line_options(client_auxv, toolname);
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Zeroise the millisecond counter by doing a first read of it.
|
||||
// p: none
|
||||
//--------------------------------------------------------------
|
||||
(void) VG_(read_millisecond_timer)();
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Print the preamble
|
||||
// p: tl_pre_clo_init [for 'VG_(details).name' and friends]
|
||||
@ -2494,7 +2500,7 @@ Int main(Int argc, HChar **argv, HChar **envp)
|
||||
|
||||
if (VG_(clo_xml)) {
|
||||
HChar buf[50];
|
||||
VG_(ctime)(buf);
|
||||
VG_(elapsed_wallclock_time)(buf);
|
||||
VG_(message)(Vg_UserMsg, "<status>\n"
|
||||
" <state>RUNNING</state>\n"
|
||||
" <time>%t</time>\n"
|
||||
@ -2565,7 +2571,7 @@ void shutdown_actions_NORETURN( ThreadId tid,
|
||||
VG_(show_error_counts_as_XML)();
|
||||
VG_(message)(Vg_UserMsg, "");
|
||||
}
|
||||
VG_(ctime)(buf);
|
||||
VG_(elapsed_wallclock_time)(buf);
|
||||
VG_(message)(Vg_UserMsg, "<status>\n"
|
||||
" <state>FINISHED</state>\n"
|
||||
" <time>%t</time>\n"
|
||||
|
||||
@ -42,9 +42,11 @@
|
||||
descriptor or a socket descriptor. */
|
||||
extern Bool VG_(logging_to_socket);
|
||||
|
||||
/* Get a human-readable representation of the local time into BUF,
|
||||
which must be at least 25 characters long. This is unchecked. */
|
||||
extern void VG_(ctime) ( /*OUT*/HChar* buf );
|
||||
/* Get the elapsed wallclock time since startup into buf, which must
|
||||
16 chars long. This is unchecked. It also relies on the
|
||||
millisecond timer having been set to zero by an initial read in
|
||||
m_main during startup. */
|
||||
void VG_(elapsed_wallclock_time) ( /*OUT*/HChar* buf );
|
||||
|
||||
#endif // __PUB_CORE_LIBCPRINT_H
|
||||
|
||||
|
||||
@ -647,8 +647,10 @@ categories.</para>
|
||||
<listitem id="time_stamp">
|
||||
<para><computeroutput>--time-stamp=no</computeroutput> [default]</para>
|
||||
<para><computeroutput>--time-stamp=yes</computeroutput></para>
|
||||
<para>When enabled, Valgrind will precede each message with the
|
||||
current time and date.</para>
|
||||
<para>When enabled, Valgrind will precede each message with
|
||||
an indication of the elapsed wallclock time since startup,
|
||||
expressed as days, hours, minutes, seconds and milliseconds.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem id="log2fd">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user