30#define _RWSTD_TEST_SRC
72_rw_alarm_proc (LPVOID
arg )
78 if (_rw_alarm_handler)
79 _rw_alarm_handler (0);
92 static HANDLE thread = 0;
100 TerminateThread (thread, 0);
101 CloseHandle (thread);
116 thread = CreateThread (0, 0, _rw_alarm_proc, (LPVOID)nsec, 0, &tid);
120 return unsigned (unslept);
136# define SIG_DFL (rw_signal_handler_t*)0
140# define SIG_IGN (rw_signal_handler_t*)1
144# define SIG_HOLD (rw_signal_handler_t*)2
151_rw_handle_sigalrm (
int signo)
159 sprintf (
buffer,
"%s:%d: alarm expired\n", __FILE__, __LINE__);
164 if (_rw_alarm_handler)
165 _rw_alarm_handler (signo);
176 static unsigned saved_nsec = 0;
182 saved_nsec = alarm (0);
195 signal (
SIGALRM, saved_handler);
197 if (nsec < saved_nsec)
198 nsec = saved_nsec - nsec;
221 signal (
SIGALRM, _rw_handle_sigalrm);
rw_signal_handler_t *const rw_sig_restore
rw_signal_handler_t *const rw_sig_dfl
rw_signal_handler_t *const rw_sig_hold
_TEST_EXPORT unsigned rw_alarm(unsigned int nsec, rw_signal_handler_t *handler)
rw_signal_handler_t *const rw_sig_ign
void rw_signal_handler_t(int)
_TEST_EXPORT rw_file *const rw_stderr
_TEST_EXPORT int rw_fprintf(rw_file *, const char *,...)