910e62b5创建于 1月15日历史提交
// 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_