diff --git a/init/init.cpp b/init/init.cpp index 631db8e7f..ba880ea32 100644 --- a/init/init.cpp +++ b/init/init.cpp @@ -868,6 +868,8 @@ int SecondStageMain(int argc, char** argv) { // Run all property triggers based on current state of the properties. am.QueueBuiltinAction(queue_property_triggers_action, "queue_property_triggers"); + // Restore prio before main loop + setpriority(PRIO_PROCESS, 0, 0); while (true) { // By default, sleep until something happens. auto epoll_timeout = std::optional{}; diff --git a/init/main.cpp b/init/main.cpp index 38bc74b62..23f5530fe 100644 --- a/init/main.cpp +++ b/init/main.cpp @@ -52,7 +52,8 @@ int main(int argc, char** argv) { #if __has_feature(address_sanitizer) __asan_set_error_report_callback(AsanReportCallback); #endif - + // Boost prio which will be restored later + setpriority(PRIO_PROCESS, 0, -20); if (!strcmp(basename(argv[0]), "ueventd")) { return ueventd_main(argc, argv); } diff --git a/init/subcontext.cpp b/init/subcontext.cpp index f3dd53826..9d4ea8cd3 100644 --- a/init/subcontext.cpp +++ b/init/subcontext.cpp @@ -18,6 +18,8 @@ #include #include +#include +#include #include #include @@ -181,6 +183,8 @@ int SubcontextMain(int argc, char** argv, const BuiltinFunctionMap* function_map trigger_shutdown = [](const std::string& command) { shutdown_command = command; }; auto subcontext_process = SubcontextProcess(function_map, context, init_fd); + // Restore prio before main loop + setpriority(PRIO_PROCESS, 0, 0); subcontext_process.MainLoop(); return 0; } diff --git a/init/ueventd.cpp b/init/ueventd.cpp index 7514b6184..54659c5d7 100644 --- a/init/ueventd.cpp +++ b/init/ueventd.cpp @@ -321,6 +321,8 @@ int ueventd_main(int argc, char** argv) { while (waitpid(-1, nullptr, WNOHANG) > 0) { } + // Restore prio before main loop + setpriority(PRIO_PROCESS, 0, 0); uevent_listener.Poll([&uevent_handlers](const Uevent& uevent) { for (auto& uevent_handler : uevent_handlers) { uevent_handler->HandleUevent(uevent);