The difference between the vanilla epoll_wait and pepoll_wait is that the latter allows the caller to specify a signal mask to be set while waiting for events. Hence pepoll_wait will wait until either one monitored event, or an unmasked signal happen. If sigmask is NULL, the pepoll_wait system call will act exactly like epoll_wait. For the POSIX definition of pselect, information is available here: