* hurd/hurd/resource.h (MACH_PRIORITY_TO_NICE,
NICE_TO_MACH_PRIORITY): Align nice levels on Mach priorities from 5 to
45.
+ * hurd/hurdselect.c (_hurd_select): Pass MACH_RCV_INTERRUPT to
+ __mach_msg. If that returns MACH_RCV_INTERRUPTED, set ERR to EINTR.
2015-02-06 Roland McGrath <roland@hack.frob.com>
mach_msg_option_t options = (timeout == NULL ? 0 : MACH_RCV_TIMEOUT);
error_t msgerr;
while ((msgerr = __mach_msg (&msg.head,
- MACH_RCV_MSG | options,
+ MACH_RCV_MSG | MACH_RCV_INTERRUPT | options,
0, sizeof msg, portset, to,
MACH_PORT_NULL)) == MACH_MSG_SUCCESS)
{
effect a poll, so ERR is MACH_RCV_TIMED_OUT when the poll finds no
message waiting. */
err = 0;
+ if (msgerr == MACH_RCV_INTERRUPTED)
+ /* Interruption on our side (e.g. signal reception). */
+ err = EINTR;
if (got)
/* At least one descriptor is known to be ready now, so we will