Commit | Line | Data |
---|---|---|
2235acb2 JC |
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_ | |
2235acb2 JC |
26 | #include "ring_generic.h" |
27 | ||
2235acb2 | 28 | /** |
5565a450 | 29 | * ring_sw_access_funcs - access functions for a software ring buffer |
2235acb2 | 30 | **/ |
5565a450 | 31 | extern const struct iio_ring_access_funcs ring_sw_access_funcs; |
2235acb2 JC |
32 | |
33 | struct iio_ring_buffer *iio_sw_rb_allocate(struct iio_dev *indio_dev); | |
34 | void iio_sw_rb_free(struct iio_ring_buffer *ring); | |
2235acb2 | 35 | #endif /* _IIO_RING_SW_H_ */ |