| // Copyright 2022 The Fuchsia 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 SRC_SYS_EARLY_BOOT_INSTRUMENTATION_COVERAGE_SOURCE_H_ |
| #define SRC_SYS_EARLY_BOOT_INSTRUMENTATION_COVERAGE_SOURCE_H_ |
| |
| #include <lib/zx/channel.h> |
| #include <lib/zx/status.h> |
| #include <lib/zx/vmo.h> |
| |
| #include <string_view> |
| |
| #include <fbl/unique_fd.h> |
| #include <sdk/lib/vfs/cpp/pseudo_dir.h> |
| |
| namespace early_boot_instrumentation { |
| |
| // Filenames for each exposed profraw/symbolizer files. |
| |
| // Zircon's profraw and optionally symbolizer log. |
| static constexpr std::string_view kKernelFile = "zircon.profraw"; |
| |
| // This file may be available, only if, the kernel exposes a symbolizer log as well. |
| // This might eventually be replaced by self-describing profraw file. |
| static constexpr std::string_view kKernelSymbolizerFile = "zircon.log"; |
| |
| // Physboot's profraw and optionally symbolizer log. |
| static constexpr std::string_view kPhysFile = "physboot.profraw"; |
| |
| // This file may be available, only if, the physboot exposes a symbolizer log as well. |
| // This might eventually be replaced by self-describing profraw file. |
| static constexpr std::string_view kPhysSymbolizerFile = "physboot.log"; |
| |
| // Given a handle to |kernel_data_dir|, will extract the kernel coverage vmos from it, |
| // and add them as VMO file into |out_dir|. |
| // |
| // Usually |kernel_data_dir| is '/boot/kernel/data'. |
| zx::status<> ExposeKernelProfileData(fbl::unique_fd& kernel_data_dir, vfs::PseudoDir& out_dir); |
| |
| // Given a handle to |phys_data_dir|, will extract the physboot's coverage vmos from it, |
| // and add them as VMO file into |out_dir|. |
| // |
| // Usually |phys_data_dir| is '/boot/kernel/data/phys'. |
| zx::status<> ExposePhysbootProfileData(fbl::unique_fd& physboot_data_dir, vfs::PseudoDir& out_dir); |
| |
| } // namespace early_boot_instrumentation |
| |
| #endif // SRC_SYS_EARLY_BOOT_INSTRUMENTATION_COVERAGE_SOURCE_H_ |