[libj6] Account for double-mapped ring buffers in j6::channel
When keeping track of addresses to give to the kernel for channel shared memory, double the channel's size since the kernel will double-map the area as a ring buffer.
This commit is contained in:
@@ -54,7 +54,7 @@ channel::create(size_t size)
|
|||||||
|
|
||||||
util::scoped_lock lock {addr_spinlock};
|
util::scoped_lock lock {addr_spinlock};
|
||||||
uintptr_t addr = channel_addr;
|
uintptr_t addr = channel_addr;
|
||||||
channel_addr += size;
|
channel_addr += size * 2; // account for ring buffer virtual space doubling
|
||||||
lock.release();
|
lock.release();
|
||||||
|
|
||||||
result = j6_vma_create_map(&vma, size, addr, j6_vm_flag_write|j6_vm_flag_ring);
|
result = j6_vma_create_map(&vma, size, addr, j6_vm_flag_write|j6_vm_flag_ring);
|
||||||
|
|||||||
Reference in New Issue
Block a user