On Thu, Aug 10, 2017 at 10:44:58AM -0400, Weiwei Jia wrote: hi, Anyone can help me to improve this translation ? 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_block() 将会调用额外的软件锁定,但是驱动可以忽略这个调用因为它们可以使用 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 表示其他情况)。 4. 用户态支持 推荐使用的用户态接口是/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 这些变量的内容对应于上面所说的 sysfs 中的“name”,“state”和“type” 的文件。 更多的细节查看 Documentation/ABI/stable/sysfs-class-rfkill. > 2017-08-09 10:25 GMT-04:00 <wangguohao.2009@xxxxxxxxx>: > > > > 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。 > > This sentence is not very readable. How about > "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()将 > > +会其他的软件锁定调用,但是驱动可以忽略这个调用因为它们可以使用 > > This sentence is not readable. Please read your translation again and > again so that anyone could understand it without original English > version. Thank you > > > Best, > Weiwei Jia -- 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