diff options
author | Kenny Root <kroot@google.com> | 2019-12-04 07:54:20 -0800 |
---|---|---|
committer | Kenny Root <kroot@google.com> | 2019-12-19 09:59:40 -0800 |
commit | d0c4f2bb404e87c96f83a0ef75c76145a1af6161 (patch) | |
tree | 8624a04f8b5e4c14160973ced11747d116d328bf /rebootescrow/aidl/default/service.cpp | |
parent | a0a12cfcf216c7ba3ee43ec86e81e708a8db2519 (diff) |
Resume on Reboot default implementation
A default implementation of the RebootEscrow HAL which relies on RAM
retention to keep a key around during a reboot to apply an OTA. This
should work on devices that use a "warm reboot" and most likely will
work on devices that use a "cold reboot" as well.
DRAM will retain information for several seconds depending on the
temperature and other factors. This is enough to survive a reboot. With
the Hadamard code used in this change for error recovery, many errors
can be recovered.
Bug: 63928581
Test: make
Test: atest VtsHalRebootEscrowTargetTest
Change-Id: Ib8db7888d64fee8d827d7c06892b9a1f2af87add
Diffstat (limited to 'rebootescrow/aidl/default/service.cpp')
-rw-r--r-- | rebootescrow/aidl/default/service.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/rebootescrow/aidl/default/service.cpp b/rebootescrow/aidl/default/service.cpp new file mode 100644 index 0000000000..bd2378e513 --- /dev/null +++ b/rebootescrow/aidl/default/service.cpp @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.1 (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.1 + * + * 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. + */ + +#include "rebootescrow-impl/RebootEscrow.h" + +#include <android-base/logging.h> +#include <android/binder_manager.h> +#include <android/binder_process.h> + +using aidl::android::hardware::rebootescrow::RebootEscrow; + +int main() { + ABinderProcess_setThreadPoolMaxThreadCount(0); + + auto re = ndk::SharedRefBase::make<RebootEscrow>(); + const std::string instance = std::string() + RebootEscrow::descriptor + "/default"; + binder_status_t status = AServiceManager_addService(re->asBinder().get(), instance.c_str()); + CHECK(status == STATUS_OK); + + ABinderProcess_joinThreadPool(); + return EXIT_FAILURE; +} |