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.