|
| __api __check_ret struct iio_block * | iio_buffer_stream_create_block (struct iio_buffer_stream *buf_stream, size_t size) |
| | Create a data block for the given buffer stream.
|
| |
| __api void | iio_block_destroy (struct iio_block *block) |
| | Destroy the given block.
|
| |
| __api __check_ret int | iio_block_get_dmabuf_fd (const struct iio_block *block) |
| | Get the file descriptor of the underlying DMABUF object.
|
| |
| __api int | iio_block_disable_cpu_access (struct iio_block *block, bool disable) |
| | Disable CPU access of a given block.
|
| |
| __api void * | iio_block_start (const struct iio_block *block) |
| | Get the start address of the block.
|
| |
| __api void * | iio_block_first (const struct iio_block *block, const struct iio_channel *chn) |
| | Find the first sample of a channel in a block.
|
| |
| __api void * | iio_block_end (const struct iio_block *block) |
| | Get the address after the last sample in a block.
|
| |
| __api __check_ret ssize_t | iio_block_foreach_sample (const struct iio_block *block, const struct iio_channels_mask *mask, ssize_t(*callback)(const struct iio_channel *chn, void *src, size_t bytes, void *d), void *data) |
| | Call the supplied callback for each sample found in a block.
|
| |
| __api int | iio_block_enqueue (struct iio_block *block, size_t bytes_used, bool cyclic) |
| | Enqueue the given iio_block to the buffer's queue.
|
| |
| __api int | iio_block_dequeue (struct iio_block *block, bool nonblock) |
| | Dequeue the given iio_block from the buffer's queue.
|
| |
| __api struct iio_buffer_stream * | iio_block_get_buffer_stream (const struct iio_block *block) |
| | Retrieve a pointer to the iio_buffer_stream structure.
|
| |
| __api int iio_block_disable_cpu_access |
( |
struct iio_block * |
block, |
|
|
bool |
disable |
|
) |
| |
Disable CPU access of a given block.
- Parameters
-
| block | A pointer to an iio_block structure |
| disable | Whether or not to disable CPU access |
NOTE:Disabling CPU access is useful when manipulating DMABUF objects. If CPU access is disabled, the block's internal buffer of samples should not be accessed. Therefore, the following functions should not be called: iio_block_start, iio_block_first, iio_block_end, iio_block_foreach_sample.
| __api void * iio_block_first |
( |
const struct iio_block * |
block, |
|
|
const struct iio_channel * |
chn |
|
) |
| |
Find the first sample of a channel in a block.
- Parameters
-
| block | A pointer to an iio_block structure |
| chn | A pointer to an iio_channel structure |
- Returns
- A pointer to the first sample found, or to the end of the block if no sample for the given channel is present in the block
NOTE: This function, coupled with iio_block_end, can be used to iterate on all the samples of a given channel present in the block, doing the following:
for (void *ptr = iio_block_first(block, chn);
ptr < iio_block_end(block);
ptr += iio_device_get_sample_size(dev, mask)) {
....
}
The iio_channel passed as argument must be from the iio_device that was used to create the iio_buffer and then the iio_block, otherwise the result is undefined.