
  -spec erlang:port_info(Port, memory) -> {memory, Bytes} | undefined
                            when
                                Port :: port() | atom(),
                                Bytes :: non_neg_integer().

Since:
  OTP R16B

  -spec erlang:port_info(Port, parallelism) ->
                            {parallelism, Boolean} | undefined
                            when
                                Port :: port() | atom(),
                                Boolean :: boolean().

Since:
  OTP R16B

  -spec erlang:port_info(Port, queue_size) ->
                            {queue_size, Bytes} | undefined
                            when
                                Port :: port() | atom(),
                                Bytes :: non_neg_integer().

Since:
  OTP R16B

  -spec erlang:port_info(Port, input) -> {input, Bytes} | undefined
                            when
                                Port :: port() | atom(),
                                Bytes :: non_neg_integer().

  -spec erlang:port_info(Port, output) -> {output, Bytes} | undefined
                            when
                                Port :: port() | atom(),
                                Bytes :: non_neg_integer().

  -spec erlang:port_info(Port, id) -> {id, Index} | undefined
                            when
                                Port :: port() | atom(),
                                Index :: non_neg_integer().

  -spec erlang:port_info(Port, locking) -> {locking, Locking} | undefined
                            when
                                Port :: port() | atom(),
                                Locking ::
                                    false | port_level | driver_level.

Since:
  OTP R16B

  -spec erlang:port_info(Port, monitors) ->
                            {monitors, Monitors} | undefined
                            when
                                Port :: port() | atom(),
                                Monitors :: [{process, pid()}].

Since:
  OTP R16B

  -spec erlang:port_info(Port, name) -> {name, Name} | undefined
                            when Port :: port() | atom(), Name :: string().

  -spec erlang:port_info(Port, os_pid) -> {os_pid, OsPid} | undefined
                            when
                                Port :: port() | atom(),
                                OsPid :: non_neg_integer() | undefined.

Since:
  OTP R16B

  -spec erlang:port_info(Port, connected) -> {connected, Pid} | undefined
                            when Port :: port() | atom(), Pid :: pid().

  -spec erlang:port_info(Port, links) -> {links, Pids} | undefined
                            when Port :: port() | atom(), Pids :: [pid()].

  -spec erlang:port_info(Port, registered_name) ->
                            {registered_name, RegisteredName} |
                            [] | undefined
                            when
                                Port :: port() | atom(),
                                RegisteredName :: atom().

  -spec erlang:port_info(Port, monitored_by) ->
                            {monitored_by, MonitoredBy} | undefined
                            when
                                Port :: port() | atom(),
                                MonitoredBy :: [pid()].

Since:
  OTP 19.0

  Returns list of pids that are monitoring given port at the moment.

  If the port identified by Port is not open, undefined is
  returned. If the port is closed and the calling process was
  previously linked to the port, the exit signal from the port is
  guaranteed to be delivered before port_info/2 returns undefined.

  Failure: badarg if Port is not a local port identifier, or an
  atom.
