/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include #include namespace Kernel { KResultOr Process::sys$dump_backtrace() { VERIFY_NO_PROCESS_BIG_LOCK(this); dump_backtrace(); return 0; } KResultOr Process::sys$dbgputch(u8 ch) { VERIFY_NO_PROCESS_BIG_LOCK(this); dbgputch(ch); return 0; } KResultOr Process::sys$dbgputstr(Userspace characters, size_t size) { VERIFY_NO_PROCESS_BIG_LOCK(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(characters, size); if (result.is_error()) return result.error(); auto string = result.release_value(); dbgputstr(string->view()); return string->length(); } }