thread: Test for pending cancellation requests before poll()ing on OS X
As we are now using poll(2) instead of select(2), we need the work-around from
76dc329e for poll() as well.
This commit is contained in:
@@ -215,6 +215,26 @@ static inline int precancellable_select(int nfds, fd_set *restrict readfds,
|
|||||||
}
|
}
|
||||||
#define select precancellable_select
|
#define select precancellable_select
|
||||||
|
|
||||||
|
#include <poll.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The same as to select(2) applies to poll(2)
|
||||||
|
*/
|
||||||
|
static inline int precancellable_poll(struct pollfd fds[], nfds_t nfds,
|
||||||
|
int timeout)
|
||||||
|
{
|
||||||
|
if (thread_cancelability(TRUE))
|
||||||
|
{
|
||||||
|
thread_cancellation_point();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
thread_cancelability(FALSE);
|
||||||
|
}
|
||||||
|
return poll(fds, nfds, timeout);
|
||||||
|
}
|
||||||
|
#define poll precancellable_poll
|
||||||
|
|
||||||
#endif /* __APPLE__ */
|
#endif /* __APPLE__ */
|
||||||
|
|
||||||
#endif /** THREADING_THREAD_H_ @} */
|
#endif /** THREADING_THREAD_H_ @} */
|
||||||
|
|||||||
Reference in New Issue
Block a user