1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #include "GPUProcessImpl.h"
7 #include "mozilla/ipc/IOThreadChild.h"
9 #include "ProcessUtils.h"
11 #if defined(OS_WIN) && defined(MOZ_SANDBOX)
12 # include "mozilla/sandboxTarget.h"
13 #elif defined(__OpenBSD__) && defined(MOZ_SANDBOX)
14 # include "mozilla/SandboxSettings.h"
22 GPUProcessImpl::GPUProcessImpl(ProcessId aParentPid
)
23 : ProcessChild(aParentPid
) {}
25 GPUProcessImpl::~GPUProcessImpl() = default;
27 bool GPUProcessImpl::Init(int aArgc
, char* aArgv
[]) {
28 #if defined(MOZ_SANDBOX) && defined(OS_WIN)
29 mozilla::SandboxTarget::Instance()->StartSandbox();
30 #elif defined(__OpenBSD__) && defined(MOZ_SANDBOX)
31 StartOpenBSDSandbox(GeckoProcessType_GPU
);
33 char* parentBuildID
= nullptr;
34 char* prefsHandle
= nullptr;
35 char* prefMapHandle
= nullptr;
36 char* prefsLen
= nullptr;
37 char* prefMapSize
= nullptr;
38 for (int i
= 1; i
< aArgc
; i
++) {
42 if (strcmp(aArgv
[i
], "-parentBuildID") == 0) {
43 parentBuildID
= aArgv
[i
+ 1];
46 } else if (strcmp(aArgv
[i
], "-prefsHandle") == 0) {
50 prefsHandle
= aArgv
[i
];
51 } else if (strcmp(aArgv
[i
], "-prefMapHandle") == 0) {
55 prefMapHandle
= aArgv
[i
];
57 } else if (strcmp(aArgv
[i
], "-prefsLen") == 0) {
62 } else if (strcmp(aArgv
[i
], "-prefMapSize") == 0) {
66 prefMapSize
= aArgv
[i
];
70 SharedPreferenceDeserializer deserializer
;
71 if (!deserializer
.DeserializeFromSharedMemory(prefsHandle
, prefMapHandle
,
72 prefsLen
, prefMapSize
)) {
76 return mGPU
.Init(ParentPid(), parentBuildID
, IOThreadChild::message_loop(),
77 IOThreadChild::TakeChannel());
80 void GPUProcessImpl::CleanUp() { NS_ShutdownXPCOM(nullptr); }
83 } // namespace mozilla