
  -spec port_control(Port, Operation, Data) -> iodata() | binary()
                        when
                            Port :: port() | atom(),
                            Operation :: integer(),
                            Data :: iodata().

  Performs a synchronous control operation on a port. The meaning of 
  Operation and Data depends on the port, that is, on the port
  driver. Not all port drivers support this control feature.

  Returns a list of integers in the range 0..255, or a binary,
  depending on the port driver. The meaning of the returned data
  also depends on the port driver.

  Failures:

  badarg:
    If Port is not an open port or the registered name of an
    open port.

  badarg:
    If Operation cannot fit in a 32-bit integer.

  badarg:
    If the port driver does not support synchronous control
    operations.

  badarg:
    If the port driver so decides for any reason (probably
    something wrong with Operation or Data).
    Warning:
      Do not call port_control/3 with an unknown Port
      identifier and expect badarg exception. Any undefined
      behavior is possible (including node crash) depending on
      how the port driver interprets the supplied arguments.
