|
|
| version 1.16.2.1, 2013/05/26 20:14:02 | version 1.18.4.1, 2013/08/15 14:53:49 |
|---|---|
| Line 162 sched_hook_cancel(void *task, void *arg __unused) | Line 162 sched_hook_cancel(void *task, void *arg __unused) |
| #else | #else |
| EV_SET(&chg[0], TASK_VAL(t), EVFILT_SIGNAL, EV_DELETE, 0, 0, (void*) TASK_VAL(t)); | EV_SET(&chg[0], TASK_VAL(t), EVFILT_SIGNAL, EV_DELETE, 0, 0, (void*) TASK_VAL(t)); |
| #endif | #endif |
| /* restore signal */ | |
| signal(TASK_VAL(t), SIG_DFL); | |
| break; | break; |
| #ifdef AIO_SUPPORT | #ifdef AIO_SUPPORT |
| case taskAIO: | case taskAIO: |
| Line 339 sched_hook_alarm(void *task, void *arg __unused) | Line 341 sched_hook_alarm(void *task, void *arg __unused) |
| return (void*) -1; | return (void*) -1; |
| #ifdef __NetBSD__ | #ifdef __NetBSD__ |
| EV_SET(&chg[0], (uintptr_t) TASK_DATA(t), EVFILT_TIMER, EV_ADD | EV_ONESHOT, 0, | EV_SET(&chg[0], (uintptr_t) TASK_DATA(t), EVFILT_TIMER, EV_ADD | EV_CLEAR, 0, |
| t->task_val.ts.tv_sec * 1000 + t->task_val.ts.tv_nsec / 1000000, | t->task_val.ts.tv_sec * 1000 + t->task_val.ts.tv_nsec / 1000000, |
| (intptr_t) TASK_DATA(t)); | (intptr_t) TASK_DATA(t)); |
| #else | #else |
| EV_SET(&chg[0], (uintptr_t) TASK_DATA(t), EVFILT_TIMER, EV_ADD | EV_ONESHOT, 0, | EV_SET(&chg[0], (uintptr_t) TASK_DATA(t), EVFILT_TIMER, EV_ADD | EV_CLEAR, 0, |
| t->task_val.ts.tv_sec * 1000 + t->task_val.ts.tv_nsec / 1000000, | t->task_val.ts.tv_sec * 1000 + t->task_val.ts.tv_nsec / 1000000, |
| (void*) TASK_DATA(t)); | (void*) TASK_DATA(t)); |
| #endif | #endif |
| Line 447 sched_hook_signal(void *task, void *arg __unused) | Line 449 sched_hook_signal(void *task, void *arg __unused) |
| if (!t || !TASK_ROOT(t)) | if (!t || !TASK_ROOT(t)) |
| return (void*) -1; | return (void*) -1; |
| /* ignore signal */ | |
| signal(TASK_VAL(t), SIG_IGN); | |
| #ifdef __NetBSD__ | #ifdef __NetBSD__ |
| EV_SET(&chg[0], TASK_VAL(t), EVFILT_SIGNAL, EV_ADD, 0, 0, (intptr_t) TASK_VAL(t)); | EV_SET(&chg[0], TASK_VAL(t), EVFILT_SIGNAL, EV_ADD | EV_CLEAR, 0, 0, (intptr_t) TASK_VAL(t)); |
| #else | #else |
| EV_SET(&chg[0], TASK_VAL(t), EVFILT_SIGNAL, EV_ADD, 0, 0, (void*) TASK_VAL(t)); | EV_SET(&chg[0], TASK_VAL(t), EVFILT_SIGNAL, EV_ADD | EV_CLEAR, 0, 0, (void*) TASK_VAL(t)); |
| #endif | #endif |
| if (kevent(TASK_ROOT(t)->root_kq, chg, 1, NULL, 0, &timeout) == -1) { | if (kevent(TASK_ROOT(t)->root_kq, chg, 1, NULL, 0, &timeout) == -1) { |
| if (TASK_ROOT(t)->root_hooks.hook_exec.exception) | if (TASK_ROOT(t)->root_hooks.hook_exec.exception) |