µ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++.
memory-resource.cpp
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 /*
29  * [Partly inspired from the LLVM libcxx sources].
30  * Copyright (c) 2009-2013 by the contributors listed in
31  * 'LLVM libcxx Credits.txt'. See 'LLVM libcxx License.txt' for details.
32  *
33  * References are to ISO/IEC 14882:2011(E) Third edition (2011-09-01).
34  */
35 
36 #include <cmsis-plus/rtos/os.h>
38 
39 // ----------------------------------------------------------------------------
40 
41 using namespace os;
42 
43 // ----------------------------------------------------------------------------
44 
45 namespace os
46 {
47  namespace estd
48  {
49  // ========================================================================
50 
51  [[noreturn]] void
53  {
54 #if defined(__EXCEPTIONS)
55  throw std::bad_alloc ();
56 #else
57  trace::printf ("bad_alloc()\n");
58  std::abort ();
59 #endif
60  }
61 
62  namespace pmr
63  {
64  // ----------------------------------------------------------------------
65 
68  {
69  trace::printf ("estd::pmr::%s(%p) \n", __func__, res);
70 
72  default_resource = res;
73 
74  return old;
75  }
76 
77  // ------------------------------------------------------------------------
78  } /* namespace pmr */
79  } /* namespace estd */
80 } /* namespace os */
81 
82 // ----------------------------------------------------------------------------
Memory resource manager (abstract class).
Definition: os-memory.h:153
System namespace.
memory_resource * set_default_resource(memory_resource *res) noexcept
Set the default application memory manager.
Single file µOS++ RTOS definitions.
int printf(const char *format,...)
Write a formatted string to the trace device.
Definition: trace.cpp:74
memory_resource * default_resource
void __throw_bad_alloc(void)
void abort(void)
Definition: exit.c:52