Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2005-10-24 03:47:45 +0400
committerChristopher Faylor <me@cgf.cx>2005-10-24 03:47:45 +0400
commit82c925af80cb4493cc15861c18fea64c57c2ee60 (patch)
tree41f157a058cabbec22fcd979bb5c63730699c3ee /winsup/cygwin/cygheap.h
parentc2c020d1fb082baff8dfd2f2ca93c66bf7151bd0 (diff)
* cygheap.h (cygheap_fdenum::cygheap_fdenum): Record locked state or suffer
deadlocks. (class locked_process): Move to another header. * sync.h (lock_process): Define here. * cygtls.cc (_cygtls::fixup_after_fork): Reset spinning state as well as stacklock state. * dcrt0.cc (lock_process::locker): Define. (dtable::lock_cs): Delete. * dtable.cc (dtable_init): Eliminate call to init_lock(). (dtable::fixup_after_fork): Ditto. (dtable::init_lock): Delete definition. * dtable.h (dtable::init_lock): Delete declaration. (dtable::lock): Use process lock rather than dtable-specific lock. (dtable::unlock): Ditto. * sigproc.cc (sigproc_init): Minor change to debugging output. * times.cc (utime_worker): Use build_fh_pc rather than reinterpreting the posix path name again. Return any error from path_conv immediately.
Diffstat (limited to 'winsup/cygwin/cygheap.h')
-rw-r--r--winsup/cygwin/cygheap.h22
1 files changed, 1 insertions, 21 deletions
diff --git a/winsup/cygwin/cygheap.h b/winsup/cygwin/cygheap.h
index d9301d415..ad4511e5c 100644
--- a/winsup/cygwin/cygheap.h
+++ b/winsup/cygwin/cygheap.h
@@ -398,6 +398,7 @@ class cygheap_fdenum : public cygheap_fdmanip
public:
cygheap_fdenum (int start_fd = -1, bool lockit = false)
{
+ locked = lockit;
if (lockit)
cygheap->fdtab.lock ();
this->start_fd = fd = start_fd < 0 ? -1 : start_fd;
@@ -415,27 +416,6 @@ class cygheap_fdenum : public cygheap_fdmanip
}
};
-class lock_process
-{
- bool skip_unlock;
-public:
- lock_process (bool exiting = false)
- {
- cygheap->fdtab.lock ();
- skip_unlock = exiting;
- if (exiting && exit_state < ES_SET_MUTO)
- {
- exit_state = ES_SET_MUTO;
- muto::set_exiting_thread ();
- }
- }
- ~lock_process ()
- {
- if (!skip_unlock)
- cygheap->fdtab.unlock ();
- }
-};
-
class child_info;
void __stdcall cygheap_fixup_in_child (bool);
extern "C" {