diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /toolkit/components/glean/ipc/FOGIPC.h | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/glean/ipc/FOGIPC.h')
-rw-r--r-- | toolkit/components/glean/ipc/FOGIPC.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/toolkit/components/glean/ipc/FOGIPC.h b/toolkit/components/glean/ipc/FOGIPC.h new file mode 100644 index 0000000000..3701f71838 --- /dev/null +++ b/toolkit/components/glean/ipc/FOGIPC.h @@ -0,0 +1,102 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef FOGIPC_h__ +#define FOGIPC_h__ + +#include <functional> + +#include "mozilla/Maybe.h" +#include "mozilla/MozPromise.h" +#include "nsTArrayForwardDeclare.h" + +namespace mozilla { +namespace ipc { +class ByteBuf; +} // namespace ipc +} // namespace mozilla + +// This module provides the interface for FOG to communicate between processes. + +namespace mozilla { +namespace glean { + +/** + * The parent process is asking you to flush your data ASAP. + * + * @param aResolver - The function you need to call with the bincoded, + * serialized payload that the Rust impl hands you. + */ +void FlushFOGData(std::function<void(ipc::ByteBuf&&)>&& aResolver); + +/** + * Called by FOG on the parent process when it wants to flush all its + * children's data. + * @param aResolver - The function that'll be called with the results. + */ +void FlushAllChildData( + std::function<void(nsTArray<ipc::ByteBuf>&&)>&& aResolver); + +/** + * A child process has sent you this buf as a treat. + * @param buf - a bincoded serialized payload that the Rust impl understands. + */ +void FOGData(ipc::ByteBuf&& buf); + +/** + * Called by FOG on a child process when it wants to send a buf to the parent. + * @param buf - a bincoded serialized payload that the Rust impl understands. + */ +void SendFOGData(ipc::ByteBuf&& buf); + +/** + * Called on the parent process to ask all child processes for data, + * sending it all down into Rust to be used. + * + * @returns a Promise that resolves when the data has made it to the parent. + */ +RefPtr<GenericPromise> FlushAndUseFOGData(); + +/** + * ** Test-only Method ** + * + * Trigger GMP, GPU, RDD or Socket process test instrumentation. + * + * @param processType - one of the PROCESS_TYPE_* constants from nsIXULRuntime. + * @param promise - a promise that will be resolved when the data has made it to + * the target process. + */ +void TestTriggerMetrics(uint32_t processType, + const RefPtr<dom::Promise>& promise); + +#ifdef NIGHTLY_BUILD +/** + * This function records the CPU activity (CPU time used and wakeup count) + * of a specific thread. It is called only by profiler code, either multiple + * times in a row when RecordPowerMetrics asks the profiler to record + * the wakeup counts of all threads, or once when a thread is unregistered. + * + * @param aThreadName The name of the thread for which the CPU data is being + * recorded. + * The name will be converted to lower case, and characters + * that are not valid for glean labels will be replaced with + * '_'. The resulting name should be part of the + * per_thread_labels static list of labels defined in + * toolkit/components/processtools/metrics.yaml. + * @param aCpuTimeMs CPU time in miliseconds since the last time CPU use data + * was recorded for this thread. + * @param aWakeCount How many times the thread woke up since the previous time + * CPU use data was recorded for this thread. + */ +void RecordThreadCpuUse(const nsACString& aThreadName, uint64_t aCpuTimeMs, + uint64_t aWakeCount); +#endif + +void RecordPowerMetrics(); + +} // namespace glean +} // namespace mozilla + +#endif // FOGIPC_h__ |