diff options
author | Alexis211 <alexis211@gmail.com> | 2009-08-21 23:59:19 +0200 |
---|---|---|
committer | Alexis211 <alexis211@gmail.com> | 2009-08-21 23:59:19 +0200 |
commit | 74e721676ddd5d996ccf2e1d35da57320f658609 (patch) | |
tree | b39d766c8e27a654c89c2435131e5eaf193125d8 /Source/Kernel/MemoryManager | |
parent | ae803baa4e0ec584c7afd3f6d55f2e6b32010b46 (diff) | |
download | Melon-74e721676ddd5d996ccf2e1d35da57320f658609.tar.gz Melon-74e721676ddd5d996ccf2e1d35da57320f658609.zip |
Kernel now loads in higher half, and uses a VT for output.
Diffstat (limited to 'Source/Kernel/MemoryManager')
-rw-r--r-- | Source/Kernel/MemoryManager/Mem.ns.cpp | 23 | ||||
-rw-r--r-- | Source/Kernel/MemoryManager/Mem.ns.h | 16 |
2 files changed, 39 insertions, 0 deletions
diff --git a/Source/Kernel/MemoryManager/Mem.ns.cpp b/Source/Kernel/MemoryManager/Mem.ns.cpp new file mode 100644 index 0000000..d8bfc4f --- /dev/null +++ b/Source/Kernel/MemoryManager/Mem.ns.cpp @@ -0,0 +1,23 @@ +#include <Core/common.wtf.h> + +namespace Mem { + +bool kheapUsable = false; +u32int placementAddress, kheapFree; + +void *kallocInternal(u32int sz, bool align) { + if (align && (placementAddress & 0xFFFFF000)) { + placementAddress &= 0xFFFFF000; + placementAddress += 0x1000; + } + u32int temp = placementAddress; + placementAddress += sz; + return (void*)temp; +} + +void *kalloc(u32int sz, bool align) { + if (!kheapUsable) return kallocInternal(sz, align); + return 0; +} + +} diff --git a/Source/Kernel/MemoryManager/Mem.ns.h b/Source/Kernel/MemoryManager/Mem.ns.h new file mode 100644 index 0000000..b3177a4 --- /dev/null +++ b/Source/Kernel/MemoryManager/Mem.ns.h @@ -0,0 +1,16 @@ +#ifdef DEF_COMMON + +#ifndef DEF_MEM_NS_H +#define DEF_MEM_NS_H + +namespace Mem { + extern u32int placementAddress, kheapFree; + + void *kalloc(u32int sz, bool align = false); + void kfree(void *ptr); + +} + +#endif + +#endif |