Port driver memory free

casper2000a@REDACTED casper2000a@REDACTED
Wed Mar 23 03:32:46 CET 2005


Thanks Raimo and Vance for you generous advice!

- Eranga



Quoting Raimo Niskanen : > Quoting Raimo Niskanen :

> Rather correct...
> 
> driver_entry->call() should return memory allocated with 
> driver_alloc(), and the contents should be in external term format
> as from the ei_* functions. You do not have to allocate memory
> if the return value fits in the preallocated buffer.
> 
> driver_entry->control() should return memory allocated with
> driver_alloc(), and the contents is interpreted as a list of
> integers [0..255]. You do not have to allocate memory if the
> return value fits in the preallocated buffer. 
> 
> If you set the PORT_CONTROL_FLAG_BINARY flag, 
> driver_entry->control() should instead return a binary allocated 
> with driver_alloc_binary() and it is interpreted as a binary (!), 
> except if you (do not allocate a binary and) set the return buffer 
> to NULL which is interpreted as an empty list (allowed from R10B).
> The preallocated return buffer can not be used.
> 
> Note that you do not have to encode the result value using ei_*
> functions when you use driver_entry->control(). The encoding
> of the binary (or list) is entirely up to the driver and its
> calling erlang code. It is probably faster to encode the data
> in a suitable way of your own.
> 
> 
> 
> casper2000a@REDACTED (Casper) writes:
> 
> > Only difference is call use external term format, so need to use
> > driver_alloc, but control doesn\'t so use driver_alloc_binary, Correct?
> > 
> > - Eranga
> > 
> > 
> > -----Original Message-----
> > From: owner-erlang-questions@REDACTED
> > [mailto:owner-erlang-questions@REDACTED] On Behalf Of Casper
> > Sent: Tuesday, March 22, 2005 5:03 PM
> > To: \'Vance Shipley\'
> > Cc: erlang-questions@REDACTED; raimo@REDACTED
> > Subject: RE: Port driver memory free
> > 
> > Vance,
> > 
> > Regarding port_call and port_control, I think both can use ei library
> > functions to encode/decode terms, correct? If not, please advice how
> they\'ve
> > being done.
> > 
> > I am sorry if I did something offending. But to my understanding the code
> I
> > published only carries a very generic Erlang-C port code. Even on the
> Erlang
> > manuals or samples, the same method is shown.
> > 
> > Thanks!
> > - Eranga
> > 
> > 
> > 
> > 
> > -----Original Message-----
> > From: Vance Shipley [mailto:vances@REDACTED] 
> > Sent: Tuesday, March 22, 2005 10:44 AM
> > To: casper2000a@REDACTED
> > Cc: erlang-questions@REDACTED; raimo@REDACTED
> > Subject: Re: Port driver memory free
> > 
> > Eranga,
> > 
> > Your problem is that you have copied my (copyrighted) code written
> > for use with erlang:port_call/3 and reused it with erlang:port_control/3.
> > The difference between the two is that port_call/3 uses the external 
> > term format as encoded by the ei library while port_control/3 uses the
> > driver binary format.
> > 
> > -Vance
> > 
> > 
> > Motivity Telecom Inc.
> > +1 519 240 3684
> > vances@REDACTED
> > 
> > 
> 
> -- 
> 
> / Raimo Niskanen, Erlang/OTP, Ericsson AB
> 

--------------This mail sent through OmniBIS.com--------------




More information about the erlang-questions mailing list