Proposed to Umfpack Developers June 5, 2003; awaiting review

diff -ur UMFPACKv4.1-orig/UMFPACK/Include/umfpack_tictoc.h UMFPACKv4.1/UMFPACK/Include/umfpack_tictoc.h
--- UMFPACKv4.1-orig/UMFPACK/Include/umfpack_tictoc.h	Tue Apr 22 21:35:01 2003
+++ UMFPACKv4.1/UMFPACK/Include/umfpack_tictoc.h	Wed Jun  4 11:48:57 2003
@@ -9,10 +9,25 @@
 /* web: http://www.cise.ufl.edu/research/sparse/umfpack                       */
 /* -------------------------------------------------------------------------- */
 
-void umfpack_tic (double stats [2]) ;
+/*
+ * Modified by Pierangelo Masarati <pierangelo.masarati@polimi.it>, 2003
+ * to allow to programmatically enable/disable the timing system calls,
+ * for use with RTAI real-time application interface (http://www.rtai.org)
+ * in the multibody/multidisciplinary analysis software MBDyn
+ * (http://www.mbdyn.org).
+ *
+ * The same licensing conditions of UMFPACK apply.
+ */
+
+#define umfpack_tic( stats ) ( * umfpack_tic_p )( ( stats ) )
+
+extern void ( * umfpack_tic_p ) (double stats [2]) ;
 
 void umfpack_toc (double stats [2]) ;
 
+void umfpack_tic_enable (void) ;
+
+void umfpack_tic_disable (void) ;
 
 /*
 Syntax (for all versions: di, dl, zi, and zl):
diff -ur UMFPACKv4.1-orig/UMFPACK/Source/umfpack_tictoc.c UMFPACKv4.1/UMFPACK/Source/umfpack_tictoc.c
--- UMFPACKv4.1-orig/UMFPACK/Source/umfpack_tictoc.c	Tue Apr 22 21:38:18 2003
+++ UMFPACKv4.1/UMFPACK/Source/umfpack_tictoc.c	Wed Jun  4 11:46:51 2003
@@ -28,7 +28,17 @@
 #include <unistd.h>
 #include <sys/times.h>
 
-void umfpack_tic (double stats [2])
+/*
+ * Modified by Pierangelo Masarati <pierangelo.masarati@polimi.it>, 2003
+ * to allow to programmatically enable/disable the timing system calls,
+ * for use with RTAI real-time application interface (http://www.rtai.org)
+ * in the multibody/multidisciplinary analysis software MBDyn
+ * (http://www.mbdyn.org).
+ *
+ * The same licensing conditions of UMFPACK apply.
+ */
+
+static void umfpack_tic_good (double stats [2])
 {
     /* Return the current time */
     /* stats [0]: current wallclock time, in seconds */
@@ -52,7 +62,7 @@
 
 #include <time.h>
 
-void umfpack_tic (double stats [2])
+static void umfpack_tic_good (double stats [2])
 {
     stats [0] = 0 ;
     stats [1] = ((double) (clock ( ))) / ((double) (CLOCKS_PER_SEC)) ;
@@ -61,6 +71,23 @@
 
 #endif
 
+static void umfpack_tic_fake (double stats [2])
+{
+	return;
+}
+
+void ( * umfpack_tic_p ) (double [2]) = umfpack_tic_good;
+
+void umfpack_tic_enable (void)
+{
+	umfpack_tic_p = umfpack_tic_good;
+}
+	
+void umfpack_tic_disable (void)
+{
+	umfpack_tic_p = umfpack_tic_fake;
+}
+	
 /* -------------------------------------------------------------------------- */
 
 void umfpack_toc (double stats [2])

