diff options
author | Alice Ryhl <aliceryhl@google.com> | 2024-02-06 08:29:08 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2024-02-06 08:29:08 +0000 |
commit | 75ee54143178cc843e44b69d5f318c3795950d1d (patch) | |
tree | 56ed01ac42775b38702280031a3a596af7aa1269 | |
parent | 056c681b51ab033da62efe55a2e194ba4585d4a7 (diff) | |
parent | 55a44a299bf9f01dafa7d64c051b44d1ca464e26 (diff) | |
download | recovery-75ee54143178cc843e44b69d5f318c3795950d1d.tar.gz |
Merge "Add kcmdline bootloader message" into main am: 55a44a299b
Original change: https://android-review.googlesource.com/c/platform/bootable/recovery/+/2908557
Change-Id: I6cd493cc6188d110406840b27d9dafebb05e3627
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | bootloader_message/bootloader_message.cpp | 10 | ||||
-rw-r--r-- | bootloader_message/include/bootloader_message/bootloader_message.h | 18 |
2 files changed, 28 insertions, 0 deletions
diff --git a/bootloader_message/bootloader_message.cpp b/bootloader_message/bootloader_message.cpp index 1ea56cd4..e9dd0d4d 100644 --- a/bootloader_message/bootloader_message.cpp +++ b/bootloader_message/bootloader_message.cpp @@ -314,6 +314,16 @@ bool WriteMiscMemtagMessage(const misc_memtag_message& message, std::string* err offsetof(misc_system_space_layout, memtag_message), err); } +bool ReadMiscKcmdlineMessage(misc_kcmdline_message* message, std::string* err) { + return ReadMiscPartitionSystemSpace(message, sizeof(*message), + offsetof(misc_system_space_layout, kcmdline_message), err); +} + +bool WriteMiscKcmdlineMessage(const misc_kcmdline_message& message, std::string* err) { + return WriteMiscPartitionSystemSpace(&message, sizeof(message), + offsetof(misc_system_space_layout, kcmdline_message), err); +} + extern "C" bool write_reboot_bootloader(void) { std::string err; return write_reboot_bootloader(&err); diff --git a/bootloader_message/include/bootloader_message/bootloader_message.h b/bootloader_message/include/bootloader_message/bootloader_message.h index 8d0c1325..642f6533 100644 --- a/bootloader_message/include/bootloader_message/bootloader_message.h +++ b/bootloader_message/include/bootloader_message/bootloader_message.h @@ -100,6 +100,13 @@ struct misc_memtag_message { uint8_t reserved[55]; } __attribute__((packed)); +struct misc_kcmdline_message { + uint8_t version; + uint32_t magic; + uint64_t kcmdline_flags; + uint8_t reserved[51]; +} __attribute__((packed)); + #define MISC_VIRTUAL_AB_MESSAGE_VERSION 2 #define MISC_VIRTUAL_AB_MAGIC_HEADER 0x56740AB0 @@ -116,11 +123,17 @@ struct misc_memtag_message { // See system/extras/mtectrl in AOSP for more information. #define MISC_MEMTAG_MODE_FORCED 0x20 +#define MISC_KCMDLINE_MESSAGE_VERSION 1 +#define MISC_KCMDLINE_MAGIC_HEADER 0x6ab5110c +#define MISC_KCMDLINE_BINDER_RUST 0x1 + #if (__STDC_VERSION__ >= 201112L) || defined(__cplusplus) static_assert(sizeof(struct misc_virtual_ab_message) == 64, "struct misc_virtual_ab_message has wrong size"); static_assert(sizeof(struct misc_memtag_message) == 64, "struct misc_memtag_message has wrong size"); +static_assert(sizeof(struct misc_kcmdline_message) == 64, + "struct misc_kcmdline_message has wrong size"); #endif // This struct is not meant to be used directly, rather, it is to make @@ -128,6 +141,7 @@ static_assert(sizeof(struct misc_memtag_message) == 64, struct misc_system_space_layout { misc_virtual_ab_message virtual_ab_message; misc_memtag_message memtag_message; + misc_kcmdline_message kcmdline_message; } __attribute__((packed)); #ifdef __cplusplus @@ -198,6 +212,10 @@ bool WriteMiscVirtualAbMessage(const misc_virtual_ab_message& message, std::stri // Read or write the memtag message from system space in /misc. bool ReadMiscMemtagMessage(misc_memtag_message* message, std::string* err); bool WriteMiscMemtagMessage(const misc_memtag_message& message, std::string* err); + +// Read or write the kcmdline message from system space in /misc. +bool ReadMiscKcmdlineMessage(misc_kcmdline_message* message, std::string* err); +bool WriteMiscKcmdlineMessage(const misc_kcmdline_message& message, std::string* err); #else #include <stdbool.h> |