Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Alex D
GHC
Commits
88b35c17
Commit
88b35c17
authored
Aug 23, 2006
by
ei@vuokko.info
Browse files
Add closeMutex and use it on clean up
parent
52589e05
Changes
9
Hide whitespace changes
Inline
Side-by-side
includes/OSThreads.h
View file @
88b35c17
...
...
@@ -161,6 +161,7 @@ extern rtsBool waitCondition ( Condition* pCond,
// Mutexes
//
extern
void
initMutex
(
Mutex
*
pMut
);
extern
void
closeMutex
(
Mutex
*
pMut
);
//
// Thread-local storage
...
...
rts/Capability.c
View file @
88b35c17
...
...
@@ -671,6 +671,9 @@ shutdownCapability (Capability *cap, Task *task)
}
// we now have the Capability, its run queue and spare workers
// list are both empty.
// We end up here only in THREADED_RTS
closeMutex
(
&
cap
->
lock
);
}
/* ----------------------------------------------------------------------------
...
...
rts/Schedule.c
View file @
88b35c17
...
...
@@ -2584,6 +2584,7 @@ exitScheduler( void )
boundTaskExiting
(
task
);
stopTaskManager
();
}
closeMutex
(
&
sched_mutex
);
#endif
}
...
...
rts/Stable.c
View file @
88b35c17
...
...
@@ -169,6 +169,9 @@ exitStablePtrTable(void)
stgFree
(
stable_ptr_table
);
stable_ptr_table
=
NULL
;
SPT_size
=
0
;
#ifdef THREADED_RTS
closeMutex
(
&
stable_mutex
);
#endif
}
/*
...
...
rts/Storage.c
View file @
88b35c17
...
...
@@ -279,6 +279,10 @@ freeStorage (void)
stgFree
(
generations
[
g
].
steps
);
stgFree
(
generations
);
freeAllMBlocks
();
#if defined(THREADED_RTS)
closeMutex
(
&
sm_mutex
);
closeMutex
(
&
atomic_modify_mutvar_mutex
);
#endif
}
/* -----------------------------------------------------------------------------
...
...
rts/Task.c
View file @
88b35c17
...
...
@@ -77,6 +77,10 @@ stopTaskManager (void)
for
(
task
=
task_free_list
;
task
!=
NULL
;
task
=
next
)
{
next
=
task
->
next
;
stgFree
(
task
);
#if defined(THREADED_RTS)
closeCondition
(
&
task
->
cond
);
closeMutex
(
&
task
->
lock
);
#endif
}
task_free_list
=
NULL
;
RELEASE_LOCK
(
&
sched_mutex
);
...
...
rts/Typeable.c
View file @
88b35c17
...
...
@@ -20,7 +20,7 @@ void
exitTypeableStore
()
{
#ifdef THREADED_RTS
/* TODO: Free Mutex! */
closeMutex
(
&
typeableStoreLock
);
#endif
if
(
typeableStore
!=
0
)
{
freeStablePtr
((
StgStablePtr
)
typeableStore
);
...
...
rts/posix/OSThreads.c
View file @
88b35c17
...
...
@@ -106,6 +106,11 @@ initMutex(Mutex* pMut)
#endif
return
;
}
void
closeMutex
(
Mutex
*
pMut
)
{
pthread_mutex_destroy
(
pMut
);
}
void
newThreadLocalKey
(
ThreadLocalKey
*
key
)
...
...
rts/win32/OSThreads.c
View file @
88b35c17
...
...
@@ -116,6 +116,11 @@ initMutex (Mutex* pMut)
{
InitializeCriticalSectionAndSpinCount
(
pMut
,
4000
);
}
void
closeMutex
(
Mutex
*
pMut
)
{
DeleteCriticalSection
(
pMut
);
}
#else
void
initMutex
(
Mutex
*
pMut
)
...
...
@@ -127,6 +132,11 @@ initMutex (Mutex* pMut)
*
pMut
=
h
;
return
;
}
void
closeMutex
(
Mutex
*
pMut
)
{
CloseHandle
(
*
pMut
);
}
#endif
void
...
...
Write
Preview
Supports
Markdown
0%
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!
Cancel
Please
register
or
sign in
to comment