summaryrefslogtreecommitdiffstats
path: root/winsup/cygserver/process.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygserver/process.cc')
-rw-r--r--winsup/cygserver/process.cc16
1 files changed, 9 insertions, 7 deletions
diff --git a/winsup/cygserver/process.cc b/winsup/cygserver/process.cc
index 94e7893a2..e03370d11 100644
--- a/winsup/cygserver/process.cc
+++ b/winsup/cygserver/process.cc
@@ -69,10 +69,12 @@ process::process (const pid_t cygpid, const DWORD winpid, HANDLE signal_arrived)
GetLastError ());
}
InitializeCriticalSection (&_access);
+ debug ("initialized (%lu)", _cygpid);
}
process::~process ()
{
+ debug ("deleting (%lu)", _cygpid);
DeleteCriticalSection (&_access);
CloseHandle (_signal_arrived);
CloseHandle (_hProcess);
@@ -105,7 +107,7 @@ process::add (cleanup_routine *const entry)
assert (entry);
bool res = false;
- EnterCriticalSection (&_access);
+ hold ();
if (!_cleaning_up)
{
@@ -114,7 +116,7 @@ process::add (cleanup_routine *const entry)
res = true;
}
- LeaveCriticalSection (&_access);
+ release ();
return res;
}
@@ -124,7 +126,7 @@ process::remove (const cleanup_routine *const entry)
assert (entry);
bool res = false;
- EnterCriticalSection (&_access);
+ hold ();
if (!_cleaning_up)
{
@@ -148,7 +150,7 @@ process::remove (const cleanup_routine *const entry)
}
}
- LeaveCriticalSection (&_access);
+ release ();
return res;
}
@@ -159,13 +161,13 @@ process::remove (const cleanup_routine *const entry)
void
process::cleanup ()
{
- EnterCriticalSection (&_access);
+ hold ();
assert (!is_active ());
assert (!_cleaning_up);
InterlockedExchange (&_cleaning_up, true);
cleanup_routine *entry = _routines_head;
_routines_head = NULL;
- LeaveCriticalSection (&_access);
+ release ();
while (entry)
{
@@ -275,7 +277,7 @@ process_cache::process (const pid_t cygpid, const DWORD winpid,
SetEvent (_cache_add_trigger);
}
- EnterCriticalSection (&entry->_access); // To be released by the caller.
+ entry->hold (); // To be released by the caller.
LeaveCriticalSection (&_cache_write_access);
assert (entry);
assert (entry->_winpid == winpid);