| // Copyright 2020 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef VM_TOOLS_PSTORE_DUMP_PERSISTENT_RAM_BUFFER_H_ |
| #define VM_TOOLS_PSTORE_DUMP_PERSISTENT_RAM_BUFFER_H_ |
| |
| #include <stdint.h> |
| |
| #include <string> |
| #include <utility> |
| |
| #include <base/files/file_path.h> |
| |
| namespace vm_tools { |
| namespace pstore_dump { |
| |
| // From fs/pstore/ram_core.c |
| /** |
| * struct persistent_ram_buffer - persistent circular RAM buffer |
| * |
| * @sig: |
| * signature to indicate header (PERSISTENT_RAM_SIG xor PRZ-type value) |
| * @start: |
| * offset into @data where the beginning of the stored bytes begin |
| * @size: |
| * number of valid bytes stored in @data |
| */ |
| struct persistent_ram_buffer { |
| uint32_t sig; |
| uint32_t start; |
| uint32_t size; |
| uint8_t data[0]; |
| }; |
| |
| // From fs/pstore/ram_core.c |
| #define PERSISTENT_RAM_SIG (0x43474244) /* DBGC */ |
| |
| const persistent_ram_buffer* FindPersistentRamBufferForConsoleOutput( |
| const void* pstore, size_t pstore_size); |
| bool GetPersistentRamBufferContent(const persistent_ram_buffer* buf, |
| size_t buf_capacity, |
| std::string* out_content); |
| bool HandlePstore(const base::FilePath& path); |
| |
| } // namespace pstore_dump |
| } // namespace vm_tools |
| |
| #endif // VM_TOOLS_PSTORE_DUMP_PERSISTENT_RAM_BUFFER_H_ |