chromium/mojo/public/mojom/base/shared_memory.mojom

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module mojo_base.mojom;

// Wraps a shared memory handle with additional type information to convey that
// the handle is only mappable to read-only memory.
[Stable]
struct ReadOnlySharedMemoryRegion {
  handle<shared_buffer> buffer;
};

// Wraps a shared memory handle with additional type information to convey that
// the handle is mappable to writable memory but can also be converted to
// a ReadOnlySharedMemoryRegion for sharing with other clients.
struct WritableSharedMemoryRegion {
  handle<shared_buffer> buffer;
};

// Wraps a shared memory handle with additional type information to convey that
// the handle is always mappable to writable memory by any client which obtains
// a handle duplicated from this one.
[Stable]
struct UnsafeSharedMemoryRegion {
  handle<shared_buffer> buffer;
};