Provided by: erlang-manpages_18.3-dfsg-1ubuntu3.1_all bug

NAME

       ose_erl_driver - Linked-in drivers in Enea OSE

DESCRIPTION

       Writing  Linked-in  drivers  that also work on Enea OSE is very similar for how you would do it for Unix.
       The difference from Unix is that driver_select,  ready_input  and  ready_output  all  work  with  signals
       instead  of  file  descriptors. This means that the driver_select is used to specify which type of signal
       should trigger calls to ready_input/ready_output. The functions described below are available  to  driver
       programmers on Enea OSE to facilitate this.

DATA TYPES

         union SIGNAL:
           See the Enea OSE SPI documentation for a description.

         SIGSELECT:
           See the Enea OSE SPI documentation for a description.

         ErlDrvEvent:
           The   ErlDrvEvent   is   a   handle  to  a  signal  number  and  id  combination.  It  is  passed  to
           driver_select(3erl).

         ErlDrvOseEventId:
           This is the id used to associate a specific signal to a certain driver instance.

EXPORTS

       union SIGNAL *erl_drv_ose_get_signal(ErlDrvEvent drv_event)

              Fetch the next signal associated with drv_event. Signals will be returned in the order which  they
              were  received  and when no more signals are available NULL will be returned. Use this function in
              the ready_input/ready_output callbacks to get signals.

       ErlDrvEvent    erl_drv_ose_event_alloc(SIGSELECT    signo,    ErlDrvOseEventId    id,    ErlDrvOseEventId
       (*resolve_signal)(union SIGNAL* sig), void *extra)

              Create a new ErlDrvEvent associated with signo, id and uses the resolve_signal function to extract
              the id from a signal with signo. The extra parameter can be used for additional data. See  Signals
              in a Linked-in driver in the OSE User's Guide.

       void erl_drv_ose_event_free(ErlDrvEvent drv_event)

              Free  a  ErlDrvEvent.  This should always be done in the stop_select callback when the event is no
              longer being used.

       void erl_drv_ose_event_fetch(ErlDrvEvent drv_event, SIGSELECT *signo, ErlDrvOseEventId *id, void **extra)

              Write the signal number, id and any extra data associated  with  drv_event  into  *signo  and  *id
              respectively. NULL can be also passed as signo or id in order to ignore that field.

SEE ALSO

       driver_entry(3erl), erl_driver(3erl)

Ericsson AB                                          ose 1.1                                ose_erl_driver(3erl)