Added abs_time_t structure to the server protocol, and added a dump
routine for it that displays the relative timeout to make timeout
values easier to interpret.
diff --git a/server/trace.c b/server/trace.c
index 2110883..9f46615 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -59,6 +59,29 @@
fputc( '}', stderr );
}
+static void dump_abs_time( const abs_time_t *time )
+{
+ struct timeval tv;
+ int secs, usecs;
+
+ if (!time->sec && !time->usec)
+ {
+ fprintf( stderr, "0" );
+ return;
+ }
+ gettimeofday( &tv, NULL );
+ secs = time->sec - tv.tv_sec;
+ if ((usecs = time->usec - tv.tv_usec) < 0)
+ {
+ usecs += 1000000;
+ secs--;
+ }
+ if (secs > 0 || (secs == 0 && usecs >= 0))
+ fprintf( stderr, "%d.%06d (+%d.%06d)", time->sec, time->usec, secs, usecs );
+ else
+ fprintf( stderr, "%d.%06d (-%d.%06d)", time->sec, time->usec, abs(secs+1), 1000000-usecs );
+}
+
static void dump_rectangle( const rectangle_t *rect )
{
fprintf( stderr, "{%d,%d;%d,%d}",
@@ -684,8 +707,9 @@
{
fprintf( stderr, " flags=%d,", req->flags );
fprintf( stderr, " cookie=%p,", req->cookie );
- fprintf( stderr, " sec=%d,", req->sec );
- fprintf( stderr, " usec=%d,", req->usec );
+ fprintf( stderr, " timeout=" );
+ dump_abs_time( &req->timeout );
+ fprintf( stderr, "," );
fprintf( stderr, " handles=" );
dump_varargs_handles( cur_size );
}
@@ -1662,8 +1686,9 @@
static void dump_set_timer_request( const struct set_timer_request *req )
{
fprintf( stderr, " handle=%p,", req->handle );
- fprintf( stderr, " sec=%d,", req->sec );
- fprintf( stderr, " usec=%d,", req->usec );
+ fprintf( stderr, " expire=" );
+ dump_abs_time( &req->expire );
+ fprintf( stderr, "," );
fprintf( stderr, " period=%d,", req->period );
fprintf( stderr, " callback=%p,", req->callback );
fprintf( stderr, " arg=%p", req->arg );