Serenity Operating System
at master 25 lines 589 B view raw
1/* 2 * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#include "Range.h" 8#include <AK/Vector.h> 9 10namespace UserspaceEmulator { 11 12Vector<Range, 2> Range::carve(Range const& taken) const 13{ 14 VERIFY((taken.size() % PAGE_SIZE) == 0); 15 Vector<Range, 2> parts; 16 if (taken == *this) 17 return {}; 18 if (taken.base() > base()) 19 parts.append({ base(), taken.base().get() - base().get() }); 20 if (taken.end() < end()) 21 parts.append({ taken.end(), end().get() - taken.end().get() }); 22 return parts; 23} 24 25}