231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
|
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
|
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
|
execSignalMask &= ~(1ul << cancelSignal);
_waitingTask = NULL;
FreeSignal(_cancelSignal);
Permit();
#else
events = select(_maxFD + 1, &readFDs, &writeFDs, NULL,
(timeInterval != -1 ? &timeout : NULL));
#endif
if (events < 0)
@throw [OFObserveKernelEventsFailedException
exceptionWithObserver: self
errNo: _OFSocketErrNo()];
#ifdef OF_AMIGAOS
if (execSignalMask != 0 &&
[_delegate respondsToSelector: @selector(execSignalWasReceived:)])
[_delegate execSignalWasReceived: execSignalMask];
#else
while ((events = select(_maxFD + 1, &readFDs, &writeFDs, NULL,
(timeInterval != -1 ? &timeout : NULL))) < 0) {
int errNo = _OFSocketErrNo();
if (errNo != EINTR)
@throw [OFObserveKernelEventsFailedException
exceptionWithObserver: self
errNo: _OFSocketErrNo()];
}
if (FD_ISSET(_cancelFD[0], &readFDs)) {
char buffer;
# ifdef OF_HAVE_PIPE
OFEnsure(read(_cancelFD[0], &buffer, 1) == 1);
# else
OFEnsure(recvfrom(_cancelFD[0], (void *)&buffer, 1, 0, NULL,
|