75e13baf32
Currently, if init encounters a fatal issues it reboots to fastboot but this may be not desirable in all cases, especially the case of critical services crashing. Therefore this change adds the ability for vendors to customize the reboot target via the androidboot.init_fatal_reboot_target= kernel command line. This applies to all LOG(FATAL) messages as well as fatal signals in userdebug/eng builds, except for signals before logging is enabled in first stage init. Bug: 121006328 Test: device reboots to configurable target with LOG(FATAL) Test: device reboots to configurable target after a segfault in the various stages of init Test: device reboots to fastboot without a configured target Change-Id: I16ea9e32e2fee08dece3d33b697d7a08191d607b
34 lines
1.2 KiB
C++
34 lines
1.2 KiB
C++
/*
|
|
* Copyright (C) 2010 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 init {
|
|
|
|
void SetFatalRebootTarget();
|
|
// Determines whether the system is capable of rebooting. This is conservative,
|
|
// so if any of the attempts to determine this fail, it will still return true.
|
|
bool IsRebootCapable();
|
|
// This is a wrapper around the actual reboot calls.
|
|
void __attribute__((noreturn)) RebootSystem(unsigned int cmd, const std::string& reboot_target);
|
|
void __attribute__((noreturn)) InitFatalReboot();
|
|
void InstallRebootSignalHandlers();
|
|
|
|
} // namespace init
|
|
} // namespace android
|