/* * Copyright (c) 2022, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include #include #include #include #include namespace Kernel { class JailManagement { public: JailManagement(); static JailManagement& the(); LockRefPtr find_jail_by_index(JailIndex); LockRefPtr find_first_jail_by_name(StringView); ErrorOr> create_jail(NonnullOwnPtr name); ErrorOr for_each_in_same_jail(Function(Jail&)>); private: JailIndex generate_jail_id(); SpinlockProtected> m_jails { LockRank::None }; }; }