IIO子系统文档 ring.txt 翻译

来源:互联网 发布:淘宝居家日用类目 编辑:程序博客网 时间:2024/05/16 14:21
IIO内的缓冲区支持


本文档旨在概述缓冲区可能提供的功能以及在IIO中如何指定它。有关给定缓冲区实现的更多具体信息,请参阅源代码中的注释。请注意,某些驱动程序允许通过Kconfig选项在编译时选择缓冲区实现。

给定的缓冲区实现通常嵌入一个结构iio_ring_buffer,它是提供给IIO核心的指针。通常通过container_of函数来访问嵌入结构。

struct iio_ring_buffer包含一个struct iio_ring_setup_ops * setup_ops
它又包含4个函数指针
(preenable,postenable,predisable和postdisable)。
这些用于在核心任一侧执行设备特定步骤,以改变其当前模式以指示缓冲区被启用或禁用(以及适当的启用触发等)。

另外在struct iio_ring_buffer中是一个struct iio_ring_access_funcs。
这里的函数指针用于允许内核处理尽可能多的缓冲区功能。注意几乎所有这些都是可选的。

mark_in_use,unmark_in_use
  基本上表明,不应该改变缓冲区状态
  将影响被捕获的数据的形式(例如,扫描元素或长度)

store_to
  如果可能,将数据推送到缓冲区。

READ_LAST
  如果可能的话,从缓冲区获取最近的扫描(不删除)。
  这提供了轮询功能,而环缓冲是在没有从设备单独读取的情况下使用。

rip_first_n
  主要的缓冲区读取功能。请注意,它可能不会返回尽可能多的数据请求。

mark_param_changed

  用于表示有所改变。与...一起使用

request_update
  如果参数已经改变,需要重新初始化或配置这将触发它的缓冲区。

get_bytes_per_datum,set_bytes_per_datum
  获取/设置完整扫描的字节数。 (所有样本+时间戳)

get_length / set_length
  获取/设置缓冲区可能保存的完整扫描数。

is_enabled

  查询环形缓冲区是否在使用中

启用
  启动环形缓冲区。