source: vendor/python/2.5/RISCOS/sleep.c

Last change on this file was 3225, checked in by bird, 18 years ago

Python 2.5

File size: 866 bytes
Line 
1#include "oslib/osmodule.h"
2#include <stdio.h>
3#include "kernel.h"
4#include <limits.h>
5#include <errno.h>
6#include "oslib/taskwindow.h"
7#include "Python.h"
8
9
10int riscos_sleep(double delay)
11{
12 os_t starttime, endtime, time; /* monotonic times (centiseconds) */
13 int *pollword, ret;
14 osbool claimed;
15
16 /* calculate end time */
17 starttime = os_read_monotonic_time();
18 if (starttime + 100.0*delay >INT_MAX)
19 endtime = INT_MAX;
20 else
21 endtime = (os_t)(starttime + 100.0*delay);
22
23 /* allocate (in RMA) and set pollword for xupcall_sleep */
24 pollword = osmodule_alloc(4);
25 *pollword = 1;
26
27 time = starttime;
28 ret = 0;
29 while ( time<endtime && time>=starttime ) {
30 xupcall_sleep (pollword, &claimed);
31 if (PyErr_CheckSignals()) {
32 ret = 1;
33 break;
34 }
35 time = os_read_monotonic_time();
36 }
37
38 /* deallocate pollword */
39 osmodule_free(pollword);
40 return ret;
41}
Note: See TracBrowser for help on using the repository browser.