tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Interface for communicating from kernel to user mode



mouse%Rodents-Montreal.ORG@localhost (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.



Home | Main Index | Thread Index | Old Index