1 |
/* -*- c++ -*- */ |
2 |
/* |
3 |
* Copyright 2003 Free Software Foundation, Inc. |
4 |
* |
5 |
* This file is part of GNU Radio |
6 |
* |
7 |
* GNU Radio is free software; you can redistribute it and/or modify |
8 |
* it under the terms of the GNU General Public License as published by |
9 |
* the Free Software Foundation; either version 2, or (at your option) |
10 |
* any later version. |
11 |
* |
12 |
* GNU Radio is distributed in the hope that it will be useful, |
13 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 |
* GNU General Public License for more details. |
16 |
* |
17 |
* You should have received a copy of the GNU General Public License |
18 |
* along with GNU Radio; see the file COPYING. If not, write to |
19 |
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
20 |
* Boston, MA 02111-1307, USA. |
21 |
*/ |
22 |
|
23 |
#ifndef _GR_VMCIRCBUF_MMAP_TMPFILE_H_ |
24 |
#define _GR_VMCIRCBUF_MMAP_TMPFILE_H_ |
25 |
|
26 |
#include <gr_vmcircbuf.h> |
27 |
|
28 |
/*! |
29 |
* \brief concrete class to implement circular buffers with mmap and shm_open |
30 |
*/ |
31 |
class gr_vmcircbuf_mmap_tmpfile : public gr_vmcircbuf { |
32 |
public: |
33 |
|
34 |
// CREATORS |
35 |
|
36 |
gr_vmcircbuf_mmap_tmpfile (int size); |
37 |
virtual ~gr_vmcircbuf_mmap_tmpfile (); |
38 |
}; |
39 |
|
40 |
/*! |
41 |
* \brief concrete factory for circular buffers built using mmap and shm_open |
42 |
*/ |
43 |
class gr_vmcircbuf_mmap_tmpfile_factory : public gr_vmcircbuf_factory { |
44 |
private: |
45 |
static gr_vmcircbuf_factory *s_the_factory; |
46 |
|
47 |
public: |
48 |
static gr_vmcircbuf_factory *singleton (); |
49 |
|
50 |
virtual const char *name () const { return "gr_vmcircbuf_mmap_tmpfile_factory"; } |
51 |
|
52 |
/*! |
53 |
* \brief return granularity of mapping, typically equal to page size |
54 |
*/ |
55 |
virtual int granularity (); |
56 |
|
57 |
/*! |
58 |
* \brief return a gr_vmcircbuf, or 0 if unable. |
59 |
* |
60 |
* Call this to create a doubly mapped circular buffer. |
61 |
*/ |
62 |
virtual gr_vmcircbuf *make (int size); |
63 |
}; |
64 |
|
65 |
#endif /* _GR_VMCIRCBUF_MMAP_TMPFILE_H_ */ |