linux用户空间与内核空间通信——Netlink通信机制
linux用户空间与内核空间通信——Netlink通信机制
一般来说用户空间和内核空间的通信方式有三种:/proc、ioctl、Netlink。而前两种都是单向的,但是Netlink可以实现双工通信。
(资料图)
1、Netlink socket的作用:
Netlink socket 是一种Linux特有的socket,用于实现用户进程与内核进程之间通信的一种特殊的进程间通信方式(IPC) ,也是网络应用程序与内核通信的最常用的接口。
Netlink 是一种在内核和用户应用间进行双向数据传输的非常好的方式,用户态应用使用标准的 socket API 就能使用 Netlink 提供的强大功能,内核态需要使用专门的内核 API 来使用 Netlink。
2、内核预定义的协议类型
H Code \kernel-4.14\include\uapi\linux\netlink.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42#define NETLINK_ROUTE 0 /* Routing/device hook */ #define NETLINK_UNUSED 1 /* Unused number */ #define NETLINK_USERSOCK 2 /* Reserved for user mode socket protocols */ #define NETLINK_FIREWALL 3 /* Unused number, formerly ip_queue */ #define NETLINK_SOCK_DIAG 4 /* socket monitoring */ #define NETLINK_NFLOG 5 /* netfilter/iptables ULOG */ #define NETLINK_XFRM 6 /* ipsec */ #define NETLINK_SELINUX 7 /* SELinux event notifications */ #define NETLINK_ISCSI 8 /* Open-iSCSI */ #define NETLINK_AUDIT 9 /* auditing */ #define NETLINK_FIB_LOOKUP 10 #define NETLINK_CONNECTOR 11 #define NETLINK_NETFILTER 12 /* netfilter subsystem */ #define NETLINK_IP6_FW 13 #define NETLINK_DNRTMSG 14 /* DECnet routing messages */ #define NETLINK_KOBJECT_UEVENT 15 /* Kernel messages to userspace */ #define NETLINK_GENERIC 16 /* leave room for NETLINK_DM (DM Events) */ #define NETLINK_SCSITRANSPORT 18 /* SCSI Transports */ #define NETLINK_ECRYPTFS 19 #define NETLINK_RDMA 20 #define NETLINK_CRYPTO 21 /* Crypto layer */ #define NETLINK_SMC 22 /* SMC monitoring */ #define NETLINK_INET_DIAG NETLINK_SOCK_DIAG #define MAX_LINKS 32 struct sockaddr_nl{__kernel_sa_family_t nl_family; /* AF_NETLINK */ unsigned short nl_pad; /* zero */ __u32 nl_pid; /* port ID */ __u32 nl_groups; /* multicast groups mask */ }; struct nlmsghdr{__u32 nlmsg_len; /* Length of message including header */ __u16 nlmsg_type; /* Message content */ __u16 nlmsg_flags; /* Additional flags */ __u32 nlmsg_seq; /* Sequence number */ __u32 nlmsg_pid; /* Sending process port ID */ };
对于每一个netlink协议类型,能有多达 32多播组,每一个多播组用一个位表示,netlink 的多播特性使得发送消息给同一个组仅需要一次系统调用,因而对于需要多拨消息的应用而言,大大地降低了系统调用的次数。
3.Netlink应用举例:热插拔监控
SD卡、USB、网线等设备的使用过程中都可以热插拔。新的Linux内核使用udev代替了hotplug作为热拔插管理,虽然有udevd管理热拔插,但有时候我们还是需要在应用程序中检测热拔插事件以便快速地处理,比如在读写SD卡的时候拔下SD卡,那么需要立即检测出该情况,然后结束读写线程,防止VFS崩溃。Netlink是面向数据包的服务,为内核与用户层搭建了一个高速通道,是udev实现的基础。该工作方式是异步的,用户空间程序不必使用轮询等技术来检测热拔插事件。
3.1.内核空间
在内核中使用 uevent 事件通知用户空间。uevent首先在内核中调用 netlink_kernel_create()函数创建一个socket套接字,该函数原型在netlink.h有定义,其类型是表示往用户空间发送消息的NETLINK_KOBJECT_UEVENT,groups=1。由于uevent只往用户空间发送消息而不接受,因此其输入回调函数input和cb_mutex都没有设置。
H Code \kernel-4.14\include\linux\netlink.h
1 2 3 4 5static inline struct sock * netlink_kernel_create(struct net *net, int unit, struct netlink_kernel_cfg *cfg) {return __netlink_kernel_create(net, unit, THIS_MODULE, cfg); }
C Code
1 2 3 4 5struct netlink_kernel_cfg my_cfg .groups = 1, //groups=1表示多播 }; static struct sock *my_socket = netlink_kernel_create(&init_net,NETLINK_KOBJECT_UEVENT, &my_cfg);
3.2.用户空间
处于用户空间的程序使用标准的socket API:socket(), bind(), sendmsg(), recvmsg() 和 close() 就能非常容易地使用 netlink socket。
C Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58#include#include#include#include#include#include//该头文件需要放在netlink.h前面防止编译出现__kernel_sa_family未定义 #include#includevoid MonitorNetlinkUevent() {int sockfd; struct sockaddr_nl sa; int len; char buf[4096]; struct iovec iov; struct msghdr msg; int i; memset(&sa,0,sizeof(sa)); sa.nl_family=AF_NETLINK; sa.nl_groups=NETLINK_KOBJECT_UEVENT; sa.nl_pid = 0;//getpid(); both is ok //①、创建一个socket描述符 sockfd=socket(AF_NETLINK,SOCK_RAW,NETLINK_KOBJECT_UEVENT); if(sockfd==-1) printf("socket creating failed:%s\n",strerror(errno)); //②、将描述符绑定到接收地址, 函数 bind() 用于把一个打开的 netlink socket 和 netlink 源 socket 地址绑定在一起 if(bind(sockfd,(struct sockaddr *)&sa,sizeof(sa))==-1) printf("bind error:%s\n",strerror(errno)); memset(&msg,0,sizeof(msg)); iov.iov_base=(void *)buf; iov.iov_len=sizeof(buf); msg.msg_name=(void *)&sa; msg.msg_namelen=sizeof(sa); msg.msg_iov=&iov; msg.msg_iovlen=1; //③开始接收uevent len=recvmsg(sockfd,&msg,0); if(len<0) printf("receive error\n"); else if(len<32||len>sizeof(buf)) printf("invalid message"); for(i=0;i<LEN;I++) if(*(buf+i)="="\0")" buf[i]="\n" ;="" printf(?received %d bytes\n%s\n?,len,buf);="" }="" ="" int main(int argc,char **argv)="" {MonitorNetlinkUevent(); return 0; }
标签:
相关推荐:
精彩放送:
- []环球快看:造梦西游3悟空怎么打朱子真?他有哪些技能?
- []世界简讯:启迪设计:公司暂未开展机器视觉领域的应用
- []热文:inferior是什么意思?inferior的用法你知道吗?
- []滚动:spiritual是什么意思?spiritual的用法介绍
- []狱岩石武器怎么幻化?狱岩石武器怎么样?
- []焦点热讯:scheme是什么意思?scheme的用法大全
- []全球微资讯!tend是什么意思?tend的用法有哪些?
- []幸运勇士是什么活动?dnf幸运购物抽奖
- []即时焦点:周大福涨超5% 第四财季同店销售同比增加96.5%
- []高澜股份:4月14日融资净买入7088.11万元,连续3日累计净买入9774.49万元
- []全球即时:重庆黔江建投集团20亿元私募债券项目更新至“已受理”
- []焦点速读:速看!六安二中2021高考成绩名单公布
- []甜美秀气的网名有哪些?甜美秀气的网名介绍
- []国家宝藏3:星石谜雾什么时候上映?
- []当前视点!裱画是指什么?裱画是什么意思?
- []每日热点:个人房产税如何征收怎么算?个人房产税如何征收?
- []全球要闻:手机屏幕上的划痕怎么修复?各种修复划痕技巧大比拼
- []subsequent是什么意思?subsequent的用法介绍
- []实时焦点:索伊冰箱质量怎么样?品牌知识简单介绍
- []reasonable是什么意思?reasonable的用法
- []世界今亮点!生旦净末丑净指的是男角还是女角?详情介绍
- []2021年高考总分是多少分?历年高考分数线如何参考?
- []焦点精选!oppo手机的语音助手在哪里打开?OPPO手机的语音助手介绍
- []离心过滤器工作原理是什么?离心过滤器的工作原理及使用方法
- []小蚁运动相机是什么相机?手机APP还是必备的?
- []win7系统dhcpclient服务无法启动怎么办?解决办法
- []环球新消息丨弹钢琴的手型有什么要求?弹钢琴手型好的标准是什么?
- []全球微头条丨language是什么意思?language的用法有哪些?
- []【天天播资讯】苹果ipad怎么存照片?详细方法介绍【教程】
- []手机怎么剪切音乐?手机剪切音乐的方法步骤
- []全球头条:1.2GW/3.2GWh!新华水力发电2023年度磷酸铁锂电化学储能系统集中采购开标
- []每日观点:如何在电脑桌面上添加文字提醒?教你一个简单实用的方法
- []电脑屏幕分辨率调不了怎么办?化身电脑小能手帮你解决
- []deviation是什么意思?是偏航吗?
- []世界快报:4月上半月储能项目进展:3.5GWh项目投运/在建,7GWh+招标
- []世界快讯:国电电力(600795):扭亏为盈 2023风光投产目标8GW
- []天天实时:人民币符号怎么打?人民币符号的输入方法
- []雷柏V500S纯白色背光版机械键盘怎么样?雷柏V500S纯白色背光版鉴赏
- []世界微头条丨眼睛干涩、视力下降怎么办?显示器亮度调节软件推荐
- []全球快资讯:打印机打印状态提示“出错”是什么意思?怎么解决?
- []全球快资讯丨word怎么去除页眉横线?简单使用的方法
- []每日热议!巴法络路由器怎么样?巴法络无线路由器WHR-GN-HP评测
- []环球快资讯丨qt兑换券怎么获得?怎么获取QQTalk软件?
- []鼠标单击变成双击怎么办?鼠标微动开关装置检修
- []全球观天下!美人相机怎么用?美人相机使用教程
- []环球动态:3dmax如何设置漫反射的颜色?3dmax如何设置漫反射的光泽度?
- []如何在WordPress中拆分标题和字幕?WordPress中拆分标题和字幕的区别
- []如何写毕业设计?如何阅读外文文献?
- []环球观天下!高主频的N79和高能效的N82 哪个更好用?
- []【新要闻】联想电脑品牌机排名介绍:联想扬天T4900上榜
- []南网1.2GWh储能系统+500MW变流器集采中标候选人公示
- []世界速讯:三阶魔方开发孩子智力的方法?3阶魔方顶层还原图解
- []今日热文:股票选股公式汇总 测试选股公式有哪些?
- []环球微头条丨云服务器优势差别?三大主流云平台对比
- []如何删除地址栏中的URL?删除IE地址栏的两种方法
- []天天日报丨相机存储卡数据丢失怎么办?相机存储卡数据丢失的常见原因
- []每日视讯:如何获取qq空间图片的url?获取qq空间图片的url流程
- []热点聚焦:WP7 SDK怎么下载?WP7SDK离线安装文件下载地址
- []环球聚焦:建站之星模板好吗?模板建站需要虚拟主机吗?
- []【聚看点】linux上支持的3G上网卡怎么用?3G上网卡使用方法
- []简讯:activemq控制台怎么看生产信息?NARS的生产日期保质期批号怎么看?
- []当前时讯:如何判定一个点是否在三角形内?判定方法是什么?
- []三星s5830i怎么刷机?三星s5830i详细刷机教程
- []全球微头条丨广交会创办67年来累计出口成交1.5万亿美元 参展结构与产品质量持续优化
- []U盘无法打开怎么办?banq u盘量产工具如何修复U盘丢失的数据?
- []职场新人必装的电脑软件有哪些?职场新人必备的电脑软件清单
- []当前速看:剑灵:剑士PVP怎么加点?PVP技能加点心得
- []资讯:上周楼市成交同环比均涨,宅地成交量倍增
- []世界简讯:不会跑代码怎么办?python3的代码帮你解决
- []即时看!百川股份:公司PMA产能为5万吨/年
- []天天快消息!川能动力:公司电力销售收入、锂电业务收入较上年同期增长较大
- []看热讯:港财政司陈茂波:消费券为市场注入200亿元
- []同达创业:截至2023年4月10日公司的股东数是14172
- []黄金出现技术性抛售,散户坚定看涨本周走势不动摇!
- []三立期货4月17日早间内参——能化
- []中航电测:本次重组工作正在有序推进中
- []ST华英说明申请撤销其他风险警示相关情况
- []【世界新视野】香港机票送赠计划内地即将开启,“五一”出境机票香港热度第一
- []天天新动态:5GWh!华电启动储能系统集采,电芯容量需≥280Ah
- []资金回流半导体板块 主题基金快速修复前期回撤
- []天天微速讯:上海动力电池循环利用中心揭牌 首批产线预计明年投产
- []【全球快播报】手机摔黑屏但是有声音修要多少钱_手机摔黑屏但是有声音
- []押中翻倍AI牛股 私募百万高薪招聘相关人才!
- []环球热门:蜂巢能源或将在欧洲建造5座动力电池工厂
- []当前观察:昆明:鼓励储能电池企业建设独立或共享储能电站,推进储能产业链上下游融合发展
- []焦点播报:中信证券:锂价或迎来阶段性止跌行情
- []陆家嘴集团挂牌转让上海仁耀置业65%股权 底价27.66亿元
- []河南济源:三孩以上家庭住房公积金贷款最高额度为80万元
- []天天最新:淮河能源:公司历次董事会的召集、召开程序符合《公司法》和《公司章程》的规定
- []世界百事通!博敏电子:股东买卖股票行为受多重因素影响,是股东的自主行为
- []天天快资讯丨广东:截至3月末住户贷款比年初增加1909亿元 同比多增370亿元
- []厦门国贸拟发行规模上限10亿元公司债 票面利率确定为4.25%
- []世界关注:克来机电:公司再融资和新投产计划会按照相关信息披露规定及时进行披露和公告,您可以持续关注公司后续公告
- []京华激光:制导方式主要分为自主制导、寻的制导、遥控制导和复合制导
- []快报:贝特瑞2022年负极材料销量超33万吨 正极材料收入逾103亿
- []环球热点评!软银再减持商汤5000万股 套现1.38亿港元
- []央行:推动房地产业向新发展模式平稳过渡
- []“关注公众号才能开发票”怎么破
- []3月房价环比全线上涨
- []微速讯:4月17日重点数据和大事件前瞻
- 环球新动态:西安曲江大明宫集团10亿元私募债券项目更新至“已反馈”
- 【环球新要闻】黄金市场分析:若跌破1930美元,需警惕出现更大幅度的回落
- 全球资讯:天津北辰科技园区14亿元私募债券项目更新至“已受理”
- 【速看料】【BT金融分析师】英伟达在AI市场加速发展,分析师称其或成最大赢家之一
- 中信建投期货4月17日早间交易策略
- 环球观焦点:精进电动:菏泽这个项目是精进电动北美三合一产线的一部分
- linux用户空间与内核空间通信——Netlink通信机制
- 每日速看!青岛海控集团10亿公司债将付息 票面利率为4.74%
- 环球微动态丨海归留学人员购买国产车有哪些优惠政策?详情介绍
- 快报:4月17日汇市观潮:欧元、英镑和日元技术分析
- 每日时讯!想创业的项目_想创业什么项目好
- 【世界播资讯】驾驶员意外险怎么买
- 大病支付是什么意思
- 公积金封存时间怎么查询
- 保险到期退保险需要什么手续
- 天天速读:买保险的注意事项
- 环球聚焦:你值得拥有更好的_你值得拥有
- 头条:祥生集团发布讣告:创始人陈国祥离世 享年73岁
- 天天最资讯丨千亿房企创始人突然离世,“祥生接班人”接过债务重组重担
- 中南建设:控股股东完成协议转让7915万股 蒋振中成第二大股东
- 环球热讯:春光正好江西多处景区客流量回升
- 观点:越秀资本:股东广州产投参与转融通证券出借业务 出借股份约5017万股
- 【世界快播报】选购金属棉制品要注意什么 选购金属棉制品需要注意的东西
- 全球快资讯:3亿拿地!直播有风险,“薇娅”们盖楼能对冲风险吗?
- 热讯:宝宝满月是30天吗_宝宝满月是30天还是31天
- 环球快播:从飞机周转时间看美国大型航司的运营效率:美联航表现最佳,但与计划时间仍相差10%
- 新能源为何跌跌不休?公募还在坚守?上市公司一季报曝出实锤
- 李宇嘉:70城这一轮房价呈现普涨急涨,但后劲不足
- 祥生实业集团创始人陈国祥因病去世 享年73岁
- 今日讯!祥生集团创始人陈国祥去世
- 世界快播:政协江淮行|铜陵犁桥水镇五一开放 再现江南“梦里水乡”
- 热资讯!新能源股票有哪些
- 环球热资讯!上市公司增发股票是利好还是利空
- 股票ma是什么线
- 今日视点:入股10万退股能退多少
- 十个炒股九个亏的原因是什么
- 快资讯:没躲开“天坑专业”的年轻人
- 全球短讯!亚洲小格式狼_亚洲小格式
- 世界动态:连续多年亏损为什么没有st
- 货币型基金保本吗
- 天天即时看!股票开盘涨停能买进吗
- 每日简讯:恒盛能源是做什么的
- 环球今日讯!每10股转增4股是什么意思1
- 环球关注:楼市进一步出现积极变化
- 白银上市公司
- 全球今亮点!为什么解禁后股票大涨
- 人民币升值利好哪些股票板块
- 证券账户销户后果严重吗
- 当前讯息:解除质押股对股票有什么影响
- 边风炜:现在谈通缩有点早 资本市场或在今年走出小牛
- 快看点丨A股:券商股,股民等待的日子还要多长?
- 每日关注!AI炒股新纪元?头部量化私募幻方宣布全力探索人工智能应用
- 玩转地铁_关于玩转地铁介绍
- 红牛之父的中国心
- 全球热门:肾结石引起的腰痛症状_肾结石能引起腰痛吗
- 全球热讯:保险公司拒赔的几种情况
- 世界球精选!广州公积金比例
- 全球实时:学校保险怎么买
- 不可抗拒因素保险赔付吗
- 百事通!如何查看电子保单车险
- 世界新动态:使用Zuul实现静态资源管理
- 世乒赛冠军赛新乡站:孙颖莎加冕女单冠军
- 环球微头条丨北京存量建筑面积约2.45亿平方米 中心城区占比过半
- 焦点热门:给长辈送礼物送什么好
- 动态焦点:一粒麦子的长征
- 新动态:vivo手机怎么连接小米喷墨打印机_vivo手机怎么连接打印机
- 楼市春暖花开!一线涨二线涨三线也涨,3月全国房价普涨,什么信号?
- 世界今亮点!金丹科技:为保证所有投资者公平地获取公司的信息,公司在定期报告中会披露对应时点的股东信息
- 世界视讯!万豪推出人才品牌;中东版“滴滴”融资4亿美元 | 大公司简报
- 【全球热闻】2023年中小企业网上招聘高校毕业生活动启动
- 58安居客研究院陆骑麟:3月份重点城市新房成交量同环比平均涨幅超40%
- 每日快播:北京土拍新规:同一集团成员企业不得同时报名竞买同一宗地
- 荣获“河南省省长质量奖”,仰韶交出“高质量”答卷!
- 世界热推荐:楼市重磅数据出炉!
- 天天微资讯!MIUI版本更新动态:小米时钟轻松掌握世界时间(第187期)
- 天天观天下!女鞋行业市场多大? 中国女鞋市场深度全景调研及投资前景分析报告2023
- 天天最新:要约收购是什么意思
- 世界播报:上一休一是什么意思
- 【世界速看料】业绩“能打” 半导体狂飙!基金经理的攻守道曝光
- 【天天新视野】新手怎么看懂股票
- 快资讯:四川新网银行股份有限公司是哪个网贷
- 掌证宝是正规平台吗
- 天天速讯:中科星图2022年净利2.43亿同比增长10.19% 总经理邵宗有薪酬77.55万
- 中科通达2022年营收3.91亿 董事长王开学薪酬35.66万
- 快看:盐源县气象台发布大风蓝色预警信号【IV级/一般】【2023-04-15】
- 【环球快播报】地产央企的“匀速马拉松”
- 环球新动态:华住决战中高端;马蜂窝选择做重 | 一周速览
- 3月70城房价出炉:64城新房价格环比上涨 武汉、昆明领涨
- 国家统计局:3月份各线城市商品住宅销售价格环比上涨
- 微头条丨数家房企投诉中建系多马甲拍地 北京火线出新规
- 3月70城房价公布:64城环比上涨,武汉涨1.3%领跑
- 全球今亮点!领涨全国!武汉3月新房价格环涨1.3%,人口1年猛增120万
- 兵役证用来干什么 兵役证有什么用
- 世界快资讯丨丽珠集团发布2022年财报,拟10派16元大手笔分红持续积极践行股东回报
- 吴通控股:公司董事长万卫方先生和荣耀董事长万飙先生不存在亲属关系
- 买SUV送MPV座椅!试驾魏牌蓝山DHT-PHEV
- 环球热文:“北交所一哥”年报出炉:贝特瑞2022年净利润增长超六成 正负极材料出货量齐升
- 世界快讯:史上规模最大广交会今日开幕;美团企业版发布,涵盖差旅服务 | 一周商旅动态
- 环球短讯!“冀”录乡愁丨好山好水好味道
- CFTC商品持仓解读:投机者减少黄金净多头头寸
- 天眼观消博·多彩黔品“走出去”⑧|黄果树“三碗粉”多向发力拓市场
- 天天快播:公积金怎么申请
- 住房公积金是啥
- 【焦点热闻】悟空保什么意思
- 环球动态:什么是大病保险
- 【世界播资讯】公积金干嘛用的
- 时讯:最快多久能测出怀孕_几天能测出怀孕
- 环球今热点:赣深高铁为什么没有吉安站(赣深高铁为什么不接入广州)
- 全球热推荐:五八有限公司已减持我爱我家2355.5万股 占总股本1%
- 环球微资讯!复星旅文太仓复游城订立墙面维修协议 总代价1912万