diff options
author | Liav A <liavalb@gmail.com> | 2020-02-09 18:15:58 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-02-09 19:38:17 +0100 |
commit | 99ea80695e64d358fa06c0f1d101f953c5ebf44b (patch) | |
tree | fe806778d9ea0ea2f8b189e53e27b9c2027773f9 /Kernel/VM | |
parent | 7c4dd0c8cf251b8a8f0ff26058836bcab0b9ce6a (diff) | |
download | serenity-99ea80695e64d358fa06c0f1d101f953c5ebf44b.zip |
Kernel: Use VirtualAddress & PhysicalAddress classes from LibBareMetal
Diffstat (limited to 'Kernel/VM')
-rw-r--r-- | Kernel/VM/AnonymousVMObject.h | 2 | ||||
-rw-r--r-- | Kernel/VM/PhysicalAddress.h | 66 | ||||
-rw-r--r-- | Kernel/VM/PhysicalPage.h | 2 | ||||
-rw-r--r-- | Kernel/VM/RangeAllocator.h | 2 | ||||
-rw-r--r-- | Kernel/VM/VirtualAddress.h | 77 |
5 files changed, 3 insertions, 146 deletions
diff --git a/Kernel/VM/AnonymousVMObject.h b/Kernel/VM/AnonymousVMObject.h index 29a4d19538..2bdbb1cde6 100644 --- a/Kernel/VM/AnonymousVMObject.h +++ b/Kernel/VM/AnonymousVMObject.h @@ -26,8 +26,8 @@ #pragma once -#include <Kernel/VM/PhysicalAddress.h> #include <Kernel/VM/VMObject.h> +#include <LibBareMetal/Memory/PhysicalAddress.h> class AnonymousVMObject : public VMObject { public: diff --git a/Kernel/VM/PhysicalAddress.h b/Kernel/VM/PhysicalAddress.h deleted file mode 100644 index 4b51a4fd18..0000000000 --- a/Kernel/VM/PhysicalAddress.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#pragma once - -#include <AK/LogStream.h> -#include <AK/Types.h> - -class PhysicalAddress { -public: - PhysicalAddress() {} - explicit PhysicalAddress(uintptr_t address) - : m_address(address) - { - } - - PhysicalAddress offset(uintptr_t o) const { return PhysicalAddress(m_address + o); } - uintptr_t get() const { return m_address; } - void set(uintptr_t address) { m_address = address; } - void mask(uintptr_t m) { m_address &= m; } - - bool is_null() const { return m_address == 0; } - - u8* as_ptr() { return reinterpret_cast<u8*>(m_address); } - const u8* as_ptr() const { return reinterpret_cast<const u8*>(m_address); } - - PhysicalAddress page_base() const { return PhysicalAddress(m_address & 0xfffff000); } - - bool operator==(const PhysicalAddress& other) const { return m_address == other.m_address; } - bool operator!=(const PhysicalAddress& other) const { return m_address != other.m_address; } - bool operator>(const PhysicalAddress& other) const { return m_address > other.m_address; } - bool operator>=(const PhysicalAddress& other) const { return m_address >= other.m_address; } - bool operator<(const PhysicalAddress& other) const { return m_address < other.m_address; } - bool operator<=(const PhysicalAddress& other) const { return m_address <= other.m_address; } - -private: - uintptr_t m_address { 0 }; -}; - -inline const LogStream& operator<<(const LogStream& stream, PhysicalAddress value) -{ - return stream << 'P' << value.as_ptr(); -} diff --git a/Kernel/VM/PhysicalPage.h b/Kernel/VM/PhysicalPage.h index 2d916de1df..2d96307b00 100644 --- a/Kernel/VM/PhysicalPage.h +++ b/Kernel/VM/PhysicalPage.h @@ -29,7 +29,7 @@ #include <AK/NonnullRefPtr.h> #include <Kernel/Assertions.h> #include <Kernel/Heap/SlabAllocator.h> -#include <Kernel/VM/PhysicalAddress.h> +#include <LibBareMetal/Memory/PhysicalAddress.h> class PhysicalPage { friend class MemoryManager; diff --git a/Kernel/VM/RangeAllocator.h b/Kernel/VM/RangeAllocator.h index 999282deff..a820348542 100644 --- a/Kernel/VM/RangeAllocator.h +++ b/Kernel/VM/RangeAllocator.h @@ -29,7 +29,7 @@ #include <AK/String.h> #include <AK/Traits.h> #include <AK/Vector.h> -#include <Kernel/VM/VirtualAddress.h> +#include <LibBareMetal/Memory/VirtualAddress.h> class Range { friend class RangeAllocator; diff --git a/Kernel/VM/VirtualAddress.h b/Kernel/VM/VirtualAddress.h deleted file mode 100644 index 92dfb6698d..0000000000 --- a/Kernel/VM/VirtualAddress.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#pragma once - -#include <AK/LogStream.h> -#include <AK/Types.h> - -class VirtualAddress { -public: - VirtualAddress() {} - explicit VirtualAddress(uintptr_t address) - : m_address(address) - { - } - - explicit VirtualAddress(const void* address) - : m_address((uintptr_t)address) - { - } - - bool is_null() const { return m_address == 0; } - bool is_page_aligned() const { return (m_address & 0xfff) == 0; } - - VirtualAddress offset(uintptr_t o) const { return VirtualAddress(m_address + o); } - uintptr_t get() const { return m_address; } - void set(uintptr_t address) { m_address = address; } - void mask(uintptr_t m) { m_address &= m; } - - bool operator<=(const VirtualAddress& other) const { return m_address <= other.m_address; } - bool operator>=(const VirtualAddress& other) const { return m_address >= other.m_address; } - bool operator>(const VirtualAddress& other) const { return m_address > other.m_address; } - bool operator<(const VirtualAddress& other) const { return m_address < other.m_address; } - bool operator==(const VirtualAddress& other) const { return m_address == other.m_address; } - bool operator!=(const VirtualAddress& other) const { return m_address != other.m_address; } - - u8* as_ptr() { return reinterpret_cast<u8*>(m_address); } - const u8* as_ptr() const { return reinterpret_cast<const u8*>(m_address); } - - VirtualAddress page_base() const { return VirtualAddress(m_address & 0xfffff000); } - -private: - uintptr_t m_address { 0 }; -}; - -inline VirtualAddress operator-(const VirtualAddress& a, const VirtualAddress& b) -{ - return VirtualAddress(a.get() - b.get()); -} - -inline const LogStream& operator<<(const LogStream& stream, VirtualAddress value) -{ - return stream << 'V' << value.as_ptr(); -} |