summaryrefslogtreecommitdiff
path: root/win32/win32.c
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-04-11 07:37:02 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-04-11 07:37:02 +0000
commit314734add8ad699b1de13c3382e79dca6cca903a (patch)
tree22c673257e8e7ace82deaabac5780843da8598fb /win32/win32.c
parent20e961458e9f34504dc07712ad6b0e8aa1d165f8 (diff)
* win32/win32.[ch] (rb_w32_enter_critical, rb_w32_leave_critical): no
need to reject reentrance. removed. * rubysig.h (RUBY_CRITICAL): follow above changes. * rubysig.h (TRAP_BEG, TRAP_END): no need to save errno. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12169 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'win32/win32.c')
-rw-r--r--win32/win32.c50
1 files changed, 0 insertions, 50 deletions
diff --git a/win32/win32.c b/win32/win32.c
index 8d1f3e483f..1b878c450e 100644
--- a/win32/win32.c
+++ b/win32/win32.c
@@ -3627,56 +3627,6 @@ rb_w32_times(struct tms *tmbuf)
#define yield_once() Sleep(0)
#define yield_until(condition) do yield_once(); while (!(condition))
-static CRITICAL_SECTION *
-system_state(void)
-{
- static int initialized = 0;
- static CRITICAL_SECTION syssect;
-
- if (!initialized) {
- InitializeCriticalSection(&syssect);
- initialized = 1;
- }
- return &syssect;
-}
-
-static LONG flag_interrupt = -1;
-static volatile DWORD tlsi_interrupt = TLS_OUT_OF_INDEXES;
-
-void
-rb_w32_enter_critical(void)
-{
- if (IsWinNT()) {
- EnterCriticalSection(system_state());
- return;
- }
-
- if (tlsi_interrupt == TLS_OUT_OF_INDEXES) {
- tlsi_interrupt = TlsAlloc();
- }
-
- {
- DWORD ti = (DWORD)TlsGetValue(tlsi_interrupt);
- while (InterlockedIncrement(&flag_interrupt) > 0 && !ti) {
- InterlockedDecrement(&flag_interrupt);
- Sleep(1);
- }
- TlsSetValue(tlsi_interrupt, (PVOID)++ti);
- }
-}
-
-void
-rb_w32_leave_critical(void)
-{
- if (IsWinNT()) {
- LeaveCriticalSection(system_state());
- return;
- }
-
- InterlockedDecrement(&flag_interrupt);
- TlsSetValue(tlsi_interrupt, (PVOID)((DWORD)TlsGetValue(tlsi_interrupt) - 1));
-}
-
struct handler_arg_t {
void (*handler)(int);
int arg;