blob: dc63dd29deb15bd3c27083669cd6c29c8acc92f1 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CONTENT_PUBLIC_COMMON_COMMON_SANDBOX_SUPPORT_LINUX_H_
#define CONTENT_PUBLIC_COMMON_COMMON_SANDBOX_SUPPORT_LINUX_H_
#include <stddef.h>
#include <stdint.h>
#include <string>
#include "content/common/content_export.h"
namespace content {
// GetFontTable loads a specified font table from an open SFNT file.
// fd: a file descriptor to the SFNT file. The position doesn't matter.
// table_tag: the table tag in *big-endian* format, or 0 for the entire font.
// offset: offset into the table or entire font where loading should start.
// The offset must be between 0 and 1 GB - 1.
// output: a buffer of size output_length that gets the data. can be 0, in
// which case output_length will be set to the required size in bytes.
// output_length: size of output, if it's not 0.
//
// returns: true on success.
CONTENT_EXPORT bool GetFontTable(int fd,
uint32_t table_tag,
off_t offset,
uint8_t* output,
size_t* output_length);
// Returns a file descriptor for a shared memory segment. The
// executable flag indicates that the caller intends to use mprotect
// with PROT_EXEC after making a mapping, but not that it intends to
// mmap with PROT_EXEC in the first place. (Some systems, such as
// ChromeOS, disallow PROT_EXEC in mmap on /dev/shm files but do allow
// PROT_EXEC in mprotect on mappings from such files. This function
// can yield an object that has that constraint.)
CONTENT_EXPORT int MakeSharedMemorySegmentViaIPC(size_t length,
bool executable);
// Gets the well-known file descriptor on which we expect to find the
// sandbox IPC channel.
CONTENT_EXPORT int GetSandboxFD();
}; // namespace content
#endif // CONTENT_PUBLIC_COMMON_COMMON_SANDBOX_SUPPORT_LINUX_H_