Serenity Operating System
at master 33 lines 908 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 <Kernel/PerformanceEventBuffer.h> 8#include <Kernel/Process.h> 9 10namespace Kernel { 11 12ErrorOr<FlatPtr> Process::sys$perf_event(int type, FlatPtr arg1, FlatPtr arg2) 13{ 14 VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); 15 auto* events_buffer = current_perf_events_buffer(); 16 if (!events_buffer) 17 return 0; 18 TRY(events_buffer->append(type, arg1, arg2, {})); 19 return 0; 20} 21 22ErrorOr<FlatPtr> Process::sys$perf_register_string(Userspace<char const*> user_string, size_t user_string_length) 23{ 24 VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); 25 auto* events_buffer = current_perf_events_buffer(); 26 if (!events_buffer) 27 return 0; 28 29 auto string = TRY(try_copy_kstring_from_user(user_string, user_string_length)); 30 return events_buffer->register_string(move(string)); 31} 32 33}