33 lines
737 B
C
33 lines
737 B
C
#pragma once
|
|
#include "fs/VFS.h"
|
|
#include "fs/devices/Device.h"
|
|
#include <luna/HashMap.h>
|
|
#include <luna/Vector.h>
|
|
#include <sys/types.h>
|
|
|
|
struct SharedMemory
|
|
{
|
|
Vector<u64> frames;
|
|
off_t offset;
|
|
int prot;
|
|
SharedPtr<VFS::Inode> inode {};
|
|
SharedPtr<Device> device {};
|
|
int refs { 0 };
|
|
|
|
SharedMemory() = default;
|
|
SharedMemory(SharedMemory&&) = default;
|
|
|
|
static Result<u64> create(u8* mem, off_t offset, usize count);
|
|
|
|
Result<void> grow_forward(u8* mem, usize count);
|
|
Result<void> grow_backward(u8* mem, usize count);
|
|
|
|
Result<void> map(u64 virt, int flags, off_t offset, usize count);
|
|
|
|
void free();
|
|
|
|
~SharedMemory() = default;
|
|
};
|
|
|
|
extern HashMap<u64, SharedMemory> g_shared_memory_map;
|