12static HANDLE hTimerQueue = NULL;
13static HANDLE hTimer = NULL;
16VOID CALLBACK WindowsAlarmCallback(PVOID lpParam, BOOLEAN TimerOrWaitFired) {
17 if (g_alarm_handler) {
22void cleanup_win_timer() {
24 DeleteTimerQueueTimer(hTimerQueue, hTimer, NULL);
28 DeleteTimerQueue(hTimerQueue);
45 switch (signum->
value) {
83 hTimerQueue = CreateTimerQueue();
89 DeleteTimerQueueTimer(hTimerQueue, hTimer, NULL);
100 if (!CreateTimerQueueTimer(&hTimer, hTimerQueue,
101 (WAITORTIMERCALLBACK)WindowsAlarmCallback,
102 NULL, seconds * 1000, 0, WT_EXECUTEONLYONCE)) {
109 return alarm(seconds);
119 TerminateProcess(GetCurrentProcess(), 1);
122 kill(getpid(), SIGKILL);
130 if (g_alarm_handler) {
138 if (raise(signum) != 0) {
182 g_alarm_handler = NULL;
187 if (signal(signum, SIG_IGN) == SIG_ERR) {
197 signum_obj->
value = signum;
202 info->self->handler((
YoiObject *)info->self->this_ptr, signum_obj);
207 info->self->handler((
YoiObject *)info->self->this_ptr, signum_obj);
212 info->self->handler((
YoiObject *)info->self->this_ptr, signum_obj);
227 signal(SIGPIPE, SIG_IGN);
void * runtime_object_alloc(unsigned long size)
void runtime_finalize_object(YoiObject *object)
void runtime_signal_handler(int signum)
LIBSIG_EXPORT int runtime_signal_ignore(int signum)
LIBSIG_EXPORT YoiIntegerObject * runtime_signal_register(YoiIntegerObject *signum, YoiVoidIntCallableInterface *handler)
LIBSIG_EXPORT void runtime_signal_init()
LIBSIG_EXPORT int runtime_signal_alarm(unsigned int seconds)
runtime_signal_handler_info * runtime_signal_handlers[3]
LIBSIG_EXPORT int runtime_signal_raise(int signum)
LIBSIG_EXPORT int runtime_signal_default(int signum)
#define LIBSIG_ERR_REGISTER_FAIL
#define HANDLER_TYPE_SIGALRM
#define HANDLER_TYPE_SIGINT
void(* runtime_signal_handler_bare_t)(int signum)
#define LIBSIG_ERR_UNSUPPORTED
#define HANDLER_TYPE_SIGTERM
#define LIBSIG_ERR_RAISE_FAIL
#define LIBSIG_INTERNAL_ALRM
#define LIBSIG_ERR_CANT_CATCH_KILL
#define LIBSIG_INTERNAL_KILL
unsigned long long gc_refcount
unsigned long long type_id
void *(* gc_dec_func)(void *this_ptr)
runtime_signal_handler_info * next
YoiVoidIntCallableInterface * self