gm2-libs/Selective (The GNU Modula-2 Compiler)

#### 4.1.40 gm2-libs/Selective ¶

    DEFINITION MODULE Selective ;

    FROM SYSTEM IMPORT ADDRESS ;

    EXPORT QUALIFIED SetOfFd, Timeval,
                     InitSet, KillSet, InitTime, KillTime,
                     GetTime, SetTime,
                     FdZero, FdSet, FdClr, FdIsSet, Select,
                     MaxFdsPlusOne, WriteCharRaw, ReadCharRaw,
                     GetTimeOfDay ;

    TYPE
       SetOfFd = ADDRESS ;    (* Hidden type in Selective.c *)
       Timeval = ADDRESS ;    (* Hidden type in Selective.c *)

    PROCEDURE Select (nooffds: CARDINAL;
                      readfds, writefds, exceptfds: SetOfFd;
                      timeout: Timeval) : INTEGER ;

    PROCEDURE InitTime (sec, usec: CARDINAL) : Timeval ;
    PROCEDURE KillTime (t: Timeval) : Timeval ;
    PROCEDURE GetTime (t: Timeval; VAR sec, usec: CARDINAL) ;
    PROCEDURE SetTime (t: Timeval; sec, usec: CARDINAL) ;
    PROCEDURE InitSet () : SetOfFd ;
    PROCEDURE KillSet (s: SetOfFd) : SetOfFd ;
    PROCEDURE FdZero (s: SetOfFd) ;
    PROCEDURE FdSet (fd: INTEGER; s: SetOfFd) ;
    PROCEDURE FdClr (fd: INTEGER; s: SetOfFd) ;
    PROCEDURE FdIsSet (fd: INTEGER; s: SetOfFd) : BOOLEAN ;
    PROCEDURE MaxFdsPlusOne (a, b: INTEGER) : INTEGER ;

    (* you must use the raw routines with select - not the FIO buffered routines *)
    PROCEDURE WriteCharRaw (fd: INTEGER; ch: CHAR) ;
    PROCEDURE ReadCharRaw (fd: INTEGER) : CHAR ;

    (*
       GetTimeOfDay - fills in a record, Timeval, filled in with the
                      current system time in seconds and microseconds.
                      It returns zero (see man 3p gettimeofday)
    *)

    PROCEDURE GetTimeOfDay (tv: Timeval) : INTEGER ;

    END Selective.