diff options
author | Andrew Kaster <akaster@serenityos.org> | 2021-11-14 15:52:48 -0700 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-11-16 00:13:22 +0100 |
commit | f1d8978804900311d348da1651d7e17ad218b80f (patch) | |
tree | d7328d766b4d52beffefb91457264f0850759b15 /AK/Userspace.h | |
parent | 7243bcb7da80357210db2aaf57094878b5208db0 (diff) | |
download | serenity-f1d8978804900311d348da1651d7e17ad218b80f.zip |
AK+Kernel: Remove implicit conversion from Userspace<T*> to FlatPtr
This feels like it was a refactor transition kind of conversion. The
places that were relying on it can easily be changed to explicitly ask
for the ptr() or a new vaddr() method on Userspace<T*>.
FlatPtr can still implicitly convert to Userspace<T> because the
constructor is not explicit, but there's quite a few more places that
are relying on that conversion.
Diffstat (limited to 'AK/Userspace.h')
-rw-r--r-- | AK/Userspace.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/AK/Userspace.h b/AK/Userspace.h index 8d99a54172..267862424e 100644 --- a/AK/Userspace.h +++ b/AK/Userspace.h @@ -10,6 +10,10 @@ #include <AK/StdLibExtras.h> #include <AK/Types.h> +#ifdef KERNEL +# include <Kernel/VirtualAddress.h> +#endif + namespace AK { template<typename T> @@ -20,8 +24,6 @@ class Userspace { public: Userspace() = default; - operator FlatPtr() const { return (FlatPtr)m_ptr; } - // Disable default implementations that would use surprising integer promotion. bool operator==(const Userspace&) const = delete; bool operator<=(const Userspace&) const = delete; @@ -38,7 +40,8 @@ public: explicit operator bool() const { return m_ptr != 0; } FlatPtr ptr() const { return m_ptr; } - T unsafe_userspace_ptr() const { return (T)m_ptr; } + VirtualAddress vaddr() const { return VirtualAddress(m_ptr); } + T unsafe_userspace_ptr() const { return reinterpret_cast<T>(m_ptr); } #else Userspace(T ptr) : m_ptr(ptr) |