/* * Copyright (c) 2023, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #include "DeviceEventLoop.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include ErrorOr serenity_main(Main::Arguments) { TRY(Core::System::unveil("/dev/"sv, "rwc"sv)); TRY(Core::System::unveil("/etc/group"sv, "rw"sv)); TRY(Core::System::unveil(nullptr, nullptr)); TRY(Core::System::pledge("stdio rpath dpath wpath cpath chown fattr")); auto file_or_error = Core::File::open("/dev/devctl"sv, Core::File::OpenMode::Read); if (file_or_error.is_error()) { warnln("Failed to open /dev/devctl - {}", file_or_error.error()); VERIFY_NOT_REACHED(); } auto file = file_or_error.release_value(); DeviceMapper::DeviceEventLoop device_event_loop(move(file)); if (auto result = device_event_loop.drain_events_from_devctl(); result.is_error()) dbgln("DeviceMapper: Fatal error: {}", result.release_error()); // NOTE: If we return from drain_events_from_devctl, it must be an error // so we should always return 1! return 1; }