[erlang-questions] Linked-in drivers: output and outputv callbacks

Joel Reymont joelr1@REDACTED
Thu Dec 13 22:30:34 CET 2007


You misunderstood my question. It's not _what_ outputv does but how is  
it possible that efile_drv.c sets up both outputv and output callbacks  
and both seem to be called somehow.

At least I assume that they are both being called since the set of  
functions that the driver performs is split over the two callbacks.  
The read/write functions are in outputv and a whole bunch of others  
like mkdir are in output.

	Thanks, Joel

On Dec 13, 2007, at 8:28 PM, Tony Rogvall wrote:

> There is actually quite some descent docs to read here:
> http://www.erlang.org/doc/apps/erts/index.html
> void outputv(ErlDrvData drv_data, ErlIOVec *ev)
> This function is called whenever the port is written to. If it is  
> NULL, the output function is called instead. This function is faster  
> than output, because it takes an ErlIOVec directly, which requires  
> no copying of the data. The port should be in binary mode, see  
> open_port/2.
> The ErlIOVec contains both a SysIOVec, suitable for writev, and one  
> or more binaries. If these binaries should be retained, when the  
> driver returns from outputv, they can be queued (using  
> driver_enq_bin for instance), or if they are kept in a static or  
> global variable, the reference counter can be incremented.


More information about the erlang-questions mailing list