博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rf-kill
阅读量:5250 次
发布时间:2019-06-14

本文共 1099 字,大约阅读时间需要 3 分钟。

1、介绍 rfkill子系统在系统对于禁止无线设备工作提供了一个通用的接口,当无线设备被阻止工作时,它就不会在消耗功率。这个子系统在用户开关按钮上提供了一个方法去阻止某种无线设备的工作。这是用于某些环境下(比如飞机) ,无线设备就必须被关闭。子系统有硬件和软件模块的概念。在概念上这些意义很小,关于在于它能否被改变。 2、实现细节 rfkill核心为内核驱动提供了API,这是为了在内核中注册这些无线设备。这种方法的打开或者关闭 是为了让系统知道硬件设备的工作状态。当设备是硬件模块(可以被rfkill_set_hw_state() 或者from query_hw_block调用),set_block()可以被其他的软件模块调用,驱动程序忽视这个方法的调用,他们可以用rfkill_set_hw_state()的返回值去同步软件的状态而不是一直在调用set_block(),实际上,驱动程序应该用rfkill_set_hw_state()的返回值,除非硬件实际上一直保持软件和硬件的独立。 3、内核API 无线设备的驱动基本上实现了rfkill的驱动。如果rfkill开关只是一个按钮,平台驱动可能实现输入设备驱动。这个开关影响硬件的工作,所以你需要实现rfkill的驱动。平台需要提供一个方法去开(关)设备的方法。当一个状态改变的时候,除非他们分配了poll_hw_block()回调,rfkill_set_hw_state()就会被调用。 4、userspace 支持 被推荐使用的用户接口是/dev/rfkill,这是一个混合的字符设备,他允许用户空间使用和设置rfkill设备的状态。这也通知用户空间关于设备的增加和移除。在linux/rfkill.h中的API也就是一般简单的读/写API,对于打开或者关闭的过渡时期,ioctl需要传入关闭的状态。 除了ioctl,和内核通信通过read()和write(),而不是struct rfkill_event。在这个结构体中,软件和硬件模块被分开。用户空间在系统中能得到rfkill驱动的状态。当然rfkill驱动的状态同事也得更新默认热插设备的状态。当一个应用打开/dev/rfkill,他可以读取到当前所有设备的状态。通过查询设备变化的消息和监听rfkill core发出的uevent,设备状态的变化可以被获得。另外,每个 rfkill的设备在sysfs和 emits uevents 中被注册。

转载于:https://www.cnblogs.com/fengidri/archive/2012/06/10/2757513.html

你可能感兴趣的文章
Python Web框架Django (五)
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
JavaScript可否多线程? 深入理解JavaScript定时机制
查看>>
IOS基础学习
查看>>
Java基础教程——网络基础知识
查看>>
Kruskal基础最小生成树
查看>>
浅谈算法和数据结构: 一 栈和队列
查看>>
【hdu 1429】胜利大逃亡(续)
查看>>
图论-次短路求法
查看>>
What's New for Visual C# 6.0
查看>>
ExtJs学习笔记之ComboBox组件
查看>>
关于收费软件
查看>>
getopt_long
查看>>
TensorFlow MNIST CNN 代码
查看>>
javascript之Style物
查看>>