Files
ladybird/Userland/Libraries/LibWebView/Platform/ProcessInfo.h
Andrew Kaster 8c5e64e686 Ladybird+LibWebView: Add mechanism to get Mach task port for helpers
On macOS, it's not trivial to get a Mach task port for your children.
This implementation registers the chrome process as a well-known
service with launchd based on its pid, and lets each child process
send over a reference to its mach_task_self() back to the chrome.

We'll need this Mach task port right to get process statistics.
2024-04-09 16:43:27 -06:00

52 lines
836 B
C++

/*
* Copyright (c) 2024, Andrew Kaster <akaster@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/Types.h>
#if defined(AK_OS_MACH)
# include <LibCore/MachPort.h>
#endif
namespace WebView {
enum class ProcessType {
Chrome,
WebContent,
WebWorker,
SQLServer,
RequestServer,
ImageDecoder,
};
struct ProcessInfo {
ProcessInfo(ProcessType type, pid_t pid)
: type(type)
, pid(pid)
{
}
ProcessType type = ProcessType::WebContent;
pid_t pid;
u64 memory_usage_bytes = 0;
float cpu_percent = 0.0f;
u64 time_spent_in_process = 0;
#if defined(AK_OS_MACH)
Core::MachPort child_task_port;
ProcessInfo(pid_t pid, Core::MachPort&& port)
: pid(pid)
, child_task_port(move(port))
{
}
#endif
};
}