Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
GHC
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
alexbiehl-gc
GHC
Commits
70bf5e07
Commit
70bf5e07
authored
24 years ago
by
Reuben Thomas
Browse files
Options
Downloads
Patches
Plain Diff
[project @ 2000-10-06 11:05:57 by rrt]
Mucho fixes for Windows MM timers.
parent
2b078814
Loading
Loading
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
ghc/rts/Itimer.c
+28
-26
28 additions, 26 deletions
ghc/rts/Itimer.c
with
28 additions
and
26 deletions
ghc/rts/Itimer.c
+
28
−
26
View file @
70bf5e07
/* -----------------------------------------------------------------------------
* $Id: Itimer.c,v 1.1
8
2000/
09/11
1
5
:0
4:08
rrt Exp $
* $Id: Itimer.c,v 1.1
9
2000/
10/06
1
1
:0
5:57
rrt Exp $
*
* (c) The GHC Team, 1995-1999
*
...
...
@@ -53,8 +53,11 @@ static
void
#if defined(mingw32_TARGET_OS) || (defined(cygwin32_TARGET_OS) && !defined(HAVE_SETITIMER))
CALLBACK
#endif
handle_tick
(
UINT
uID
STG_UNUSED
,
UINT
uMsg
STG_UNUSED
,
DWORD
dwUser
STG_UNUSED
,
DWORD
dw1
STG_UNUSED
,
DWORD
d
STG_UNUSED
);
#else
handle_tick
(
int
unused
STG_UNUSED
);
#endif
/* -----------------------------------------------------------------------------
Tick handler
...
...
@@ -70,8 +73,11 @@ static
void
#if defined(mingw32_TARGET_OS) || (defined(cygwin32_TARGET_OS) && !defined(HAVE_SETITIMER))
CALLBACK
#endif
handle_tick
(
UINT
uID
STG_UNUSED
,
UINT
uMsg
STG_UNUSED
,
DWORD
dwUser
STG_UNUSED
,
DWORD
dw1
STG_UNUSED
,
DWORD
d
STG_UNUSED
)
#else
handle_tick
(
int
unused
STG_UNUSED
)
#endif
{
total_ticks
++
;
...
...
@@ -105,16 +111,8 @@ handle_tick(int unused STG_UNUSED)
#if defined(mingw32_TARGET_OS) || (defined(cygwin32_TARGET_OS) && !defined(HAVE_SETITIMER))
/*
vtalrm_handler is assigned and set up in Signals.c
vtalrm_id (defined in Signals.c) holds
the system id for the current timer (used to
later block/kill it.)
*/
extern
nat
vtalrm_id
;
TIMECALLBACK
*
vtalrm_cback
;
LPTIMECALLBACK
vtalrm_cback
;
nat
initialize_virtual_timer
(
nat
ms
)
{
...
...
@@ -125,22 +123,26 @@ initialize_virtual_timer(nat ms)
As the delivery of ticks isn't free, we only
enable it if we really needed, i.e., when profiling.
(the RTS now also needs timer ticks to implement
threadDelay in non-profiling mode, but the pure
Win32 port doesn't support that.....yet.)
(GetTickCount is used for threadDelay)
*/
unsigned
int
delay
,
vtalrm_id
;
unsigned
int
delay
;
static
unsigned
int
vtalrm_id
;
delay
=
timeBeginPeriod
(
1
);
if
(
delay
==
TIMERR_NOCANDO
)
{
/* error of some sort. */
return
delay
;
if
(
ms
)
{
delay
=
timeBeginPeriod
(
1
);
if
(
delay
==
TIMERR_NOCANDO
)
{
/* error of some sort. */
return
delay
;
}
vtalrm_id
=
timeSetEvent
(
ms
,
/* event every `delay' milliseconds. */
1
,
/* precision is within 1 ms */
vtalrm_cback
,
TIME_CALLBACK_FUNCTION
,
/* ordinary callback */
TIME_PERIODIC
);
}
else
{
timeKillEvent
(
vtalrm_id
);
timeEndPeriod
(
1
);
}
vtalrm_id
=
timeSetEvent
(
ms
,
/* event every `delay' milliseconds. */
1
,
/* precision is within 5 millisecs. */
(
LPTIMECALLBACK
)
vtalrm_cback
,
0
,
TIME_PERIODIC
);
# endif
return
0
;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment