[erlang-questions] erl_driver and select() usage

Peer Stritzinger peerst@REDACTED
Thu Jul 4 16:45:45 CEST 2013


On 2013-06-24 09:30:47 +0000, Alessandro Sivieri said:

> Well, the asynchronous function of the library that I want to use 
> actually uses select() in its implementation... so in a way it is 
> already doing what I usually do with driver_select().

The driver_select() descriptor is necessary to notify the VM of async 
events.  Simplified the VM uses the filedescriptor in a big select or 
poll call together with all other drivers its waiting on.

If you can't use your library without doing its internal select() you 
need to run it in a separate thread like Max said and create a pipe to 
get a filedescriptor being passed in driver_select.

You then can write a byte to the other end of the pipe from your 
asyncrously running library to signal that you want your 
ready_{input,output} callback called to process the event.

AFAIK there is no other way to signal events to the VM from an 
separately running thread. 

Cheers,
-- Peer

> On Mon, Jun 24, 2013 at 5:43 AM, Max Lapshin <max.lapshin@REDACTED> wrote:
> It is good if you can find some file descriptor that is responsible for 
> your hardware events.
> If no then launch it in separate thread
> 
> 
> 
> -- 
> Sivieri Alessandro
> alessandro.sivieri@REDACTED
> http://sivieri.wordpress.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20130704/5da9828f/attachment.htm>


More information about the erlang-questions mailing list