[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Chicken-users] current-time on 32-bit hardware
From: |
Nicolas Pelletier |
Subject: |
[Chicken-users] current-time on 32-bit hardware |
Date: |
Thu, 29 Jul 2010 09:01:46 +0900 |
Hello,
I've run into the following problem.
I am taking a mutex with a time-out, as follows:
(mutex-lock!
children-mutex
(seconds->time
(+ 1 (time->seconds (current-time)))))
And I got the following error:
Warning (#<thread: my-thread>): : (inexact->exact) inexact number
cannot be represented as an exact\
number: 1189553855.
Looking at srfi-18.scm, the implementation of current-time is:
(define (current-time)
(let* ([s C_get_seconds]
[ss C_startup_time_seconds]
[ms C_ms] )
(##sys#make-structure
'time
(inexact->exact (truncate (+ (* (- s ss) 1000) C_ms)))
s
C_ms) ) )
Due to the different representation of integers between C and chicken
(32 bits in C, 30 in chicken if I'm not mistaken), the above
inexact->exact fails.
I am using 4.3.0, but the implementation of current-time in 4.5.0 is
the same. On one hand, using 64-bit hardware instead is not an option.
On the other hand, I just need mutex-lock! to not wait forever;
waiting a little more than one second is okay. Could someone suggest a
workaround and/or a fix, please?
Regards,
--
Nicolas
- [Chicken-users] current-time on 32-bit hardware,
Nicolas Pelletier <=
- Re: [Chicken-users] current-time on 32-bit hardware, Felix, 2010/07/29
- Re: [Chicken-users] current-time on 32-bit hardware, Nicolas Pelletier, 2010/07/29
- Re: [Chicken-users] current-time on 32-bit hardware, Peter Bex, 2010/07/29
- Re: [Chicken-users] current-time on 32-bit hardware, Nicolas Pelletier, 2010/07/29
- Re: [Chicken-users] current-time on 32-bit hardware, Felix, 2010/07/29
- Re: [Chicken-users] current-time on 32-bit hardware, Nicolas Pelletier, 2010/07/30
- Re: [Chicken-users] current-time on 32-bit hardware, Felix, 2010/07/30