]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Patch by Chris Herborth for BeOS code.
authorGuido van Rossum <guido@python.org>
Tue, 9 Mar 1999 16:07:23 +0000 (16:07 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 9 Mar 1999 16:07:23 +0000 (16:07 +0000)
He writes:

I had an off-by-1000 error in floatsleep(),
and the problem with time.clock() is that it's not implemented properly
on QNX... ANSI says it's supposed to return _CPU_ time used by the
process, but on QNX it returns the amount of real time used... so I was
confused.

Modules/timemodule.c

index b65bfbcee8ae58f83a0d3ae6dd57fce28f55bf9f..c6d275a02496dc2719582ced5566a9e5ee711f4b 100644 (file)
@@ -60,10 +60,7 @@ PERFORMANCE OF THIS SOFTWARE.
 #endif
 
 #ifdef HAVE_FTIME
-#ifndef __BEOS__
-/* We have ftime(), but not in the headers (PR2). - [cjh] */
 #include <sys/timeb.h>
-#endif
 #if !defined(MS_WINDOWS) && !defined(PYOS_OS2)
 extern int ftime();
 #endif /* MS_WINDOWS */
@@ -98,6 +95,10 @@ extern int ftime();
 /* For bigtime_t, snooze(). - [cjh] */
 #include <support/SupportDefs.h>
 #include <kernel/OS.h>
+#ifndef CLOCKS_PER_SEC
+/* C'mon, fix the bloody headers... - [cjh] */
+#define CLOCKS_PER_SEC 1000
+#endif
 #endif
 
 /* Forward declarations */
@@ -705,7 +706,7 @@ floattime()
        }
 #endif /* !HAVE_GETTIMEOFDAY */
        {
-#if defined(HAVE_FTIME) && !defined(__BEOS__)
+#if defined(HAVE_FTIME)
                struct timeb t;
                ftime(&t);
                return (double)t.time + (double)t.millitm * (double)0.001;
@@ -811,20 +812,13 @@ floatsleep(double secs)
 #ifdef __BEOS__
        /* This sleep *CAN BE* interrupted. */
        {
-               bigtime_t frac, seconds;
-
-               extern double fmod Py_PROTO((double,double));
-               extern double floor Py_PROTO((double));
-
                if( secs <= 0.0 ) {
                        return;
                }
-
-               frac = (bigtime_t)fmod( secs, 1.0 );
-               seconds = (bigtime_t)floor( secs );
-
+               
                Py_BEGIN_ALLOW_THREADS
-               if( snooze( seconds * (bigtime_t)1000 + frac ) == B_INTERRUPTED ) {
+               /* BeOS snooze() is in microseconds... */
+               if( snooze( (bigtime_t)( secs * 1000.0 * 1000.0 ) ) == B_INTERRUPTED ) {
                        Py_BLOCK_THREADS
                        PyErr_SetFromErrno( PyExc_IOError );
                        return -1;