perf(kernel): linked cap tree, translate-based page lookup, next-fit frames/heap, targeted dequeue; host benches
This commit is contained in:
@@ -449,7 +449,7 @@ impl<P: Platform> Kernel<P> {
|
||||
self.wake(t, SyscallResult::Received(Delivery::signal(bits)));
|
||||
}
|
||||
SignalEffect::WakeBound(t, bits) => {
|
||||
self.endpoints.remove_thread_from_all(t);
|
||||
self.leave_queue(t);
|
||||
self.wake(t, SyscallResult::Received(Delivery::signal(bits)));
|
||||
}
|
||||
SignalEffect::Stored => {}
|
||||
|
||||
@@ -27,8 +27,14 @@ impl<P: Platform> Kernel<P> {
|
||||
self.find_free_heap_range(pid, pages)
|
||||
.ok_or(KernelError::OutOfMemory)
|
||||
.and_then(|va| {
|
||||
self.map_fresh_range(pid, va, pages, PagePerms::ReadWrite)
|
||||
.map(|()| SyscallResult::Value(va.raw()))
|
||||
self.map_fresh_range(pid, va, pages, PagePerms::ReadWrite)?;
|
||||
self.advance_heap_cursor(
|
||||
pid,
|
||||
VirtualAddress::from_raw(
|
||||
va.raw() + pages * domain::memory::frame::PAGE_SIZE,
|
||||
),
|
||||
);
|
||||
Ok(SyscallResult::Value(va.raw()))
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user