Change 17833 by [EMAIL PROTECTED] on 2002/09/04 12:55:54

        Subject: [PATCH] use sysconf(_SC_CLK_TCK) for times()
        From: Jarkko Hietaniemi <[EMAIL PROTECTED]>
        Date: Sun, 1 Sep 2002 19:23:55 +0300
        Message-ID: <[EMAIL PROTECTED]>

Affected files ...

.... //depot/perl/embedvar.h#150 edit
.... //depot/perl/intrpvar.h#108 edit
.... //depot/perl/perl.c#449 edit
.... //depot/perl/perlapi.h#72 edit
.... //depot/perl/pp_sys.c#318 edit

Differences ...

==== //depot/perl/embedvar.h#150 (text+w) ====
Index: perl/embedvar.h
--- perl/embedvar.h#149~17804~  Thu Aug 29 06:29:43 2002
+++ perl/embedvar.h     Wed Sep  4 05:55:54 2002
@@ -211,6 +211,7 @@
 #define PL_bufptr              (PERL_GET_INTERP->Ibufptr)
 #define PL_checkav             (PERL_GET_INTERP->Icheckav)
 #define PL_checkav_save                (PERL_GET_INTERP->Icheckav_save)
+#define PL_clocktick           (PERL_GET_INTERP->Iclocktick)
 #define PL_collation_ix                (PERL_GET_INTERP->Icollation_ix)
 #define PL_collation_name      (PERL_GET_INTERP->Icollation_name)
 #define PL_collation_standard  (PERL_GET_INTERP->Icollation_standard)
@@ -514,6 +515,7 @@
 #define PL_bufptr              (vTHX->Ibufptr)
 #define PL_checkav             (vTHX->Icheckav)
 #define PL_checkav_save                (vTHX->Icheckav_save)
+#define PL_clocktick           (vTHX->Iclocktick)
 #define PL_collation_ix                (vTHX->Icollation_ix)
 #define PL_collation_name      (vTHX->Icollation_name)
 #define PL_collation_standard  (vTHX->Icollation_standard)
@@ -820,6 +822,7 @@
 #define PL_Ibufptr             PL_bufptr
 #define PL_Icheckav            PL_checkav
 #define PL_Icheckav_save       PL_checkav_save
+#define PL_Iclocktick          PL_clocktick
 #define PL_Icollation_ix       PL_collation_ix
 #define PL_Icollation_name     PL_collation_name
 #define PL_Icollation_standard PL_collation_standard

==== //depot/perl/intrpvar.h#108 (text) ====
Index: perl/intrpvar.h
--- perl/intrpvar.h#107~17804~  Thu Aug 29 06:29:43 2002
+++ perl/intrpvar.h     Wed Sep  4 05:55:54 2002
@@ -524,6 +524,8 @@
 
 PERLVARI(Icheckav_save, AV*, Nullav)   /* save CHECK{}s when compiling */
 
+PERLVARI(Iclocktick, long, 0)  /* this many times() ticks in a second */
+
 /* New variables must be added to the very end for binary compatibility.
  * XSUB.h provides wrapper functions via perlapi.h that make this
  * irrelevant, but not all code may be expected to #include XSUB.h. */

==== //depot/perl/perl.c#449 (text) ====
Index: perl/perl.c
--- perl/perl.c#448~17804~      Thu Aug 29 06:29:43 2002
+++ perl/perl.c Wed Sep  4 05:55:54 2002
@@ -26,6 +26,18 @@
 #include <unistd.h>
 #endif
 
+#ifdef __BEOS__
+#  define HZ 1000000
+#endif
+
+#ifndef HZ
+#  ifdef CLK_TCK
+#    define HZ CLK_TCK
+#  else
+#    define HZ 60
+#  endif
+#endif
+
 #if !defined(STANDARD_C) && !defined(HAS_GETENV_PROTOTYPE) && !defined(PERL_MICRO)
 char *getenv (char *); /* Usually in <stdlib.h> */
 #endif
@@ -294,6 +306,14 @@
 #ifdef  USE_ENVIRON_ARRAY
     PL_origenviron = environ;
 #endif
+
+    /* Use sysconf(_SC_CLK_TCK) if available, if not
+     * available or if the sysconf() fails, use the HZ. */
+#if defined(HAS_SYSCONF) && defined(_SC_CLK_TCK)
+    PL_clocktick = sysconf(_SC_CLK_TCK);
+    if (PL_clocktick <= 0)
+#endif
+        PL_clocktick = HZ;
 
     ENTER;
 }

==== //depot/perl/perlapi.h#72 (text+w) ====
Index: perl/perlapi.h
--- perl/perlapi.h#71~17804~    Thu Aug 29 06:29:43 2002
+++ perl/perlapi.h      Wed Sep  4 05:55:54 2002
@@ -150,6 +150,8 @@
 #define PL_checkav             (*Perl_Icheckav_ptr(aTHX))
 #undef  PL_checkav_save
 #define PL_checkav_save                (*Perl_Icheckav_save_ptr(aTHX))
+#undef  PL_clocktick
+#define PL_clocktick           (*Perl_Iclocktick_ptr(aTHX))
 #undef  PL_collation_ix
 #define PL_collation_ix                (*Perl_Icollation_ix_ptr(aTHX))
 #undef  PL_collation_name

==== //depot/perl/pp_sys.c#318 (text) ====
Index: perl/pp_sys.c
--- perl/pp_sys.c#317~17798~    Thu Aug 29 04:44:00 2002
+++ perl/pp_sys.c       Wed Sep  4 05:55:54 2002
@@ -4351,26 +4351,6 @@
     RETURN;
 }
 
-/* XXX The POSIX name is CLK_TCK; it is to be preferred
-   to HZ.  Probably.  For now, assume that if the system
-   defines HZ, it does so correctly.  (Will this break
-   on VMS?)
-   Probably we ought to use _sysconf(_SC_CLK_TCK), if
-   it's supported.    --AD  9/96.
-*/
-
-#ifdef __BEOS__
-#  define HZ 1000000
-#endif
-
-#ifndef HZ
-#  ifdef CLK_TCK
-#    define HZ CLK_TCK
-#  else
-#    define HZ 60
-#  endif
-#endif
-
 PP(pp_tms)
 {
 #ifdef HAS_TIMES
@@ -4384,11 +4364,11 @@
                                                    /* is returned.                   
*/
 #endif
 
-    PUSHs(sv_2mortal(newSVnv(((NV)PL_timesbuf.tms_utime)/HZ)));
+    PUSHs(sv_2mortal(newSVnv(((NV)PL_timesbuf.tms_utime)/(NV)PL_clocktick)));
     if (GIMME == G_ARRAY) {
-       PUSHs(sv_2mortal(newSVnv(((NV)PL_timesbuf.tms_stime)/HZ)));
-       PUSHs(sv_2mortal(newSVnv(((NV)PL_timesbuf.tms_cutime)/HZ)));
-       PUSHs(sv_2mortal(newSVnv(((NV)PL_timesbuf.tms_cstime)/HZ)));
+       PUSHs(sv_2mortal(newSVnv(((NV)PL_timesbuf.tms_stime)/(NV)PL_clocktick)));
+       PUSHs(sv_2mortal(newSVnv(((NV)PL_timesbuf.tms_cutime)/(NV)PL_clocktick)));
+       PUSHs(sv_2mortal(newSVnv(((NV)PL_timesbuf.tms_cstime)/(NV)PL_clocktick)));
     }
     RETURN;
 #else
End of Patch.

Reply via email to