… | |
… | |
1605 | #endif |
1605 | #endif |
1606 | #if EV_USE_INOTIFY |
1606 | #if EV_USE_INOTIFY |
1607 | fs_fd = flags & EVFLAG_NOINOTIFY ? -1 : -2; |
1607 | fs_fd = flags & EVFLAG_NOINOTIFY ? -1 : -2; |
1608 | #endif |
1608 | #endif |
1609 | #if EV_USE_SIGNALFD |
1609 | #if EV_USE_SIGNALFD |
1610 | sigfd = flags & EVFLAG_NOSIGFD ? -1 : -2; |
1610 | sigfd = flags & EVFLAG_SIGNALFD ? -2 : -1; |
1611 | #endif |
1611 | #endif |
1612 | |
1612 | |
1613 | if (!(flags & 0x0000ffffU)) |
1613 | if (!(flags & 0x0000ffffU)) |
1614 | flags |= ev_recommended_backends (); |
1614 | flags |= ev_recommended_backends (); |
1615 | |
1615 | |
… | |
… | |
2790 | signals [w->signum - 1].loop = 0; /* unattach from signal */ |
2790 | signals [w->signum - 1].loop = 0; /* unattach from signal */ |
2791 | #endif |
2791 | #endif |
2792 | #if EV_USE_SIGNALFD |
2792 | #if EV_USE_SIGNALFD |
2793 | if (sigfd >= 0) |
2793 | if (sigfd >= 0) |
2794 | { |
2794 | { |
2795 | sigprocmask (SIG_UNBLOCK, &sigfd_set, 0);//D |
2795 | sigset_t ss; |
|
|
2796 | |
|
|
2797 | sigemptyset (&ss); |
|
|
2798 | sigaddset (&ss, w->signum); |
2796 | sigdelset (&sigfd_set, w->signum); |
2799 | sigdelset (&sigfd_set, w->signum); |
|
|
2800 | |
2797 | signalfd (sigfd, &sigfd_set, 0); |
2801 | signalfd (sigfd, &sigfd_set, 0); |
2798 | sigprocmask (SIG_BLOCK, &sigfd_set, 0);//D |
2802 | sigprocmask (SIG_UNBLOCK, &ss, 0); |
2799 | /*TODO: maybe unblock signal? */ |
|
|
2800 | } |
2803 | } |
2801 | else |
2804 | else |
2802 | #endif |
2805 | #endif |
2803 | signal (w->signum, SIG_DFL); |
2806 | signal (w->signum, SIG_DFL); |
2804 | } |
2807 | } |