IO in Erlang¶
How a Driver Looks Like¶
A port driver is a C module with several functions defined (see ErlDrvEntry
in emulator/beam/erl_driver.h
:
Start/stop, finish, process exit/emergency close functions
IO events (async/input/output)
Timeout handler
Call function, which passes commands to the port
Control function, which changes options in the port
Flush function, which ensures that all data is written
Making a Port Driver¶
Define an erl_drv_entry
variable (a struct) and fill it with pointers to
callback functions.
You will need to cover things such as starting your driver,
stopping it, opening a port, sending commands and receiving data, and few other.
See also
BEAM Wisdoms: Interfacing Erlang with the Outer World
Load your port driver and register it in the system under a name
(add_driver_entry
).
See also
Todo
this goes to indepth section