µOS++ IIIe Reference  v6.3.15
“Perfekt ist nicht gut genug”
The third edition of µOS++, a POSIX inspired open source system, written in C++.
os-inlines.h
Go to the documentation of this file.
1 /*
2  * This file is part of the µOS++ distribution.
3  * (https://github.com/micro-os-plus)
4  * Copyright (c) 2016 Liviu Ionescu.
5  *
6  * Permission is hereby granted, free of charge, to any person
7  * obtaining a copy of this software and associated documentation
8  * files (the "Software"), to deal in the Software without
9  * restriction, including without limitation the rights to use,
10  * copy, modify, merge, publish, distribute, sublicense, and/or
11  * sell copies of the Software, and to permit persons to whom
12  * the Software is furnished to do so, subject to the following
13  * conditions:
14  *
15  * The above copyright notice and this permission notice shall be
16  * included in all copies or substantial portions of the Software.
17  *
18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
20  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22  * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25  * OTHER DEALINGS IN THE SOFTWARE.
26  */
27 
28 #ifndef CMSIS_PLUS_RTOS_OS_INLINES_H_
29 #define CMSIS_PLUS_RTOS_OS_INLINES_H_
30 
31 /*
32  * References are to ISO/IEC 14882:2011(E) Third edition (2011-09-01)
33  */
34 
35 // ----------------------------------------------------------------------------
36 #if defined(__cplusplus)
37 
38 namespace os
39 {
40  namespace rtos
41  {
42  namespace internal
43  {
55  inline void*
56  object_named_system::operator new (std::size_t bytes)
57  {
58  assert (!interrupts::in_handler_mode ());
59 
60  return rtos::memory::allocator<char> ().allocate (bytes);
61  }
62 
73  inline void*
74  object_named_system::operator new[] (std::size_t bytes)
75  {
76  // Forward array allocation to single element allocation.
77  return operator new (bytes);
78  }
79 
92  inline void*
93  object_named_system::operator new (std::size_t, void* ptr)
94  {
95  return ptr;
96  }
97 
109  inline void*
110  object_named_system::operator new[] (std::size_t bytes, void* ptr)
111  {
112  // Forward array allocation to single element allocation.
113  return operator new (bytes, ptr);
114  }
115 
133  inline void
134  object_named_system::operator delete (void* ptr, std::size_t bytes)
135  {
136  assert (!interrupts::in_handler_mode ());
137 
138  rtos::memory::allocator<char> ().deallocate (
139  static_cast<char*> (ptr), bytes);
140  }
141 
154  inline void
155  object_named_system::operator delete[] (void* ptr, std::size_t bytes)
156  {
157  // Forward array deallocation to single element deallocation.
158  operator delete (ptr, bytes);
159  }
160 
161  } /* namespace internal */
162  } /* namespace rtos */
163 } /* namespace os */
164 
165 #endif /* __cplusplus */
166 
167 // ----------------------------------------------------------------------------
168 
169 #endif /* CMSIS_PLUS_RTOS_OS_INLINES_H_ */
System namespace.
Standard allocator based on the RTOS system default memory manager.
Definition: os-decls.h:82
bool in_handler_mode(void)
Check if the CPU is in handler mode.
Definition: os-sched.h:1091