Add misc_writer.
bootloader_message.h currently divides /misc into four segments. The
space between 2K and 16K is reserved for vendor use (e.g. bootloader
persists flags). This CL adds a vendor tool "misc_writer", to allow
writing data to the vendor space in /misc, before getting a dedicated
HAL for accessing /misc partition (b/131775112).
Targets need to explicitly include the module, then invoke the
executable to write data. For example, the following command will write
3-byte data ("0xABCDEF") to offset 4 in vendor space (i.e. 2048 + 4 in
/misc).
$ /vendor/bin/misc_writer --vendor-space-offset 4 --hex-string 0xABCDEF
Bug: 132906936
Test: Run recovery_unit_test on crosshatch.
Test: Call the command via init.hardware.rc on crosshatch. Check that
the call finishes successfully. Then check the contents written to
/misc (`dd bs=1 skip=2048 if=/dev/block/sda2 count=32 | xxd`).
Change-Id: I79548fc63fc79b705a0320868690569c3106949f
Merged-In: I79548fc63fc79b705a0320868690569c3106949f
(cherry picked from commit 7ae0169842)
This commit is contained in:
@@ -28,8 +28,9 @@
|
||||
// 16K - 64K Used by uncrypt and recovery to store wipe_package for A/B devices
|
||||
// Note that these offsets are admitted by bootloader,recovery and uncrypt, so they
|
||||
// are not configurable without changing all of them.
|
||||
static const size_t BOOTLOADER_MESSAGE_OFFSET_IN_MISC = 0;
|
||||
static const size_t WIPE_PACKAGE_OFFSET_IN_MISC = 16 * 1024;
|
||||
constexpr size_t BOOTLOADER_MESSAGE_OFFSET_IN_MISC = 0;
|
||||
constexpr size_t VENDOR_SPACE_OFFSET_IN_MISC = 2 * 1024;
|
||||
constexpr size_t WIPE_PACKAGE_OFFSET_IN_MISC = 16 * 1024;
|
||||
|
||||
/* Bootloader Message (2-KiB)
|
||||
*
|
||||
@@ -228,6 +229,14 @@ bool read_wipe_package(std::string* package_data, size_t size, std::string* err)
|
||||
// Write the wipe package into BCB (to offset WIPE_PACKAGE_OFFSET_IN_MISC).
|
||||
bool write_wipe_package(const std::string& package_data, std::string* err);
|
||||
|
||||
// Reads data from the vendor space in /misc partition, with the given offset and size. Note that
|
||||
// offset is in relative to the start of vendor space.
|
||||
bool ReadMiscPartitionVendorSpace(void* data, size_t size, size_t offset, std::string* err);
|
||||
|
||||
// Writes the given data to the vendor space in /misc partition, at the given offset. Note that
|
||||
// offset is in relative to the start of the vendor space.
|
||||
bool WriteMiscPartitionVendorSpace(const void* data, size_t size, size_t offset, std::string* err);
|
||||
|
||||
#else
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
Reference in New Issue
Block a user