summaryrefslogtreecommitdiffstats
path: root/bootloader_message/include
diff options
context:
space:
mode:
authorDavid Anderson <dvander@google.com>2019-11-09 16:21:16 +0100
committerandroid-build-merger <android-build-merger@google.com>2019-11-09 16:21:16 +0100
commitaf2f63cbf9f591069f5ebdc913011f74c78ac14b (patch)
tree704ad7b58d9a8600c7ab36a2d3f6866012226b26 /bootloader_message/include
parentMerge "Stop setting usb config from recovery init script" am: 6105aa1a4a am: 4e0d813e39 (diff)
parentMerge "bootloader_message: Add helpers for handling IBootControl MergeStatus." am: 405f4d3552 (diff)
downloadandroid_bootable_recovery-af2f63cbf9f591069f5ebdc913011f74c78ac14b.tar
android_bootable_recovery-af2f63cbf9f591069f5ebdc913011f74c78ac14b.tar.gz
android_bootable_recovery-af2f63cbf9f591069f5ebdc913011f74c78ac14b.tar.bz2
android_bootable_recovery-af2f63cbf9f591069f5ebdc913011f74c78ac14b.tar.lz
android_bootable_recovery-af2f63cbf9f591069f5ebdc913011f74c78ac14b.tar.xz
android_bootable_recovery-af2f63cbf9f591069f5ebdc913011f74c78ac14b.tar.zst
android_bootable_recovery-af2f63cbf9f591069f5ebdc913011f74c78ac14b.zip
Diffstat (limited to 'bootloader_message/include')
-rw-r--r--bootloader_message/include/bootloader_message/bootloader_message.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/bootloader_message/include/bootloader_message/bootloader_message.h b/bootloader_message/include/bootloader_message/bootloader_message.h
index e3425fc8b..3a3b862aa 100644
--- a/bootloader_message/include/bootloader_message/bootloader_message.h
+++ b/bootloader_message/include/bootloader_message/bootloader_message.h
@@ -185,6 +185,28 @@ static_assert(sizeof(struct bootloader_control) ==
"struct bootloader_control has wrong size");
#endif
+// Holds Virtual A/B merge status information. Current version is 1. New fields
+// must be added to the end.
+struct misc_virtual_ab_message {
+ uint8_t version;
+ uint8_t merge_status; // IBootControl 1.1, MergeStatus enum.
+ uint8_t source_slot; // Slot number when merge_status was written.
+ uint8_t reserved[61];
+} __attribute__((packed));
+
+#define MISC_VIRTUAL_AB_MESSAGE_VERSION 1
+
+#if (__STDC_VERSION__ >= 201112L) || defined(__cplusplus)
+static_assert(sizeof(struct misc_virtual_ab_message) == 64,
+ "struct misc_virtual_ab_message has wrong size");
+#endif
+
+// This struct is not meant to be used directly, rather, it is to make
+// computation of offsets easier. New fields must be added to the end.
+struct misc_system_space_layout {
+ misc_virtual_ab_message virtual_ab_message;
+} __attribute__((packed));
+
#ifdef __cplusplus
#include <string>
@@ -247,6 +269,10 @@ bool ReadMiscPartitionVendorSpace(void* data, size_t size, size_t offset, std::s
// 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);
+// Read or write the Virtual A/B message from system space in /misc.
+bool ReadMiscVirtualAbMessage(misc_virtual_ab_message* message, std::string* err);
+bool WriteMiscVirtualAbMessage(const misc_virtual_ab_message& message, std::string* err);
+
#else
#include <stdbool.h>