linked-in driver

Shawn Pearce spearce@REDACTED
Wed Jun 1 05:03:18 CEST 2005


Serge Aleynikov <serge@REDACTED> wrote:
> I need to pass parameters to the start function of a linked-in driver, 
> but I am not sure how this can be done.
> 
> The start function accepts a char* command.  Is there a way to pass 
> anything there besides the driver's name?
> 
> int start(ErlDrvPort port, char* command);
> 
> After examining erlang:open_port/2 I found the {env, Environment} 
> option, but I believe it only works for port drivers.
> 
> Any advice on the subject is appreciated.


Pass the parameters as part of the driver string to open_port.  E.g.

erlang:open_port("mydrv param1 param2", ...)

will give you the string "mydrv param1 param2" in the command parameter
of the start function in your C code.  You will have to parse out the
parameters on your own.  I believe the only requirement on the format
of this string is that the characters leading up to the first ASCII
space match the name of the driver; the rest is left up to the driver.

-- 
Shawn.



More information about the erlang-questions mailing list