下载此文档

NetLink使用实例(YGM).doc


文档分类:IT计算机 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
link Connector
Author: Yang gongming
杨燚,计算机科学硕士,毕业于中科院计算技术研究所,有5年的Linux内核编程经验,目前从事Linux的内核和应用开发。您可以通过 @ 与作者联系。
简介: 本文详细介绍了 Linux 内核引入的内核空间与用户空间通信的新机制连接器,并通过典型示例讲解了它的使用。
一、概述
连接器是一种新的用户态与内核态的通信方式,它使用起来非常方便。本质上,link,link LINK_CONNECTOR,link 相比,它提供了更容易的使用接口,link本质上是socket,不过它可用于用户程序和内核程序的通信。

注册一个标识 ID 和回调函数,_msg结构:
//link的ID
struct cb_id
{
__u32 idx;
__u32 val;
};
//netlink控制信息头
_msg
{
struct cb_id id;
__u32 seq;
__u32 ack;
__u32 len;/* Length of the following data */
__u8 data[0];
};
三个内核模块常用的API。
_add_callback(struct cb_id *id, char *name, void (*callback) (void *));
_del_callback(struct cb_id *id);
_netlink_send(_msg *msg, u32 __group, int gfp_mask);
结构 cb_id 是连接器实例的标识 ID,link 消息与回调函数的对应关系。当连接器接收到标识 ID 为{idx,val} link 消息时,注册的回调函数 void (*callback) (void *) 将被调用。该回调函数的参数为结构_msg 的指针。
_add_callback 用于向连接器注册新的连接器实例以及相应的回调函数,参数 id 指定注册的标识 ID,参数 name 指定连接器回调函数的符号名,参数 callback 为回调函数。
_del_callback 用于卸载回调函数,参数 id _add_callback 注册的连接器标识 ID。
_netlink_send 用于向给定的组发送消息,它可以在任何上下文安全地调用。但是,如果内存不足,可能会发送失败。在具体的连接器实例中,link 消息。
参数 msg link 消息的消息头。参数__group 为接收消息的组。用户侧接收消息,不需要注册idx和val,所以,_add_callback时的idx和val对将数据报文发送到那个用户没有任何影响。如果它为 0,那么连接器将搜索所有注册的连接器用户,也不会发送给用户 ID 与在 msg 中的 ID 相同的组。在__group==0时,甚至不会发送给=0的用户组。但如果__group 不为 0,消息将发送给__group 指定的组。参数 gfp_mask 指定页分配标志。
用户接收方,通过:socket()函数和bind函数,以及setsockopt()函数,设置接收组。只通过组来接收。当bind函数

NetLink使用实例(YGM) 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人文库旗舰店
  • 文件大小77 KB
  • 时间2018-07-13