Blocking serial support: what do you want?
Ned Konz
ned at bike-nomad.com
Wed Jun 12 04:39:20 UTC 2002
On Tuesday 11 June 2002 07:30 pm, Ian Piumarta wrote:
> Hi Ned,
>
> Async serial and async file pose very similar problems. Would it
> help if I were to spend a day implementing the the async file
> support? I would expect you to be able to adapt and/or simply
> share quite of bit of the same code in an async serial
> implementation. (To the support code, "it's all just descriptors".
> ;-)
That would help considerably. I looked at the aio.c code, and it looks
pretty simple.
> You'd probably want to make this work like sockets. Do the i/o in
> nonblock mode and use the semaphore(s) to signal the image when
> read data and/or write space are available. The aio handlers
> should end up looking very similar to the socket ones.
Or do what Craig did with Flow and use separate blocking pthreads that
then signal semaphores.
> On the other hand, since you're starting from a clean slate, you
> have the chance to get the image/support interface _right_ w.r.t.
> to semaphores and signals. (Don't forget that Unix select()s on a
> descriptor for write when there is as little as one byte free in
> the underlying buffer. It's best if the support code can determine
> with absolute precision when the image is waiting on a semaphore
> and when it isn't. Simply select()ing all the time on a writable
> descriptor will keep Squeak in a very nasty busy loop.)
Is there a way to tell from the VM whether a particular semaphore is
being waited on? Or would this have to be handled through a primitive
call?
>(since sometimes what you really want to do is wait on two
> semaphores simultaneously -- and this isn't possibile in one
> process without either VM modifications [aSema waitWith:
> anotherSema]
This would actually be handy anyway for generic timeouts, interrupts
from other threads, etc. Windows has the ability to wait for any (or
all) of a set of semaphores, and it turns out that this can simplify
code.
> > Do any of you see a need for such a plugin?
>
> Might something like this be of help MIDI at all?
Depends on the MIDI interface. Built-in sequencers probably don't need
this kind of support, though I'm not sure. Ones that are simple
serial ports (like old Macs?) could probably benefit from it.
> > Anyone want to help?
>
> I'm happy to write the async file support, from which you should be
> able to bootstrap the async serial support more easily than doing
> it in-vacuo.
Great!
--
Ned Konz
http://bike-nomad.com
GPG key ID: BEEA7EFE
More information about the Squeak-dev
mailing list
|