X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/c8d3a25c0981020e1b8aa3bf96a4a0059be82431..refs/heads/wip:/lib-src/profile.c diff --git a/lib-src/profile.c b/lib-src/profile.c index 3e642237c6..e159a92e86 100644 --- a/lib-src/profile.c +++ b/lib-src/profile.c @@ -1,5 +1,6 @@ /* profile.c --- generate periodic events for profiling of Emacs Lisp code. - Copyright (C) 1992, 1994, 1999, 2001-2012 Free Software Foundation, Inc. + Copyright (C) 1992, 1994, 1999, 2001-2014 Free Software Foundation, + Inc. Author: Boaz Ben-Zvi @@ -20,7 +21,7 @@ along with GNU Emacs. If not, see . */ /** - ** To be run as an emacs process. Input string that starts with: + ** To be run as an emacs subprocess. Input string that starts with: ** 'z' -- resets the watch (to zero). ** 'p' -- return time (on stdout) as string with format . ** 'q' -- exit. @@ -28,6 +29,8 @@ along with GNU Emacs. If not, see . */ ** abstraction : a stopwatch ** operations: reset_watch, get_time */ + +#define INLINE EXTERN_INLINE #include #include @@ -36,17 +39,17 @@ along with GNU Emacs. If not, see . */ #include #include -static EMACS_TIME TV1, TV2; +static struct timespec TV1; static int watch_not_started = 1; /* flag */ static char time_string[INT_STRLEN_BOUND (uintmax_t) + sizeof "." - + LOG10_EMACS_TIME_RESOLUTION]; + + LOG10_TIMESPEC_RESOLUTION]; /* Reset the stopwatch to zero. */ static void reset_watch (void) { - EMACS_GET_TIME (TV1); + TV1 = current_timespec (); watch_not_started = 0; } @@ -57,15 +60,12 @@ reset_watch (void) static char * get_time (void) { - uintmax_t s; - int ns; + struct timespec TV2 = timespec_sub (current_timespec (), TV1); + uintmax_t s = TV2.tv_sec; + int ns = TV2.tv_nsec; if (watch_not_started) exit (EXIT_FAILURE); /* call reset_watch first ! */ - EMACS_GET_TIME (TV2); - EMACS_SUB_TIME (TV2, TV2, TV1); - s = EMACS_SECS (TV2); - ns = EMACS_NSECS (TV2); - sprintf (time_string, "%"PRIuMAX".%0*d", s, LOG10_EMACS_TIME_RESOLUTION, ns); + sprintf (time_string, "%"PRIuMAX".%0*d", s, LOG10_TIMESPEC_RESOLUTION, ns); return time_string; }