equal
deleted
inserted
replaced
1938 return NSIG; |
1938 return NSIG; |
1939 } |
1939 } |
1940 |
1940 |
1941 // a counter for each possible signal value, including signal_thread exit signal |
1941 // a counter for each possible signal value, including signal_thread exit signal |
1942 static volatile jint pending_signals[NSIG+1] = { 0 }; |
1942 static volatile jint pending_signals[NSIG+1] = { 0 }; |
1943 static HANDLE sig_sem; |
1943 static HANDLE sig_sem = NULL; |
1944 |
1944 |
1945 void os::signal_init_pd() { |
1945 void os::signal_init_pd() { |
1946 // Initialize signal structures |
1946 // Initialize signal structures |
1947 memset((void*)pending_signals, 0, sizeof(pending_signals)); |
1947 memset((void*)pending_signals, 0, sizeof(pending_signals)); |
1948 |
1948 |
1968 } |
1968 } |
1969 } |
1969 } |
1970 |
1970 |
1971 void os::signal_notify(int signal_number) { |
1971 void os::signal_notify(int signal_number) { |
1972 BOOL ret; |
1972 BOOL ret; |
1973 |
1973 if (sig_sem != NULL) { |
1974 Atomic::inc(&pending_signals[signal_number]); |
1974 Atomic::inc(&pending_signals[signal_number]); |
1975 ret = ::ReleaseSemaphore(sig_sem, 1, NULL); |
1975 ret = ::ReleaseSemaphore(sig_sem, 1, NULL); |
1976 assert(ret != 0, "ReleaseSemaphore() failed"); |
1976 assert(ret != 0, "ReleaseSemaphore() failed"); |
|
1977 } |
1977 } |
1978 } |
1978 |
1979 |
1979 static int check_pending_signals(bool wait_for_signal) { |
1980 static int check_pending_signals(bool wait_for_signal) { |
1980 DWORD ret; |
1981 DWORD ret; |
1981 while (true) { |
1982 while (true) { |