Interpreter change

John M McIntosh johnmci at
Mon Apr 17 21:56:26 UTC 2006

The other thing I'm confused about is that in the past

where we would calculate the pending wakeup time based on my thoughts  
of a few years ago then we would
have said aioPoll(realTimeToWait)....

and the aioPoll() logic would do it's thing for the supposed set of  
micro seconds.

However now I see that this has changed to:

	if (!aioPoll(0)) {
		  struct timespec rqtp= { 0, realTimeToWait * 1000*1000 };
		  struct timespec rmtp;
		  while ((nanosleep(&rqtp, &rmtp) < 0) && (errno == EINTR))
			rqtp= rmtp;

so why the change not to have the select() do the sleep?

what are the conditions that would cause aioPoll() to return 0, thus  
invoking this nanosleep
and if the nanosleep is invoked, would 16 ms pass before servicing a  
socket? if realTimeToWait is 16ms?

On 17-Apr-06, at 2:19 PM, Andreas Raab wrote:

> John M McIntosh wrote:
>> ioProcessEvents() is a null call on os-x.
>> you have some other magic you are expecting it to do?
> How do you deal with sockets? I thought you were using the Unix  
> socket code which relies on aio* and which is commonly called in  
> ioProcessEvents. If not there, where *do* you call it? ;-)
> Cheers,
>   - Andreas

John M. McIntosh <johnmci at> 1-800-477-2659
Corporate Smalltalk Consulting Ltd.

More information about the Vm-dev mailing list