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
如果参数已经改变,需要重新初始化或配置这将触发它的缓冲区。
get_bytes_per_datum,set_bytes_per_datum
获取/设置完整扫描的字节数。 (所有样本+时间戳)
get_length / set_length
获取/设置缓冲区可能保存的完整扫描数。
is_enabled
启动环形缓冲区。
本文档旨在概述缓冲区可能提供的功能以及在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
查询环形缓冲区是否在使用中
启用启动环形缓冲区。