Suppose that you have a memory manager, or arena-like class, which contains a buffer used to store memory.
And you want to hand out chunks of this memory to other parts of your program. These chunks should all be PAGE_SIZE
.
You might have something like:
enum PAGE_SIZE = 4096;
enum BUF_POOL_NUM_PAGES = 1024;
class BufferPool
{
align(PAGE_SIZE) ubyte[PAGE_SIZE * BUF_POOL_NUM_PAGES] data;
this()
{
mmap(&data, data.sizeof,
PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
}
}
Now there should be a function, like get_page()
, that returns a PAGE_SIZE
pointer of ubyte
. But I can only figure out how to return a ubyte[]
:
ubyte[] get_page(frame_idx_t frame_idx)
{
return data[frame_idx * PAGE_SIZE .. (frame_idx + 1) * PAGE_SIZE];
}
I am curious if you can return something like ubyte[PAGE_SIZE]*
or ref ubyte[PAGE_SIZE]
?
Thank you =)