summaryrefslogtreecommitdiff
path: root/include/libgsi
diff options
context:
space:
mode:
authorDavid Anderson <dvander@google.com>2019-01-07 18:10:29 -0800
committerDavid Anderson <dvander@google.com>2019-01-08 13:31:06 -0800
commitee84d7406b1f36fa8c6c501457289268038f2c2f (patch)
treeee2d5cabccf2a332010f10bfca4cb1ede740cd31 /include/libgsi
parent264f9fa893fe2d1b418d24aabf69503cbbe05f04 (diff)
downloadgsid-ee84d7406b1f36fa8c6c501457289268038f2c2f.tar.gz
Introduce libgsi, gsi_tool.
libgsi is a very small library to communicate critical gsi knowledge to init and fs_mgr, to avoid hardcoding path names and constants. gsi_tool is a shell wrapper to talk to gsid through binder. gsid (currently in vold, will be moved shortly) is the daemon to manage gsi installs. Bug: 121210348 Test: N/A Change-Id: I7942af56cb8e6ed69d28189bcf8d9806aa5e3e45
Diffstat (limited to 'include/libgsi')
-rw-r--r--include/libgsi/libgsi.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/include/libgsi/libgsi.h b/include/libgsi/libgsi.h
new file mode 100644
index 0000000..e025c87
--- /dev/null
+++ b/include/libgsi/libgsi.h
@@ -0,0 +1,48 @@
+//
+// 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 <string>
+
+namespace android {
+namespace gsi {
+
+static constexpr char kGsiBootedIndicatorFile[] = "/metadata/vold/gsi/booted";
+
+// Returns true if the currently running system image is a live GSI.
+bool IsGsiRunning();
+
+// Return true if a GSI is installed (but not necessarily running).
+bool IsGsiInstalled();
+
+// Set the GSI as no longer bootable. This effectively removes the GSI. If no
+// GSI was bootable, false is returned.
+bool UninstallGsi();
+
+// Returns true if init should attempt to boot into a live GSI image, false
+// otherwise. If true, then the path to the liblp metadata file is set. If
+// false, an error message is set instead.
+//
+// This is only called by first-stage init.
+bool CanBootIntoGsi(std::string* metadata_file, std::string* error);
+
+// Called by first-stage init to indicate that we're about to boot into a
+// GSI.
+bool MarkSystemAsGsi();
+
+} // namespace gsi
+} // namespace android