mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-30 00:31:14 +00:00
Kernel: Avoid repeated memory zeroing while generating coredumps
Reuse the same buffer-full-of-zeroes for every un-paged-in page that we dump out.
This commit is contained in:
parent
e1779b064a
commit
c0deafe457
Notes:
sideshowbarker
2024-07-18 00:53:48 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/c0deafe4574
|
@ -167,6 +167,8 @@ ErrorOr<void> Coredump::write_program_headers(size_t notes_size)
|
|||
|
||||
ErrorOr<void> Coredump::write_regions()
|
||||
{
|
||||
u8 zero_buffer[PAGE_SIZE] = {};
|
||||
|
||||
for (auto& region : m_process->address_space().regions()) {
|
||||
VERIFY(!region->is_kernel());
|
||||
|
||||
|
@ -180,8 +182,6 @@ ErrorOr<void> Coredump::write_regions()
|
|||
|
||||
for (size_t i = 0; i < region->page_count(); i++) {
|
||||
auto* page = region->physical_page(i);
|
||||
|
||||
uint8_t zero_buffer[PAGE_SIZE] = {};
|
||||
auto src_buffer = [&]() -> ErrorOr<UserOrKernelBuffer> {
|
||||
if (page)
|
||||
return UserOrKernelBuffer::for_user_buffer(reinterpret_cast<uint8_t*>((region->vaddr().as_ptr() + (i * PAGE_SIZE))), PAGE_SIZE);
|
||||
|
|
Loading…
Reference in a new issue