Max OS 0.3
Loading...
Searching...
No Matches
memorymanagement.h File Reference

Defines a MemoryManager class for handling memory allocation and deallocation. More...

#include <cstddef>
#include <cstdint>
#include <system/multiboot.h>
#include <memory/virtual.h>

Go to the source code of this file.

Classes

struct  MaxOS::memory::MemoryChunk
 A span of memory in the heap, can be allocated or free. Used as a node in a doubly linked list. More...
 
class  MaxOS::memory::MemoryManager
 Handles memory allocation and deallocation. More...
 

Functions

voidoperator new (size_t size) throw ()
 Overloaded new operator, allocates memory using the KERNEL memory manager.
 
voidoperator new[] (size_t size) throw ()
 Overloaded new operator, allocates memory using the KERNEL memory manager.
 
voidoperator new (size_t size, void *pointer)
 Overloaded new operator, allocates memory using the KERNEL memory manager.
 
voidoperator new[] (size_t size, void *pointer)
 Overloaded new operator, allocates memory using the KERNEL memory manager.
 
void operator delete (void *pointer)
 Overloaded delete operator, frees memory using the KERNEL memory manager.
 
void operator delete[] (void *pointer)
 Overloaded delete operator, frees memory using the KERNEL memory manager.
 
void operator delete (void *pointer, size_t size)
 Overloaded delete operator, frees memory using the KERNEL memory manager.
 
void operator delete[] (void *pointer, size_t size)
 Overloaded delete operator, frees memory using the KERNEL memory manager.
 

Variables

constexpr size_t MaxOS::memory::CHUNK_ALIGNMENT = 0x10
 How many bytes the chunks should be a multiple of (round up to this)
 

Detailed Description

Defines a MemoryManager class for handling memory allocation and deallocation.

Date
20th October 2022
Author
Max Tyson

Definition in file memorymanagement.h.

Function Documentation

◆ operator delete() [1/2]

void operator delete ( void pointer)

Overloaded delete operator, frees memory using the KERNEL memory manager.

Parameters
pointerThe pointer to the memory to free

Definition at line 379 of file memorymanagement.cpp.

379 {
380
381 // Handle the memory freeing
383}
static void kfree(void *pointer)
Frees a block of memory using the kernel memory manager.

References MaxOS::memory::MemoryManager::kfree().

◆ operator delete() [2/2]

void operator delete ( void pointer,
size_t  size 
)

Overloaded delete operator, frees memory using the KERNEL memory manager.

Parameters
pointerThe pointer to the memory to free
sizeThe size of the memory to free - ignored in this implementation

Definition at line 402 of file memorymanagement.cpp.

402 {
403
404 // Handle the memory freeing
406}

References MaxOS::memory::MemoryManager::kfree().

◆ operator delete[]() [1/2]

void operator delete[] ( void pointer)

Overloaded delete operator, frees memory using the KERNEL memory manager.

Parameters
pointerThe pointer to the memory to free

Definition at line 390 of file memorymanagement.cpp.

390 {
391
392 // Handle the memory freeing
394}

References MaxOS::memory::MemoryManager::kfree().

◆ operator delete[]() [2/2]

void operator delete[] ( void pointer,
size_t  size 
)

Overloaded delete operator, frees memory using the KERNEL memory manager.

Parameters
pointerThe pointer to the memory to free
sizeThe size of the memory to free - ignored in this implementation

Definition at line 414 of file memorymanagement.cpp.

414 {
415
416 // Handle the memory freeing
418}

References MaxOS::memory::MemoryManager::kfree().

◆ operator new() [1/2]

void * operator new ( size_t  size)
throw (
)

Overloaded new operator, allocates memory using the KERNEL memory manager.

Parameters
sizeThe size of the memory to allocate
Returns
The pointer to the allocated memory

Definition at line 331 of file memorymanagement.cpp.

331 {
332
333 // Handle the memory allocation
335}
static void * kmalloc(size_t size)
Allocates a block of memory in the KERNEL space.

References MaxOS::memory::MemoryManager::kmalloc().

◆ operator new() [2/2]

void * operator new ( size_t  size,
void pointer 
)

Overloaded new operator, allocates memory using the KERNEL memory manager.

Parameters
pointerThe pointer to the memory to allocate
sizeThe size of the memory to free - ignored in this implementation
Returns
The pointer to the memory

Definition at line 356 of file memorymanagement.cpp.

356 {
357
358 return pointer;
359}

◆ operator new[]() [1/2]

void * operator new[] ( size_t  size)
throw (
)

Overloaded new operator, allocates memory using the KERNEL memory manager.

Parameters
sizeThe size of the memory to allocate
Returns
The pointer to the allocated memory

Definition at line 343 of file memorymanagement.cpp.

343 {
344
345 // Handle the memory allocation
347}

References MaxOS::memory::MemoryManager::kmalloc().

◆ operator new[]() [2/2]

void * operator new[] ( size_t  size,
void pointer 
)

Overloaded new operator, allocates memory using the KERNEL memory manager.

Parameters
sizeThe size of the memory to free - ignored in this implementation
pointerThe pointer to the memory to allocate
Returns
The pointer to the memory

Definition at line 368 of file memorymanagement.cpp.

368 {
369
370
371 return pointer;
372}

Variable Documentation

◆ CHUNK_ALIGNMENT

constexpr size_t MaxOS::memory::CHUNK_ALIGNMENT = 0x10
constexpr

How many bytes the chunks should be a multiple of (round up to this)

Definition at line 34 of file memorymanagement.h.

Referenced by MaxOS::memory::MemoryManager::align().