Luna/kernel/src/fs/StorageCache.h

38 lines
601 B
C
Raw Normal View History

#pragma once
#include "lib/KMutex.h"
#include <luna/Buffer.h>
#include <luna/HashMap.h>
#include <luna/LinkedList.h>
class StorageCache : public LinkedListNode<StorageCache>
{
public:
struct CacheEntry
{
Buffer buffer {};
};
void lock()
{
return m_mutex.lock();
}
void unlock()
{
return m_mutex.unlock();
}
Result<CacheEntry*> fetch_entry(u64 block);
void clear();
static void clear_caches();
StorageCache();
~StorageCache();
private:
HashMap<u64, CacheEntry> m_cache_entries;
KMutex<100> m_mutex;
};