X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/1c1fce3febd73041ad73b2278079c26f22617d97..ef53d75e82b52e5948807e3af892fb3f3e8f98cc:/lib-src/profile.c diff --git a/lib-src/profile.c b/lib-src/profile.c index b204e13c20..3c76f8ed18 100644 --- a/lib-src/profile.c +++ b/lib-src/profile.c @@ -1,23 +1,24 @@ /* profile.c --- generate periodic events for profiling of Emacs Lisp code. - Copyright (C) 1992, 1994 Free Software Foundation, Inc. + Copyright (C) 1992, 1994, 1999 Free Software Foundation, Inc. Author: Boaz Ben-Zvi - This file is part of GNU Emacs. +This file is part of GNU Emacs. - GNU Emacs is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. +GNU Emacs is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. - GNU Emacs is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with GNU Emacs; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ +You should have received a copy of the GNU General Public License +along with GNU Emacs; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ /** @@ -29,21 +30,20 @@ ** abstraction : a stopwatch ** operations: reset_watch, get_time */ -#include #include <../src/config.h> +#include #include <../src/systime.h> -static struct timeval TV1, TV2; -static struct timezone *tzp = (struct timezone *) NULL; /* no need timezone */ +static EMACS_TIME TV1, TV2; static int watch_not_started = 1; /* flag */ static char time_string[30]; /* Reset the stopwatch to zero. */ -int +void reset_watch () { - gettimeofday (&TV1, tzp); + EMACS_GET_TIME (TV1); watch_not_started = 0; } @@ -56,18 +56,30 @@ get_time () { if (watch_not_started) exit (1); /* call reset_watch first ! */ - gettimeofday (&TV2, tzp); - if (TV1.tv_usec > TV2.tv_usec) - { - TV2.tv_usec += 1000000; - TV2.tv_sec--; - } - sprintf (time_string, "%lu.%06lu", - TV2.tv_sec - TV1.tv_sec, TV2.tv_usec - TV1.tv_usec); + EMACS_GET_TIME (TV2); + EMACS_SUB_TIME (TV2, TV2, TV1); + sprintf (time_string, "%lu.%06lu", (unsigned long)EMACS_SECS (TV2), (unsigned long)EMACS_USECS (TV2)); return time_string; } -void +#if ! defined (HAVE_GETTIMEOFDAY) && defined (HAVE_TIMEVAL) + +/* ARGSUSED */ +gettimeofday (tp, tzp) + struct timeval *tp; + struct timezone *tzp; +{ + extern long time (); + + tp->tv_sec = time ((long *)0); + tp->tv_usec = 0; + if (tzp != 0) + tzp->tz_minuteswest = -1; +} + +#endif + +int main () { int c;