gs-common: move bootctrl hal aidl implementation to gs-common
copy from device/google/zuma/interfaces/boot
$ git log --oneline -1 interfaces/boot/
193e5e8 zuma:interfaces:boot: add aidl interface support
Bug: 265063384
Change-Id: I9b8318eee17e51f40577d7f4c6514703483b8eaa
Signed-off-by: Jason Chiu <jasoncschiu@google.com>
diff --git a/bootctrl/aidl/GptUtils.h b/bootctrl/aidl/GptUtils.h
new file mode 100644
index 0000000..ec68cf6
--- /dev/null
+++ b/bootctrl/aidl/GptUtils.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <map>
+#include <string>
+#include <vector>
+
+namespace aidl::android::hardware::boot {
+
+#define GPT_SIGNATURE 0x5452415020494645UL
+
+typedef struct {
+ uint8_t type_guid[16];
+ uint8_t guid[16];
+ uint64_t first_lba;
+ uint64_t last_lba;
+ uint64_t attr;
+ uint16_t name[36];
+} __attribute__((packed)) gpt_entry;
+
+typedef struct {
+ uint64_t signature;
+ uint32_t revision;
+ uint32_t header_size;
+ uint32_t crc32;
+ uint32_t reserved;
+ uint64_t current_lba;
+ uint64_t backup_lba;
+ uint64_t first_usable_lba;
+ uint64_t last_usable_lba;
+ uint8_t disk_guid[16];
+ uint64_t start_lba;
+ uint32_t entry_count;
+ uint32_t entry_size;
+ uint32_t entries_crc32;
+} __attribute__((packed)) gpt_header;
+
+class GptUtils {
+ public:
+ GptUtils(const std::string dev_path);
+ int Load(void);
+ gpt_entry *GetPartitionEntry(std::string name);
+ int Sync(void);
+ ~GptUtils();
+
+ private:
+ std::string dev_path;
+ int fd;
+ uint32_t block_size;
+ gpt_header gpt_primary;
+ gpt_header gpt_backup;
+ std::vector<gpt_entry> entry_array;
+ std::map<std::string, gpt_entry *> entries;
+};
+
+} // namespace aidl::android::hardware::boot
\ No newline at end of file