summaryrefslogtreecommitdiff
path: root/AK/Userspace.h
diff options
context:
space:
mode:
authorAndrew Kaster <akaster@serenityos.org>2021-11-14 15:52:48 -0700
committerAndreas Kling <kling@serenityos.org>2021-11-16 00:13:22 +0100
commitf1d8978804900311d348da1651d7e17ad218b80f (patch)
treed7328d766b4d52beffefb91457264f0850759b15 /AK/Userspace.h
parent7243bcb7da80357210db2aaf57094878b5208db0 (diff)
downloadserenity-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.h9
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)