summaryrefslogtreecommitdiff
path: root/Kernel/Coredump.h
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-09-06 18:42:15 +0200
committerAndreas Kling <kling@serenityos.org>2021-09-06 18:56:51 +0200
commit69b9b2888cea47393461799746e80a04bdcae4d1 (patch)
treeb0acdc55359cb9ef7adf2201d76346a11b1c93b3 /Kernel/Coredump.h
parent9db8a142648e43ad56f234c4e9eeeeae92a348ae (diff)
downloadserenity-69b9b2888cea47393461799746e80a04bdcae4d1.zip
Kernel: Don't allocate so much when generating coredumps
Instead of creating a bunch of ByteBuffers and concatenating them to generate the "notes" segment, we now simply create a KBufferBuilder and tell each of the notes generator helpers to write into the builder. This allows the code to flow more naturally, with some bonus additional error propagation. :^)
Diffstat (limited to 'Kernel/Coredump.h')
-rw-r--r--Kernel/Coredump.h20
1 files changed, 10 insertions, 10 deletions
diff --git a/Kernel/Coredump.h b/Kernel/Coredump.h
index 197b9feb83..9a653219e9 100644
--- a/Kernel/Coredump.h
+++ b/Kernel/Coredump.h
@@ -24,16 +24,16 @@ private:
Coredump(NonnullRefPtr<Process>, NonnullRefPtr<FileDescription>);
static KResultOr<NonnullRefPtr<FileDescription>> try_create_target_file(Process const&, StringView output_path);
- [[nodiscard]] KResult write_elf_header();
- [[nodiscard]] KResult write_program_headers(size_t notes_size);
- [[nodiscard]] KResult write_regions();
- [[nodiscard]] KResult write_notes_segment(ByteBuffer&);
-
- KResultOr<ByteBuffer> create_notes_segment_data() const;
- KResultOr<ByteBuffer> create_notes_process_data() const;
- KResultOr<ByteBuffer> create_notes_threads_data() const;
- KResultOr<ByteBuffer> create_notes_regions_data() const;
- KResultOr<ByteBuffer> create_notes_metadata_data() const;
+ KResult write_elf_header();
+ KResult write_program_headers(size_t notes_size);
+ KResult write_regions();
+ KResult write_notes_segment(ReadonlyBytes);
+
+ KResult create_notes_segment_data(auto&) const;
+ KResult create_notes_process_data(auto&) const;
+ KResult create_notes_threads_data(auto&) const;
+ KResult create_notes_regions_data(auto&) const;
+ KResult create_notes_metadata_data(auto&) const;
NonnullRefPtr<Process> m_process;
NonnullRefPtr<FileDescription> m_description;