1、netlink 連接器 通信機(jī)制

使用netlink之前,先參考一下資料:http://www.ibm.com/developerworks/cn/linux/l-connector/

 

 

 

 

netlink通信機(jī)制介紹:資料來源 linux-4.8.13/Documentation/connector/connector.txt 2016-12-10 21:31:04

/*****************************************/
Kernel Connector.
/*****************************************/

Kernel connector - new netlink based userspace <-> kernel space easy
to use communication module.

The Connector driver makes it easy to connect various agents using a
netlink based network.  One must register a callback and an identifier.
When the driver receives a special netlink message with the appropriate
identifier, the appropriate callback will be called.

From the userspace point of view it's quite straightforward:

    socket();
    bind();
    send();
    recv();

用戶空間使用netlink相對簡單一些。


But if kernelspace wants to use the full power of such connections, the
driver writer must create special sockets, must know about struct sk_buff
handling, etc...  The Connector driver allows any kernelspace agents to use
netlink based networking for inter-process communication in a significantly
easier way:

int cn_add_callback(struct cb_id *id, char *name, void (*callback) (struct cn_msg *, struct netlink_skb_parms *));
void cn_netlink_send_multi(struct cn_msg *msg, u16 len, u32 portid, u32 __group, int gfp_mask);
void cn_netlink_send(struct cn_msg *msg, u32 portid, u32 __group, int gfp_mask);

struct cb_id
{
    __u32 &n

網(wǎng)友評論