xref: /linux/Documentation/translations/zh_CN/iio/iio_configfs.rst (revision 452f81ed05e2c0762b27ab252dca59aa2457baca)
1*452f81edSYanteng Si.. include:: ../disclaimer-zh_CN.rst
2*452f81edSYanteng Si
3*452f81edSYanteng Si:Original: :doc:`../../../iio/iio_configfs`
4*452f81edSYanteng Si:Translator: Yanteng Si <siyanteng@loongson.cn>
5*452f81edSYanteng Si
6*452f81edSYanteng Si.. _cn_iio_configfs:
7*452f81edSYanteng Si
8*452f81edSYanteng Si
9*452f81edSYanteng Si=====================
10*452f81edSYanteng Si工业 IIO configfs支持
11*452f81edSYanteng Si=====================
12*452f81edSYanteng Si
13*452f81edSYanteng Si1. 概述
14*452f81edSYanteng Si=======
15*452f81edSYanteng Si
16*452f81edSYanteng SiConfigfs是一种内核对象的基于文件系统的管理系统,IIO使用一些可以通过
17*452f81edSYanteng Siconfigfs轻松配置的对象(例如:设备,触发器)。
18*452f81edSYanteng Si
19*452f81edSYanteng Si关于configfs是如何运行的,请查阅Documentation/filesystems/configfs.rst
20*452f81edSYanteng Si了解更多信息。
21*452f81edSYanteng Si
22*452f81edSYanteng Si2. 用法
23*452f81edSYanteng Si=======
24*452f81edSYanteng Si为了使configfs支持IIO,我们需要在编译时选中config的CONFIG_IIO_CONFIGFS
25*452f81edSYanteng Si选项。
26*452f81edSYanteng Si
27*452f81edSYanteng Si然后,挂载configfs文件系统(通常在 /config directory目录下)::
28*452f81edSYanteng Si
29*452f81edSYanteng Si  $ mkdir/config
30*452f81edSYanteng Si  $ mount -t configfs none/config
31*452f81edSYanteng Si
32*452f81edSYanteng Si此时,将创建所有默认IIO组,并可以在/ config / iio下对其进行访问。 下一章
33*452f81edSYanteng Si将介绍可用的IIO配置对象。
34*452f81edSYanteng Si
35*452f81edSYanteng Si3. 软件触发器
36*452f81edSYanteng Si=============
37*452f81edSYanteng Si
38*452f81edSYanteng SiIIO默认configfs组之一是“触发器”组。 挂载configfs后可以自动访问它,并且可
39*452f81edSYanteng Si以在/config/iio/triggers下找到。
40*452f81edSYanteng Si
41*452f81edSYanteng SiIIO软件触发器为创建多种触发器类型提供了支持。 通常在include/linux/iio
42*452f81edSYanteng Si/sw_trigger.h:中的接口下将新的触发器类型实现为单独的内核模块:
43*452f81edSYanteng Si::
44*452f81edSYanteng Si
45*452f81edSYanteng Si  /*
46*452f81edSYanteng Si   * drivers/iio/trigger/iio-trig-sample.c
47*452f81edSYanteng Si   * 一种新触发器类型的内核模块实例
48*452f81edSYanteng Si   */
49*452f81edSYanteng Si  #include <linux/iio/sw_trigger.h>
50*452f81edSYanteng Si
51*452f81edSYanteng Si
52*452f81edSYanteng Si  static struct iio_sw_trigger *iio_trig_sample_probe(const char *name)
53*452f81edSYanteng Si  {
54*452f81edSYanteng Si	/*
55*452f81edSYanteng Si	 * 这将分配并注册一个IIO触发器以及其他触发器类型特性的初始化。
56*452f81edSYanteng Si	 */
57*452f81edSYanteng Si  }
58*452f81edSYanteng Si
59*452f81edSYanteng Si  static int iio_trig_sample_remove(struct iio_sw_trigger *swt)
60*452f81edSYanteng Si  {
61*452f81edSYanteng Si	/*
62*452f81edSYanteng Si	 * 这会废弃iio_trig_sample_probe中的操作
63*452f81edSYanteng Si	 */
64*452f81edSYanteng Si  }
65*452f81edSYanteng Si
66*452f81edSYanteng Si  static const struct iio_sw_trigger_ops iio_trig_sample_ops = {
67*452f81edSYanteng Si	.probe		= iio_trig_sample_probe,
68*452f81edSYanteng Si	.remove		= iio_trig_sample_remove,
69*452f81edSYanteng Si  };
70*452f81edSYanteng Si
71*452f81edSYanteng Si  static struct iio_sw_trigger_type iio_trig_sample = {
72*452f81edSYanteng Si	.name = "trig-sample",
73*452f81edSYanteng Si	.owner = THIS_MODULE,
74*452f81edSYanteng Si	.ops = &iio_trig_sample_ops,
75*452f81edSYanteng Si  };
76*452f81edSYanteng Si
77*452f81edSYanteng Simodule_iio_sw_trigger_driver(iio_trig_sample);
78*452f81edSYanteng Si
79*452f81edSYanteng Si每种触发器类型在/config/iio/triggers下都有其自己的目录。 加载iio-trig-sample
80*452f81edSYanteng Si模块将创建“ trig-sample”触发器类型目录/config/iio/triggers/trig-sample.
81*452f81edSYanteng Si
82*452f81edSYanteng Si我们支持以下中断源(触发器类型)
83*452f81edSYanteng Si
84*452f81edSYanteng Si	* hrtimer,使用高分辨率定时器作为中断源
85*452f81edSYanteng Si
86*452f81edSYanteng Si3.1 Hrtimer触发器创建与销毁
87*452f81edSYanteng Si---------------------------
88*452f81edSYanteng Si
89*452f81edSYanteng Si加载iio-trig-hrtimer模块将注册hrtimer触发器类型,从而允许用户在
90*452f81edSYanteng Si/config/iio/triggers/hrtimer下创建hrtimer触发器。
91*452f81edSYanteng Si
92*452f81edSYanteng Si例如::
93*452f81edSYanteng Si
94*452f81edSYanteng Si  $ mkdir /config/iio/triggers/hrtimer/instance1
95*452f81edSYanteng Si  $ rmdir /config/iio/triggers/hrtimer/instance1
96*452f81edSYanteng Si
97*452f81edSYanteng Si每个触发器可以具有一个或多个独特的触发器类型的属性。
98*452f81edSYanteng Si
99*452f81edSYanteng Si3.2 "hrtimer" 触发器类型属性
100*452f81edSYanteng Si----------------------------
101*452f81edSYanteng Si
102*452f81edSYanteng Si"hrtimer”触发器类型没有来自/config dir的任何可配置属性。
103