1 /* The industrial I/O simple minimally locked ring buffer. 2 * 3 * Copyright (c) 2008 Jonathan Cameron 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 as published by 7 * the Free Software Foundation. 8 * 9 * This code is deliberately kept separate from the main industrialio I/O core 10 * as it is intended that in the future a number of different software ring 11 * buffer implementations will exist with different characteristics to suit 12 * different applications. 13 * 14 * This particular one was designed for a data capture application where it was 15 * particularly important that no userspace reads would interrupt the capture 16 * process. To this end the ring is not locked during a read. 17 * 18 * Comments on this buffer design welcomed. It's far from efficient and some of 19 * my understanding of the effects of scheduling on this are somewhat limited. 20 * Frankly, to my mind, this is the current weak point in the industrial I/O 21 * patch set. 22 */ 23 24 #ifndef _IIO_RING_SW_H_ 25 #define _IIO_RING_SW_H_ 26 #include "buffer.h" 27 28 struct iio_buffer *iio_sw_rb_allocate(struct iio_dev *indio_dev); 29 void iio_sw_rb_free(struct iio_buffer *ring); 30 #endif /* _IIO_RING_SW_H_ */ 31