summaryrefslogtreecommitdiff
path: root/Kernel/Coredump.h
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-08-22 14:51:04 +0200
committerAndreas Kling <kling@serenityos.org>2021-08-23 00:02:09 +0200
commitbcd2025311b97d45aeb23960e17fcae2bc5b7f2e (patch)
treefacb4e412cdfcc5a9f5177c9f3cd0cd1e27a2f67 /Kernel/Coredump.h
parenta930877f31fb117ce4b38d4782dd288093700d8a (diff)
downloadserenity-bcd2025311b97d45aeb23960e17fcae2bc5b7f2e.zip
Everywhere: Core dump => Coredump
We all know what a coredump is, and it feels more natural to refer to it as a coredump (most code already does), so let's be consistent.
Diffstat (limited to 'Kernel/Coredump.h')
-rw-r--r--Kernel/Coredump.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/Kernel/Coredump.h b/Kernel/Coredump.h
new file mode 100644
index 0000000000..9fb9200c57
--- /dev/null
+++ b/Kernel/Coredump.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2019-2020, Jesse Buhagiar <jooster669@gmail.com>
+ * Copyright (c) 2020, Itamar S. <itamar8910@gmail.com>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <AK/NonnullRefPtr.h>
+#include <AK/OwnPtr.h>
+#include <Kernel/Forward.h>
+
+namespace Kernel {
+
+class Coredump {
+public:
+ static OwnPtr<Coredump> create(NonnullRefPtr<Process>, const String& output_path);
+
+ ~Coredump() = default;
+ [[nodiscard]] KResult write();
+
+private:
+ Coredump(NonnullRefPtr<Process>, NonnullRefPtr<FileDescription>&&);
+ static RefPtr<FileDescription> create_target_file(const Process&, const String& 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&);
+
+ ByteBuffer create_notes_segment_data() const;
+ ByteBuffer create_notes_process_data() const;
+ ByteBuffer create_notes_threads_data() const;
+ ByteBuffer create_notes_regions_data() const;
+ ByteBuffer create_notes_metadata_data() const;
+
+ NonnullRefPtr<Process> m_process;
+ NonnullRefPtr<FileDescription> m_fd;
+ const size_t m_num_program_headers;
+};
+
+}