1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef __mozilla_ProcInfo_h
7 #define __mozilla_ProcInfo_h
9 #include <base/process.h>
11 #include "mozilla/dom/ipc/IdType.h"
12 #include "mozilla/MozPromise.h"
17 class GeckoChildProcessHost
;
20 // Process types. When updating this enum, please make sure to update
21 // WebIDLProcType, ChromeUtils::RequestProcInfo and ProcTypeToWebIDL to
22 // mirror the changes.
24 // These must match the ones in ContentParent.h, and E10SUtils.jsm
33 // the rest matches GeckoProcessTypes.h
34 Browser
, // Default is named Browser here
43 #ifdef MOZ_ENABLE_FORKSERVER
47 // Unknown type of process
54 base::ProcessId tid
= 0;
55 // Thread name, if any.
60 uint64_t cpuKernel
= 0;
65 base::ProcessId pid
= 0;
66 // Child Id as defined by Firefox when a child process is created.
67 dom::ContentParentId childId
;
72 // Process filename (without the path name).
75 uint64_t virtualMemorySize
= 0;
77 int64_t residentSetSize
= 0;
81 uint64_t cpuKernel
= 0;
82 // Threads owned by this process.
83 CopyableTArray
<ThreadInfo
> threads
;
86 typedef MozPromise
<ProcInfo
, nsresult
, true> ProcInfoPromise
;
89 * GetProcInfo() uses a background thread to perform system calls.
91 * Depending on the platform, this call can be quite expensive and the
92 * promise may return after several ms.
95 RefPtr
<ProcInfoPromise
> GetProcInfo(base::ProcessId pid
, int32_t childId
,
96 const ProcType
& processType
,
97 const nsAString
& origin
,
98 mach_port_t aChildTask
= MACH_PORT_NULL
);
100 RefPtr
<ProcInfoPromise
> GetProcInfo(base::ProcessId pid
, int32_t childId
,
101 const ProcType
& processType
,
102 const nsAString
& origin
);
105 } // namespace mozilla