Compare commits

..

No commits in common. "6840a8983cf1b235f8c3e7fe27cd5e9736eceaa9" and "b23511edb18cfe6d07d9a51de02dc4b85e248583" have entirely different histories.

4 changed files with 11 additions and 12 deletions

View File

@ -178,7 +178,7 @@ namespace Kernel
ASSERT(s_kernel);
ASSERT(paddr);
ASSERT(s_fast_page_lock.current_processor_has_lock());
SpinLockGuard _(s_fast_page_lock);
constexpr uint64_t pdpte = (fast_page() >> 30) & 0x1FF;
constexpr uint64_t pde = (fast_page() >> 21) & 0x1FF;
@ -198,7 +198,7 @@ namespace Kernel
{
ASSERT(s_kernel);
ASSERT(s_fast_page_lock.current_processor_has_lock());
SpinLockGuard _(s_fast_page_lock);
constexpr uint64_t pdpte = (fast_page() >> 30) & 0x1FF;
constexpr uint64_t pde = (fast_page() >> 21) & 0x1FF;

View File

@ -14,7 +14,7 @@ namespace Kernel
class SharedMemoryObjectManager
{
public:
using Key = size_t;
using Key = uint32_t;
public:
static BAN::ErrorOr<void> initialize();

View File

@ -11,12 +11,14 @@ namespace Kernel
static void initialize();
static uint32_t get_u32();
static uint64_t get_u64();
template<BAN::unsigned_integral T> requires (sizeof(T) == 4)
static T get() { return Random::get_u32(); }
template<BAN::unsigned_integral T> requires (sizeof(T) == 8)
static T get() { return Random::get_u64(); }
template<typename T>
static T get();
};
template<>
inline uint32_t Random::get<uint32_t>() { return Random::get_u32(); }
template<>
inline uint64_t Random::get<uint64_t>() { return Random::get_u64(); }
}

View File

@ -32,12 +32,9 @@ namespace Kernel
LockGuard _(m_mutex);
// NOTE: don't set the top bit so cast to signed is not negative
auto generate_key = []() { return Random::get<Key>() & (~(Key)0 >> 1); };
Key key = generate_key();
Key key = Random::get<Key>();
while (m_objects.contains(key))
key = generate_key();
key = Random::get<Key>();
TRY(m_objects.insert(key, object));
return key;