FreeNOS
PageAllocator.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2009 Niek Linnenbank
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #ifndef __LIB_LIBRUNTIME_PAGEALLOCATOR_H
19 #define __LIB_LIBRUNTIME_PAGEALLOCATOR_H
20 
21 #include <FreeNOS/Constant.h>
22 #include <Types.h>
23 #include "Allocator.h"
24 
36 class PageAllocator : public Allocator
37 {
38  private:
39 
41  static const Size MinimumAllocationSize = PAGESIZE * 32U;
42 
43  public:
44 
50  PageAllocator(const Range range);
51 
57  virtual Size available() const;
58 
67  virtual Result allocate(Range & args);
68 
82  virtual Result release(const Address addr);
83 
84  private:
85 
88 };
89 
95 #endif /* __LIB_LIBRUNTIME_PAGEALLOCATOR_H */
PageAllocator::PageAllocator
PageAllocator(const Range range)
Class constructor.
Definition: PageAllocator.cpp:21
PageAllocator
Allocates virtual memory using the memory server.
Definition: PageAllocator.h:36
Types.h
Allocator.h
Allocator
Memory Allocator.
Definition: Allocator.h:46
PageAllocator::release
virtual Result release(const Address addr)
Release memory.
Definition: PageAllocator.cpp:73
PageAllocator::allocate
virtual Result allocate(Range &args)
Allocate memory.
Definition: PageAllocator.cpp:32
PAGESIZE
#define PAGESIZE
ARM uses 4K pages.
Definition: ARMConstant.h:97
PageAllocator::MinimumAllocationSize
static const Size MinimumAllocationSize
Minimum size required for allocations.
Definition: PageAllocator.h:41
Address
unsigned long Address
A memory address.
Definition: Types.h:131
Size
unsigned int Size
Any sane size indicator cannot go negative.
Definition: Types.h:128
Allocator::Range
Describes a range of memory.
Definition: Allocator.h:65
PageAllocator::m_allocated
Size m_allocated
Total number of bytes allocated.
Definition: PageAllocator.h:87
PageAllocator::available
virtual Size available() const
Get memory available.
Definition: PageAllocator.cpp:27
Allocator::Result
Result
Allocation results.
Definition: Allocator.h:53