projects
/
ghc-hetmet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
eb64777
)
fix build (sorry, forgot to push with previous patch)
author
Simon Marlow
<simonmar@microsoft.com>
Mon, 3 Sep 2007 20:06:15 +0000
(20:06 +0000)
committer
Simon Marlow
<simonmar@microsoft.com>
Mon, 3 Sep 2007 20:06:15 +0000
(20:06 +0000)
rts/posix/Itimer.c
patch
|
blob
|
history
diff --git
a/rts/posix/Itimer.c
b/rts/posix/Itimer.c
index
51e08f8
..
1fcfa16
100644
(file)
--- a/
rts/posix/Itimer.c
+++ b/
rts/posix/Itimer.c
@@
-1,6
+1,6
@@
/* -----------------------------------------------------------------------------
*
/* -----------------------------------------------------------------------------
*
- * (c) The GHC Team, 1995-1999
+ * (c) The GHC Team, 1995-2007
*
* Interval timer for profiling and pre-emptive scheduling.
*
*
* Interval timer for profiling and pre-emptive scheduling.
*
@@
-95,9
+95,11
@@
#endif
#if defined(USE_TIMER_CREATE)
#endif
#if defined(USE_TIMER_CREATE)
-timer_t timer;
+static timer_t timer;
#endif
#endif
+static nat itimer_interval = 50;
+
static
void
install_vtalrm_handler(TickProc handle_tick)
static
void
install_vtalrm_handler(TickProc handle_tick)
@@
-127,7
+129,7
@@
install_vtalrm_handler(TickProc handle_tick)
}
void
}
void
-initTicker (TickProc handle_tick)
+initTicker (nat ms, TickProc handle_tick)
{
install_vtalrm_handler(handle_tick);
{
install_vtalrm_handler(handle_tick);
@@
-135,6
+137,8
@@
initTicker (TickProc handle_tick)
timestamp = getourtimeofday();
#endif
timestamp = getourtimeofday();
#endif
+ itimer_interval = ms;
+
#if defined(USE_TIMER_CREATE)
{
struct sigevent ev;
#if defined(USE_TIMER_CREATE)
{
struct sigevent ev;
@@
-151,14
+155,14
@@
initTicker (TickProc handle_tick)
}
void
}
void
-startTicker(nat ms)
+startTicker(void)
{
#if defined(USE_TIMER_CREATE)
{
struct itimerspec it;
{
#if defined(USE_TIMER_CREATE)
{
struct itimerspec it;
- it.it_value.tv_sec = ms / 1000;
- it.it_value.tv_nsec = (ms % 1000) * 1000000;
+ it.it_value.tv_sec = itimer_interval / 1000;
+ it.it_value.tv_nsec = (itimer_interval % 1000) * 1000000;
it.it_interval = it.it_value;
if (timer_settime(timer, 0, &it, NULL) != 0) {
it.it_interval = it.it_value;
if (timer_settime(timer, 0, &it, NULL) != 0) {
@@
-170,8
+174,8
@@
startTicker(nat ms)
{
struct itimerval it;
{
struct itimerval it;
- it.it_value.tv_sec = ms / 1000;
- it.it_value.tv_usec = (ms % 1000) * 1000;
+ it.it_value.tv_sec = itimer_interval / 1000;
+ it.it_value.tv_usec = (itimer_interval % 1000) * 1000;
it.it_interval = it.it_value;
if (setitimer(ITIMER_FLAVOUR, &it, NULL) != 0) {
it.it_interval = it.it_value;
if (setitimer(ITIMER_FLAVOUR, &it, NULL) != 0) {
@@
-213,8
+217,10
@@
stopTicker(void)
void
exitTicker(void)
{
void
exitTicker(void)
{
+#if defined(USE_TIMER_CREATE)
timer_delete(timer);
// ignore errors - we don't really care if it fails.
timer_delete(timer);
// ignore errors - we don't really care if it fails.
+#endif
}
#if 0
}
#if 0