From: "guohao.w" <wangguohao.2009@xxxxxxxxx> Signed-off-by: guohao.w <wangguohao.2009@xxxxxxxxx> --- Documentation/translations/zh_CN/rfkill.txt | 117 ++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 Documentation/translations/zh_CN/rfkill.txt diff --git a/Documentation/translations/zh_CN/rfkill.txt b/Documentation/translations/zh_CN/rfkill.txt new file mode 100644 index 000000000000..2c90f5733551 --- /dev/null +++ b/Documentation/translations/zh_CN/rfkill.txt @@ -0,0 +1,117 @@ +Chinese translated version of Documentation/rfkill.txt + +If you have any comment or update to the content, please post to LKML directly. +However, if you have problem communicating in English you can also ask the +Chinese maintainer for help. Contact the Chinese maintainer, if this +translation is outdated or there is problem with translation. + +Chinese maintainer: guohao.wang <wangguohao.2009@xxxxxxxxx> +--------------------------------------------------------------------- +Documentation/rfkill.txt的中文翻译 + +如果想评论或更新本文的内容,请直接发信到LKML。如果你使用英文交流有困难的话,也可 +以向中文版维护者求助。如果本翻译更新不及时或者翻译存在问题,请联系中文版维护者。 + +中文版维护者:guohao.wang <wangguhoao.2009@xxxxxxxxx> +中文版翻译者:guohao.wang <wangguohao.2009@xxxxxxxxx> +中文版校译者:Lily <1517048147@xxxxxx> +以下为正文 +--------------------------------------------------------------------- + + +rfkill - RF kill 开关的支持 +=============================== + +1. 介绍 +2. 实现细节 +3. 内核API +4. 用户空间支持 + + +1. 介绍 + +rfkill子系统提供一个通用接口来禁用任意系统中的射频发射器。当发射器被锁定时,它 +将不再消耗任何电力。 + +这个子系统也具有响应按键操作来禁用特定种类发射器(或全部种类)的能力。这个是适 +用于关闭发射器的场合,比如说在飞行器上。 + +rfkill子系统提供了“硬”和“软”锁定的概念,它们意思几乎没有区别(断开 == 发射器关 +机), +而真正的区别在于它们状态是否能被改变: + - 硬锁定:只读射频设备锁定,它不能被软件修改。 + - 软锁定:可写的射频设备锁定(不需可读性),它可被系统软件设置。 + +rfkill子系统有两个被记录在kernel-parameters.txt的参数rfkill.default_state 与 +rfkill.master_switch_mode。 + +2. 实现细节 + +rfkill 子系统是由三个主要部分组成: + * rfkill核心, + * 已被弃用的rfkill-input模块(一个输入层的handler,被用户空间策略代码替换), + * rfkill驱动。 + +rfkill核心为驱动程序在内核中注册它们的射频发生器的打开和关闭的方法提供API,同时 +使系统知道硬件的禁用状态也许在设备中被实现。 + +rfkill核心代码还会提醒用户空间状态的改变,并提供为用户空间提供一个查询当前状态的 +方法。更多信息见下节“用户空间支持”。 + +当设备被硬锁定时(通过调用rfkill_set_hw_state()或query_hw_block)set_bloack()将 +会其他的软件锁定调用,但是驱动可以忽略这个调用因为它们可以使用 +rfkill_set_hw_state()的返回值来同步软件状态以此来替代set_block()调用的追踪。事 +实上,驱动应该使用rfkill_set_hw_state()的返回值除非硬件的确分开跟踪它的软锁定和 +硬锁定。 + +3. 内核API + +设备发射器的驱动通常都实现一个rfkill的驱动。 + +如果rfkill仅仅是个按钮,平台驱动也许实现输入设备。如果这个按钮要影响硬件你需要 +实现一个rfkill驱动取代平台驱动。如果平台提供一个开/关发射器的方法,以上方法同 +样适用。 + +对部分平台,在挂起/休眠期间修改硬件状态是非常可能的,这样的情况下在恢复时候以 +当前状态更新rfkill核心的状态很有必要。 + +去创建一个rfkill驱动,驱动的Kconfig需要有 + + depends on RFKILL || !RFKILL + +来确保当rfkill是模块时驱动不被编译进内核。!RFKILL允许驱动在rfkill没有被配置的 +情况下编译,这种情况所有的rfkill API 仍然可以被使用但是几乎什么都没有被编译进去。 + +当状态改变正在发生时调用rfkill_set_hw_state()需要rfkill驱动可以进行硬锁定,除非它 +们也可以分配poll_hw_block()回调(然后rfkill核心将会轮训设备)。不要这样做除非你 +不能通过它方法获取事件。 + +RFKill 提供一个每开关LED触发器,可以根据开关的状态驱动LED(LED_FULL表示断开, +LED_OFF表示其他情况)。 + +5. 用户空间支持 + +被推荐使用的用户态接口是/dev/rfkill,它属于杂项字符设备,它允许用户态获取和设置 +rfkill的状态来设置硬件。它也通知用户态设备的添加和移除。API是一个简单的读/写 +API,它在linux/rfkill.h中定义,有个ioctl允许关闭在kernel过渡期间废弃的输入 +handler。 + +除了一个ioctl,与内核的通信是通过“struct rfkill_event”实例read()和write()来 +完成。 在这个结构体中,软锁定和硬锁定块被正确区分(不同于sysfs,如下),用户空间 +能够获得系统中所有rfkill设备的一致的快照。 此外,切换所有rfkill驱动(或指定类 +型的所有驱动程序)的状态可能更新所有热插拔设备的默认状态。 + +应用程序打开/dev/rfkill后,它可以读到所有设备的当前状态。可以通过轮询热插拔描述 +符,或状态更改事件,在或者侦听rfkill核心框架发出的uevent来获取修改。 + +此外,每个rfkill设备都注册在sysfs并发出uevents。 + +rfkill设备发出uevents(具有“更改”的操作),并设置以下环境变量: + +RFKILL_NAME +RFKILL_STATE +RFKILL_TYPE + +这些变量的内容对应于上面解释的“name”,“state”和“type” 的sysfs文件。 + +更多的细节查看 Documentation/ABI/stable/sysfs-class-rfkill. -- 2.13.4 -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html