Mir
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
anonymous_shm_file.h
Go to the documentation of this file.
1 /*
2  * Copyright © 2013 Canonical Ltd.
3  *
4  * This program is free software: you can redistribute it and/or modify it
5  * under the terms of the GNU Lesser General Public License version 3,
6  * as published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * Authored by:
17  * Alexandros Frantzis <alexandros.frantzis@canonical.com>
18  */
19 
20 #ifndef MIR_GRAPHICS_MESA_ANONYMOUS_SHM_FILE_H_
21 #define MIR_GRAPHICS_MESA_ANONYMOUS_SHM_FILE_H_
22 
23 #include "shm_file.h"
24 
25 namespace mir
26 {
27 namespace graphics
28 {
29 namespace mesa
30 {
31 
32 namespace detail
33 {
34 class FdHandle
35 {
36 public:
37  FdHandle(int fd);
38  FdHandle(FdHandle&&);
39  ~FdHandle() noexcept;
40 
41  operator int() const;
42 
43 private:
44  FdHandle(FdHandle const&) = delete;
45  FdHandle& operator=(FdHandle const&) = delete;
46  int fd;
47 };
48 
49 class MapHandle
50 {
51 public:
52  MapHandle(int fd, size_t size);
53  ~MapHandle() noexcept;
54 
55  operator void*() const;
56 
57 private:
58  MapHandle(MapHandle const&) = delete;
59  MapHandle& operator=(MapHandle const&) = delete;
60  size_t const size;
61  void* const mapping;
62 };
63 }
64 
65 class AnonymousShmFile : public ShmFile
66 {
67 public:
68  AnonymousShmFile(size_t size);
69 
70  void* base_ptr() const;
71  int fd() const;
72 
73 private:
74  detail::FdHandle const fd_;
75  detail::MapHandle const mapping;
76 };
77 
78 }
79 }
80 }
81 
82 #endif /* MIR_GRAPHICS_MESA_ANONYMOUS_SHM_FILE_H_ */
Definition: anonymous_shm_file.h:34
MapHandle(int fd, size_t size)
Definition: anonymous_shm_file.cpp:91
FdHandle(int fd)
Definition: anonymous_shm_file.cpp:63
Definition: anonymous_shm_file.h:65
~FdHandle() noexcept
Definition: anonymous_shm_file.cpp:76
int fd() const
Definition: anonymous_shm_file.cpp:126
void * base_ptr() const
Definition: anonymous_shm_file.cpp:121
Definition: anonymous_shm_file.h:49
Definition: shm_file.h:32
int const size
Definition: make_socket_rpc_channel.cpp:50
~MapHandle() noexcept
Definition: anonymous_shm_file.cpp:100
AnonymousShmFile(size_t size)
Definition: anonymous_shm_file.cpp:115

Copyright © 2012,2013 Canonical Ltd.
Generated on Fri Apr 11 21:14:53 UTC 2014