Add list of function_names to the daemon.
authorRichard W.M. Jones <rjones@redhat.com>
Thu, 2 Jul 2009 14:11:59 +0000 (15:11 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Thu, 2 Jul 2009 14:11:59 +0000 (15:11 +0100)
Messages which include the proc_nr can now also include the
name of the actual function being called.

.gitignore
daemon/Makefile.am
daemon/daemon.h
daemon/proto.c
src/generator.ml

index 495b844..a101547 100644 (file)
@@ -50,6 +50,7 @@ daemon/actions.h
 daemon/guestfsd
 daemon/install-sh
 daemon/missing
+daemon/names.c
 daemon/stubs.c
 depcomp
 emptydisk
index 8b909c5..141dfad 100644 (file)
@@ -48,6 +48,7 @@ guestfsd_SOURCES = \
        lvm.c \
        mknod.c \
        mount.c \
+       names.c \
        ntfs.c \
        pingdaemon.c \
        proto.c \
index 553973d..5f22a4f 100644 (file)
@@ -55,6 +55,9 @@ extern void udev_settle (void);
 
 extern int verbose;
 
+/*-- in names.c (auto-generated) --*/
+extern const char *function_names[];
+
 /*-- in proto.c --*/
 extern int proc_nr;
 extern int serial;
index 39cee5a..3ca4316 100644 (file)
@@ -146,8 +146,10 @@ main_loop (int _sock)
       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 serial %d took %d.%02d seconds\n",
-              proc_nr, serial,
+      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));
     }
index 29e6651..f41413e 100755 (executable)
@@ -4318,6 +4318,22 @@ and generate_daemon_actions () =
 
   ) ["pv", pv_cols; "vg", vg_cols; "lv", lv_cols]
 
+(* Generate a list of function names, for debugging in the daemon.. *)
+and generate_daemon_names () =
+  generate_header CStyle GPLv2;
+
+  pr "#include <config.h>\n";
+  pr "\n";
+  pr "#include \"daemon.h\"\n";
+  pr "\n";
+
+  pr "/* This array is indexed by proc_nr.  See guestfs_protocol.x. */\n";
+  pr "const char *function_names[] = {\n";
+  List.iter (
+    fun (name, _, proc_nr, _, _, _, _) -> pr "  [%d] = \"%s\",\n" proc_nr name
+  ) daemon_functions;
+  pr "};\n";
+
 (* Generate the tests. *)
 and generate_tests () =
   generate_header CStyle GPLv2;
@@ -8610,6 +8626,10 @@ Run it from the top source directory using the command
   generate_daemon_actions ();
   close ();
 
+  let close = output_to "daemon/names.c" in
+  generate_daemon_names ();
+  close ();
+
   let close = output_to "capitests/tests.c" in
   generate_tests ();
   close ();