summaryrefslogtreecommitdiffstats
path: root/daemon/proto.c
diff options
context:
space:
mode:
authorRichard Jones <rjones@centos5x32.home.annexia.org>2009-07-03 00:22:14 +0100
committerRichard Jones <rjones@centos5x32.home.annexia.org>2009-07-03 00:22:14 +0100
commit6fb57e430c8daa06d8d938ac02a104c8aadbbda5 (patch)
tree38586363a6a7d68e5559347d1cc7671593c81aed /daemon/proto.c
parentb7e094fa14b306fe776b9b2695cf82fa32d4923f (diff)
parentee4c49fad5a3e36c6e909ab90bcb7d719c9395b3 (diff)
downloadlibguestfs-6fb57e430c8daa06d8d938ac02a104c8aadbbda5.tar.gz
libguestfs-6fb57e430c8daa06d8d938ac02a104c8aadbbda5.tar.xz
libguestfs-6fb57e430c8daa06d8d938ac02a104c8aadbbda5.zip
Merge branch 'master' of git+ssh://192.168.122.1/home/rjones/d/libguestfs
Diffstat (limited to 'daemon/proto.c')
-rw-r--r--daemon/proto.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/daemon/proto.c b/daemon/proto.c
index ffb4a4e8..3ca4316a 100644
--- a/daemon/proto.c
+++ b/daemon/proto.c
@@ -47,6 +47,8 @@ main_loop (int _sock)
char lenbuf[4];
unsigned len;
struct guestfs_message_header hdr;
+ struct timeval start_t, end_t;
+ int64_t start_us, end_us, elapsed_us;
sock = _sock;
@@ -102,6 +104,10 @@ main_loop (int _sock)
}
#endif
+ /* In verbose mode, display the time taken to run each command. */
+ if (verbose)
+ gettimeofday (&start_t, NULL);
+
/* Decode the message header. */
xdrmem_create (&xdr, buf, len, XDR_DECODE);
if (!xdr_guestfs_message_header (&xdr, &hdr)) {
@@ -133,6 +139,21 @@ main_loop (int _sock)
dispatch_incoming_message (&xdr);
/* Note that dispatch_incoming_message will also send a reply. */
+ /* In verbose mode, display the time taken to run each command. */
+ if (verbose) {
+ gettimeofday (&end_t, NULL);
+
+ start_us = (int64_t) start_t.tv_sec * 1000000 + start_t.tv_usec;
+ end_us = (int64_t) end_t.tv_sec * 1000000 + end_t.tv_usec;
+ elapsed_us = end_us - start_us;
+ fprintf (stderr, "proc %d (%s) took %d.%02d seconds\n",
+ proc_nr,
+ proc_nr >= 0 && proc_nr < GUESTFS_PROC_NR_PROCS
+ ? function_names[proc_nr] : "UNKNOWN PROCEDURE",
+ (int) (elapsed_us / 1000000),
+ (int) ((elapsed_us / 10000) % 100));
+ }
+
cont:
xdr_destroy (&xdr);
free (buf);