From 434925bbd8b254668291d5e4b595244eecfca806 Mon Sep 17 00:00:00 2001 From: rvictorr Date: Sat, 12 Feb 2022 21:57:44 +0200 Subject: [PATCH] profile: Port to LibMain --- Userland/Utilities/CMakeLists.txt | 1 + Userland/Utilities/profile.cpp | 29 +++++++++++------------------ 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/Userland/Utilities/CMakeLists.txt b/Userland/Utilities/CMakeLists.txt index 8840db0319..324d7101fd 100644 --- a/Userland/Utilities/CMakeLists.txt +++ b/Userland/Utilities/CMakeLists.txt @@ -154,6 +154,7 @@ target_link_libraries(pls LibCrypt LibMain) target_link_libraries(pmap LibMain) target_link_libraries(pmemdump LibMain) target_link_libraries(pro LibMain LibProtocol) +target_link_libraries(profile LibMain) target_link_libraries(ps LibMain) target_link_libraries(pwd LibMain) target_link_libraries(realpath LibMain) diff --git a/Userland/Utilities/profile.cpp b/Userland/Utilities/profile.cpp index eacb7e33a3..0ef54426e4 100644 --- a/Userland/Utilities/profile.cpp +++ b/Userland/Utilities/profile.cpp @@ -5,11 +5,13 @@ */ #include +#include +#include #include #include #include -int main(int argc, char** argv) +ErrorOr serenity_main(Main::Arguments arguments) { Core::ArgsParser args_parser; @@ -60,13 +62,13 @@ int main(int argc, char** argv) outln("Event type can be one of: sample, context_switch, page_fault, syscall, kmalloc and kfree."); }; - if (!args_parser.parse(argc, argv, Core::ArgsParser::FailureBehavior::PrintUsage)) { + if (!args_parser.parse(arguments, Core::ArgsParser::FailureBehavior::PrintUsage)) { print_types(); exit(0); } if (!pid_argument && !cmd_argument && !all_processes) { - args_parser.print_usage(stdout, argv[0]); + args_parser.print_usage(stdout, arguments.argv[0]); print_types(); return 0; } @@ -83,10 +85,7 @@ int main(int argc, char** argv) pid_t pid = all_processes ? -1 : atoi(pid_argument); if (wait || enable) { - if (profiling_enable(pid, event_mask) < 0) { - perror("profiling_enable"); - return 1; - } + TRY(Core::System::profiling_enable(pid, event_mask)); if (!wait) return 0; @@ -97,17 +96,11 @@ int main(int argc, char** argv) (void)getchar(); } - if (wait || disable) { - if (profiling_disable(pid) < 0) { - perror("profiling_disable"); - return 1; - } - } + if (wait || disable) + TRY(Core::System::profiling_disable(pid)); - if (free && profiling_free_buffer(pid) < 0) { - perror("profiling_disable"); - return 1; - } + if (free) + TRY(Core::System::profiling_free_buffer(pid)); return 0; } @@ -121,7 +114,7 @@ int main(int argc, char** argv) cmd_argv.append(nullptr); dbgln("Enabling profiling for PID {}", getpid()); - profiling_enable(getpid(), event_mask); + TRY(Core::System::profiling_enable(getpid(), event_mask)); if (execvp(cmd_argv[0], const_cast(cmd_argv.data())) < 0) { perror("execv"); return 1;