Re: Interface for communicating from kernel to user mode

[email protected] (Michael van Elst)
Newsgroups gmane.os.netbsd.devel.kernel
Organization Serpens User Group
Message-ID <[email protected]>
[email protected] (Mouse) writes:

>- Userland creates an AF_LOCAL SOCK_STREAM socketpair and passes one of
>   the resulting socket fds to the kernel, which takes over the
>   referenced socket and uses it, with userland reading from and
>   writing to the other socket.

That's about how nlmsg_unicast() is used, except that:

- userland creates an AF_NETLINK SOCK_RAW or SOCK_DGRAM socket,
  and binds it to the pid as the address.

- userland uses the 'protocol' parameter of the socket() syscall
  to address different kernel subsystems.

- the kernel doesn't use a socket abtraction but has its private
  API to send messages to or receive from a pid, which references
  the AF_NETLINK sockets bound to that pid address.

- the data is encapsulated as NLMSG_DATA (similar to CMSG_DATA).

- there is also the concept of multicasting messages.

To some degree it resembles more our PF_ROUTE or PF_KEY sockets
and in fact, NETLINK_ROUTE is one of the kernel subsystems
that a Linux program can talk to.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.