cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

buffer.h (1817B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/* The industrial I/O core - generic buffer interfaces.
      3 *
      4 * Copyright (c) 2008 Jonathan Cameron
      5 */
      6
      7#ifndef _IIO_BUFFER_GENERIC_H_
      8#define _IIO_BUFFER_GENERIC_H_
      9#include <linux/sysfs.h>
     10#include <linux/iio/iio.h>
     11
     12struct iio_buffer;
     13
     14enum iio_buffer_direction {
     15	IIO_BUFFER_DIRECTION_IN,
     16	IIO_BUFFER_DIRECTION_OUT,
     17};
     18
     19int iio_push_to_buffers(struct iio_dev *indio_dev, const void *data);
     20
     21int iio_pop_from_buffer(struct iio_buffer *buffer, void *data);
     22
     23/**
     24 * iio_push_to_buffers_with_timestamp() - push data and timestamp to buffers
     25 * @indio_dev:		iio_dev structure for device.
     26 * @data:		sample data
     27 * @timestamp:		timestamp for the sample data
     28 *
     29 * Pushes data to the IIO device's buffers. If timestamps are enabled for the
     30 * device the function will store the supplied timestamp as the last element in
     31 * the sample data buffer before pushing it to the device buffers. The sample
     32 * data buffer needs to be large enough to hold the additional timestamp
     33 * (usually the buffer should be indio->scan_bytes bytes large).
     34 *
     35 * Returns 0 on success, a negative error code otherwise.
     36 */
     37static inline int iio_push_to_buffers_with_timestamp(struct iio_dev *indio_dev,
     38	void *data, int64_t timestamp)
     39{
     40	if (indio_dev->scan_timestamp) {
     41		size_t ts_offset = indio_dev->scan_bytes / sizeof(int64_t) - 1;
     42		((int64_t *)data)[ts_offset] = timestamp;
     43	}
     44
     45	return iio_push_to_buffers(indio_dev, data);
     46}
     47
     48int iio_push_to_buffers_with_ts_unaligned(struct iio_dev *indio_dev,
     49					  const void *data, size_t data_sz,
     50					  int64_t timestamp);
     51
     52bool iio_validate_scan_mask_onehot(struct iio_dev *indio_dev,
     53				   const unsigned long *mask);
     54
     55int iio_device_attach_buffer(struct iio_dev *indio_dev,
     56			     struct iio_buffer *buffer);
     57
     58#endif /* _IIO_BUFFER_GENERIC_H_ */