Permalink
Browse files

PR 53456 CPU timing fallback using clock_gettime.

2012-05-24  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/53456
	* intrinsics/time_1.h (gf_cputime): Fallback for clock_gettime.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@187846 138bc75d-0d04-0410-961f-82ee72b054a4
  • Loading branch information...
jb
jb committed May 24, 2012
1 parent 8ae39fa commit a5d13f820f0bc7cf68d3e100849f26b56502a029
Showing with 21 additions and 1 deletion.
  1. +5 −0 libgfortran/ChangeLog
  2. +16 −1 libgfortran/intrinsics/time_1.h
View
@@ -1,3 +1,8 @@
+2012-05-24 Janne Blomqvist <jb@gcc.gnu.org>
+
+ PR fortran/53456
+ * intrinsics/time_1.h (gf_cputime): Fallback for clock_gettime.
+
2012-05-23 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/53456
@@ -1,5 +1,5 @@
/* Wrappers for platform timing functions.
- Copyright (C) 2003, 2007, 2009, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2007, 2009, 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU Fortran runtime library (libgfortran).
@@ -166,6 +166,21 @@ gf_cputime (long *user_sec, long *user_usec, long *system_sec, long *system_usec
return -1;
return 0;
+#elif defined(HAVE_CLOCK_GETTIME) && (defined(CLOCK_PROCESS_CPUTIME_ID) \
+ || defined(CLOCK_THREAD_CPUTIME_ID))
+ /* Newer versions of VxWorks have CLOCK_THREAD_CPUTIME_ID giving
+ per-thread CPU time. CLOCK_PROCESS_CPUTIME_ID would be better
+ but is not available. */
+#ifndef CLOCK_PROCESS_CPUTIME_ID
+#define CLOCK_PROCESS_CPUTIME_ID CLOCK_THREAD_CPUTIME_ID
+#endif
+ struct timespec ts;
+ int err = clock_gettime (CLOCK_PROCESS_CPUTIME_ID, &ts);
+ *user_sec = ts.tv_sec;
+ *user_usecs = ts.tv_nsec / 1000;
+ *system_sec = *system_usec = 0;
+ return err;
+
#else
clock_t c = clock ();
*user_sec = c / CLOCKS_PER_SEC;

0 comments on commit a5d13f8

Please sign in to comment.