blob: 764a5502bac89acdad846bcd500efbf54d458d2f [file] [log] [blame] [edit]
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CONTENT_COMMON_GPU_PRE_SANDBOX_HOOK_LINUX_H_
#define CONTENT_COMMON_GPU_PRE_SANDBOX_HOOK_LINUX_H_
#include <vector>
#include "sandbox/policy/linux/sandbox_linux.h"
namespace sandbox::syscall_broker {
class BrokerFilePermission;
} // namespace sandbox::syscall_broker
namespace content {
// A pre-sandbox hook to use on Linux-based systems in sandboxed processes that
// require general GPU usage.
bool GpuPreSandboxHook(sandbox::policy::SandboxLinux::Options options);
// These functions can be used by other pre-sandbox hooks that need GPU access
// in addition to their other permissions.
// Returns the set of commands (open, stat, unlink, rename, etc...) that are
// needed for a process to use the GPU.
sandbox::syscall_broker::BrokerCommandSet CommandSetForGPU(
const sandbox::policy::SandboxLinux::Options& options);
// Returns a list of file permissions that are needed for a process to use
// the GPU. These will include the libraries that make up the graphics driver.
std::vector<sandbox::syscall_broker::BrokerFilePermission>
FilePermissionsForGpu(
const sandbox::policy::SandboxSeccompBPF::Options& options);
// Loads the libraries needed for a process to use the GPU.
bool LoadLibrariesForGpu(
const sandbox::policy::SandboxSeccompBPF::Options& options);
} // namespace content
#endif // CONTENT_COMMON_GPU_PRE_SANDBOX_HOOK_LINUX_H_