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>2012-12-05 00:26:18 +0400
committerChristopher Faylor <me@cgf.cx>2012-12-05 00:26:18 +0400
commit3211ef434d7c8a43b86c133a8af826984c672c82 (patch)
treec64e803ec535e0171da32af3451f8749df2ae22d /winsup/cygwin
parent8f9046ae61e77a7b64fc4e97b3f2c9ae0eba0671 (diff)
* cygtls.h (_cygtls::will_wait_for_signal): Rename from 'signal_waiting' to
something more expressive. Reflect rename throughout. (_cygtls::get_signal_arrived): Rename from create_signal_arrived. Move lock here. (_cygtls::set_signal_arrived): Use get_signal_arrived. * exceptions.cc (_cygtls::interrupt_setup): Use get_signal_arrived. * tlsoffsets.h: Regenerate.
Diffstat (limited to 'winsup/cygwin')
-rw-r--r--winsup/cygwin/ChangeLog11
-rw-r--r--winsup/cygwin/cygtls.h29
-rw-r--r--winsup/cygwin/exceptions.cc6
-rw-r--r--winsup/cygwin/tlsoffsets.h8
4 files changed, 31 insertions, 23 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 247b80e46..80f4599b6 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,14 @@
+2012-12-04 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygtls.h (_cygtls::will_wait_for_signal): Rename from
+ 'signal_waiting' to something more expressive. Reflect rename
+ throughout.
+ (_cygtls::get_signal_arrived): Rename from create_signal_arrived. Move
+ lock here.
+ (_cygtls::set_signal_arrived): Use get_signal_arrived.
+ * exceptions.cc (_cygtls::interrupt_setup): Use get_signal_arrived.
+ * tlsoffsets.h: Regenerate.
+
2012-11-30 Christopher Faylor <me.cygwin2012@cgf.cx>
* spawn.cc (child_info_spawn::worker): Make detection of '/c' case
diff --git a/winsup/cygwin/cygtls.h b/winsup/cygwin/cygtls.h
index 4f4f17c6b..4946e59c9 100644
--- a/winsup/cygwin/cygtls.h
+++ b/winsup/cygwin/cygtls.h
@@ -187,7 +187,7 @@ public:
sigset_t sigwait_mask;
siginfo_t *sigwait_info;
HANDLE signal_arrived;
- bool signal_waiting;
+ bool will_wait_for_signal;
struct ucontext thread_context;
DWORD thread_id;
siginfo_t infodata;
@@ -233,27 +233,28 @@ public:
void lock () __attribute__ ((regparm (1)));
void unlock () __attribute__ ((regparm (1)));
bool locked () __attribute__ ((regparm (1)));
- void create_signal_arrived ()
+ HANDLE get_signal_arrived ()
{
- signal_arrived = CreateEvent (&sec_none_nih, false, false, NULL);
+ if (!signal_arrived)
+ {
+ lock ();
+ if (!signal_arrived)
+ signal_arrived = CreateEvent (&sec_none_nih, false, false, NULL);
+ unlock ();
+ }
+ return signal_arrived;
}
void set_signal_arrived (bool setit, HANDLE& h)
{
if (!setit)
- signal_waiting = false;
+ will_wait_for_signal = false;
else
{
- if (!signal_arrived)
- {
- lock ();
- create_signal_arrived ();
- unlock ();
- }
- h = signal_arrived;
- signal_waiting = true;
+ h = get_signal_arrived ();
+ will_wait_for_signal = true;
}
}
- void reset_signal_arrived () { signal_waiting = false; }
+ void reset_signal_arrived () { will_wait_for_signal = false; }
private:
void call2 (DWORD (*) (void *, void *), void *, void *) __attribute__ ((regparm (3)));
/*gentls_offsets*/
@@ -327,7 +328,7 @@ public:
set_signal_arrived (bool setit, HANDLE& h) { _my_tls.set_signal_arrived (setit, h); }
set_signal_arrived (HANDLE& h) { _my_tls.set_signal_arrived (true, h); }
- operator int () const {return _my_tls.signal_waiting;}
+ operator int () const {return _my_tls.will_wait_for_signal;}
~set_signal_arrived () { _my_tls.reset_signal_arrived (); }
};
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index aa3032816..5ec0f2c71 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -799,11 +799,7 @@ _cygtls::interrupt_setup (siginfo_t& si, void *handler, struct sigaction& siga)
this->sig = si.si_signo; // Should always be last thing set to avoid a race
if (incyg)
- {
- if (!signal_arrived)
- create_signal_arrived ();
- SetEvent (signal_arrived);
- }
+ SetEvent (get_signal_arrived ());
proc_subproc (PROC_CLEARWAIT, 1);
sigproc_printf ("armed signal_arrived %p, signal %d", signal_arrived, si.si_signo);
diff --git a/winsup/cygwin/tlsoffsets.h b/winsup/cygwin/tlsoffsets.h
index 1ab4559b9..2347e9291 100644
--- a/winsup/cygwin/tlsoffsets.h
+++ b/winsup/cygwin/tlsoffsets.h
@@ -27,8 +27,8 @@
//; $tls::psigwait_info = 2584;
//; $tls::signal_arrived = -10112;
//; $tls::psignal_arrived = 2588;
-//; $tls::signal_waiting = -10108;
-//; $tls::psignal_waiting = 2592;
+//; $tls::will_wait_for_signal = -10108;
+//; $tls::pwill_wait_for_signal = 2592;
//; $tls::thread_context = -10104;
//; $tls::pthread_context = 2596;
//; $tls::thread_id = -9892;
@@ -85,8 +85,8 @@
#define tls_psigwait_info (2584)
#define tls_signal_arrived (-10112)
#define tls_psignal_arrived (2588)
-#define tls_signal_waiting (-10108)
-#define tls_psignal_waiting (2592)
+#define tls_will_wait_for_signal (-10108)
+#define tls_pwill_wait_for_signal (2592)
#define tls_thread_context (-10104)
#define tls_pthread_context (2596)
#define tls_thread_id (-9892)