/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include #include namespace Kernel { KResultOr Process::sys$dump_backtrace() { VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); dump_backtrace(); return 0; } KResultOr Process::sys$dbgputch(u8 ch) { VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); dbgputch(ch); return 0; } KResultOr Process::sys$dbgputstr(Userspace characters, size_t size) { VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); if (size == 0) return 0; if (size <= 1024) { char buffer[1024]; if (!copy_from_user(buffer, characters, size)) return EFAULT; dbgputstr(buffer, size); return size; } auto result = try_copy_kstring_from_user(reinterpret_cast(characters.unsafe_userspace_ptr()), size); if (result.is_error()) return result.error(); dbgputstr(result.value()->characters(), size); return size; } }