| Index: mojo/public/c/include/mojo/system/handle.h
|
| diff --git a/mojo/public/c/include/mojo/system/handle.h b/mojo/public/c/include/mojo/system/handle.h
|
| deleted file mode 100644
|
| index aa567b116e73480df612013a8300af005bbcf65e..0000000000000000000000000000000000000000
|
| --- a/mojo/public/c/include/mojo/system/handle.h
|
| +++ /dev/null
|
| @@ -1,204 +0,0 @@
|
| -// Copyright 2016 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.
|
| -
|
| -// This file contains Mojo system handle-related declarations/definitions.
|
| -//
|
| -// Note: This header should be compilable as C.
|
| -
|
| -#ifndef MOJO_PUBLIC_C_INCLUDE_MOJO_SYSTEM_HANDLE_H_
|
| -#define MOJO_PUBLIC_C_INCLUDE_MOJO_SYSTEM_HANDLE_H_
|
| -
|
| -#include <mojo/macros.h>
|
| -#include <mojo/result.h>
|
| -#include <stdint.h>
|
| -
|
| -// |MojoHandle|: Handles to Mojo objects.
|
| -// |MOJO_HANDLE_INVALID| - A value that is never a valid handle.
|
| -
|
| -typedef uint32_t MojoHandle;
|
| -
|
| -#define MOJO_HANDLE_INVALID ((MojoHandle)0)
|
| -
|
| -// |MojoHandleRights|: Rights ("permissions") for handles. Each handle has a
|
| -// bitset of rights flags, which subsequently only be reduced. See each function
|
| -// for details about the right(s) required (some, like |MojoClose()|, require no
|
| -// rights).
|
| -// |MOJO_HANDLE_RIGHT_NONE| - No rights.
|
| -// |MOJO_HANDLE_RIGHT_DUPLICATE| - Right to duplicate a handle.
|
| -// |MOJO_HANDLE_RIGHT_TRANSFER| - Right to transfer a handle (e.g., include in
|
| -// a message).
|
| -// |MOJO_HANDLE_RIGHT_READ| - Right to "read" from the handle (e.g., read a
|
| -// message).
|
| -// |MOJO_HANDLE_RIGHT_WRITE| - Right to "write" to the handle (e.g., write a
|
| -// message).
|
| -// |MOJO_HANDLE_RIGHT_GET_OPTIONS| - Right to get a handle's options.
|
| -// |MOJO_HANDLE_RIGHT_SET_OPTIONS| - Right to set a handle's options.
|
| -// |MOJO_HANDLE_RIGHT_MAP_READABLE| - Right to "map" a (e.g., buffer) handle
|
| -// as readable memory.
|
| -// |MOJO_HANDLE_RIGHT_MAP_WRITABLE| - Right to "map" a (e.g., buffer) handle
|
| -// as writable memory.
|
| -// |MOJO_HANDLE_RIGHT_MAP_EXECUTABLE| - Right to "map" a (e.g., buffer) handle
|
| -// as executable memory.
|
| -//
|
| -// TODO(vtl): Add rights support/checking to existing handle types.
|
| -
|
| -typedef uint32_t MojoHandleRights;
|
| -
|
| -#define MOJO_HANDLE_RIGHT_NONE ((MojoHandleRights)0)
|
| -#define MOJO_HANDLE_RIGHT_DUPLICATE ((MojoHandleRights)1 << 0)
|
| -#define MOJO_HANDLE_RIGHT_TRANSFER ((MojoHandleRights)1 << 1)
|
| -#define MOJO_HANDLE_RIGHT_READ ((MojoHandleRights)1 << 2)
|
| -#define MOJO_HANDLE_RIGHT_WRITE ((MojoHandleRights)1 << 3)
|
| -#define MOJO_HANDLE_RIGHT_GET_OPTIONS ((MojoHandleRights)1 << 4)
|
| -#define MOJO_HANDLE_RIGHT_SET_OPTIONS ((MojoHandleRights)1 << 5)
|
| -#define MOJO_HANDLE_RIGHT_MAP_READABLE ((MojoHandleRights)1 << 6)
|
| -#define MOJO_HANDLE_RIGHT_MAP_WRITABLE ((MojoHandleRights)1 << 7)
|
| -#define MOJO_HANDLE_RIGHT_MAP_EXECUTABLE ((MojoHandleRights)1 << 8)
|
| -
|
| -// |MojoHandleSignals|: Used to specify signals that can be waited on for a
|
| -// handle (and which can be triggered), e.g., the ability to read or write to
|
| -// the handle.
|
| -// |MOJO_HANDLE_SIGNAL_NONE| - No flags. |MojoWait()|, etc. will return
|
| -// |MOJO_RESULT_FAILED_PRECONDITION| if you attempt to wait on this.
|
| -// |MOJO_HANDLE_SIGNAL_READABLE| - Can read (e.g., a message) from the handle.
|
| -// |MOJO_HANDLE_SIGNAL_WRITABLE| - Can write (e.g., a message) to the handle.
|
| -// |MOJO_HANDLE_SIGNAL_PEER_CLOSED| - The peer handle is closed.
|
| -// |MOJO_HANDLE_SIGNAL_READ_THRESHOLD| - Can read a certain amount of data
|
| -// from the handle (e.g., a data pipe consumer; see
|
| -// |MojoDataPipeConsumerOptions|).
|
| -
|
| -typedef uint32_t MojoHandleSignals;
|
| -
|
| -#define MOJO_HANDLE_SIGNAL_NONE ((MojoHandleSignals)0)
|
| -#define MOJO_HANDLE_SIGNAL_READABLE ((MojoHandleSignals)1 << 0)
|
| -#define MOJO_HANDLE_SIGNAL_WRITABLE ((MojoHandleSignals)1 << 1)
|
| -#define MOJO_HANDLE_SIGNAL_PEER_CLOSED ((MojoHandleSignals)1 << 2)
|
| -#define MOJO_HANDLE_SIGNAL_READ_THRESHOLD ((MojoHandleSignals)1 << 3)
|
| -#define MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD ((MojoHandleSignals)1 << 4)
|
| -
|
| -// |MojoHandleSignalsState|: Returned by wait functions to indicate the
|
| -// signaling state of handles. Members are as follows:
|
| -// - |satisfied signals|: Bitmask of signals that were satisfied at some time
|
| -// before the call returned.
|
| -// - |satisfiable signals|: These are the signals that are possible to
|
| -// satisfy. For example, if the return value was
|
| -// |MOJO_RESULT_FAILED_PRECONDITION|, you can use this field to
|
| -// determine which, if any, of the signals can still be satisfied.
|
| -// Note: This struct is not extensible (and only has 32-bit quantities), so it's
|
| -// 32-bit-aligned.
|
| -
|
| -MOJO_STATIC_ASSERT(MOJO_ALIGNOF(uint32_t) == 4, "uint32_t has weird alignment");
|
| -struct MOJO_ALIGNAS(4) MojoHandleSignalsState {
|
| - MojoHandleSignals satisfied_signals;
|
| - MojoHandleSignals satisfiable_signals;
|
| -};
|
| -MOJO_STATIC_ASSERT(sizeof(struct MojoHandleSignalsState) == 8,
|
| - "MojoHandleSignalsState has wrong size");
|
| -
|
| -MOJO_BEGIN_EXTERN_C
|
| -
|
| -// |MojoClose()|: Closes the given |handle|.
|
| -//
|
| -// Returns:
|
| -// |MOJO_RESULT_OK| on success.
|
| -// |MOJO_RESULT_INVALID_ARGUMENT| if |handle| is not a valid handle.
|
| -// |MOJO_RESULT_BUSY| if |handle| is currently in use in some transaction
|
| -// (that, e.g., may result in it being invalidated, such as being sent in
|
| -// a message).
|
| -//
|
| -// Concurrent operations on |handle| may succeed (or fail as usual) if they
|
| -// happen before the close, be cancelled with result |MOJO_RESULT_CANCELLED| if
|
| -// they properly overlap (this is likely the case with |MojoWait()|, etc.), or
|
| -// fail with |MOJO_RESULT_INVALID_ARGUMENT| if they happen after.
|
| -MojoResult MojoClose(MojoHandle handle); // In.
|
| -
|
| -// |MojoGetRights()|: Gets the given |handle|'s rights.
|
| -//
|
| -// On success, |*rights| (|rights| must be non-null) will be set to |handle|'s
|
| -// rights.
|
| -//
|
| -// Returns:
|
| -// |MOJO_RESULT_OK| on success.
|
| -// |MOJO_RESULT_INVALID_ARGUMENT| if |handle| is not a valid handle.
|
| -// |MOJO_RESULT_BUSY| if |handle| is currently in use in some transaction
|
| -// (that, e.g., may result in it being invalidated, such as being sent in
|
| -// a message).
|
| -MojoResult MojoGetRights(MojoHandle handle, MojoHandleRights* rights); // Out.
|
| -
|
| -// |MojoReplaceHandleWithReducedRights()|: Replaces |handle| with an equivalent
|
| -// one with reduced rights.
|
| -//
|
| -// On success, |*replacement_handle| will be a handle that is equivalent to
|
| -// |handle| (before the call), but with:
|
| -//
|
| -// replacement handle rights = current rights & ~rights_to_remove.
|
| -//
|
| -// |handle| will be invalidated and any ongoing two-phase operations (e.g., for
|
| -// data pipes) on |handle| will be aborted.
|
| -//
|
| -// On failure, |handle| will remain valid and unchanged (with any ongoing
|
| -// two-phase operations undisturbed) and |*replacement_handle| will not be set.
|
| -//
|
| -// Note that it is not an error to "remove" rights that the handle does not
|
| -// (currently) possess.
|
| -//
|
| -// Returns:
|
| -// |MOJO_RESULT_OK| on success.
|
| -// |MOJO_RESULT_INVALID_ARGUMENT| if |handle| is not a valid handle.
|
| -// |MOJO_RESULT_RESOURCE_EXHAUSTED| if a process/system/quota/etc. limit has
|
| -// been reached.
|
| -// |MOJO_RESULT_BUSY| if |handle| is currently in use in some transaction
|
| -// (that, e.g., may result in it being invalidated, such as being sent in
|
| -// a message).
|
| -MojoResult MojoReplaceHandleWithReducedRights(
|
| - MojoHandle handle,
|
| - MojoHandleRights rights_to_remove,
|
| - MojoHandle* replacement_handle); // Out.
|
| -
|
| -// |MojoDuplicateHandleWithReducedRights()|: Duplicates |handle| to a new handle
|
| -// with reduced rights. This requires |handle| to have the
|
| -// |MOJO_HANDLE_RIGHT_DUPLICATE| (note that some handle types may never have
|
| -// this right).
|
| -//
|
| -// The rights for the new handle are determined as in
|
| -// |MojoReplaceHandleWithReducedRights()|. That is, on success:
|
| -//
|
| -// new handle rights = original handle rights & ~rights_to_remove.
|
| -//
|
| -// Returns:
|
| -// |MOJO_RESULT_OK| on success.
|
| -// |MOJO_RESULT_INVALID_ARGUMENT| if |handle| is not a valid handle.
|
| -// |MOJO_RESULT_PERMISSION_DENIED| if |handle| does not have the
|
| -// |MOJO_HANDLE_RIGHT_DUPLICATE| right.
|
| -// |MOJO_RESULT_RESOURCE_EXHAUSTED| if a process/system/quota/etc. limit has
|
| -// been reached.
|
| -// |MOJO_RESULT_BUSY| if |handle| is currently in use in some transaction
|
| -// (that, e.g., may result in it being invalidated, such as being sent in
|
| -// a message).
|
| -MojoResult MojoDuplicateHandleWithReducedRights(
|
| - MojoHandle handle,
|
| - MojoHandleRights rights_to_remove,
|
| - MojoHandle* new_handle); // Out.
|
| -
|
| -// |MojoDuplicateHandle()|: Duplicates |handle| to a new handle with equivalent
|
| -// rights. This requires |handle| to have the |MOJO_HANDLE_RIGHT_DUPLICATE|.
|
| -// This is equivalent to |MojoDuplicateHandleWithReducedRights(handle,
|
| -// MOJO_HANDLE_RIGHT_NONE, new_handle)|.
|
| -//
|
| -// Returns:
|
| -// |MOJO_RESULT_OK| on success.
|
| -// |MOJO_RESULT_INVALID_ARGUMENT| if |handle| is not a valid handle.
|
| -// |MOJO_RESULT_PERMISSION_DENIED| if |handle| does not have the
|
| -// |MOJO_HANDLE_RIGHT_DUPLICATE| right.
|
| -// |MOJO_RESULT_RESOURCE_EXHAUSTED| if a process/system/quota/etc. limit has
|
| -// been reached.
|
| -// |MOJO_RESULT_BUSY| if |handle| is currently in use in some transaction
|
| -// (that, e.g., may result in it being invalidated, such as being sent in
|
| -// a message).
|
| -MojoResult MojoDuplicateHandle(MojoHandle handle,
|
| - MojoHandle* new_handle); // Out.
|
| -
|
| -MOJO_END_EXTERN_C
|
| -
|
| -#endif // MOJO_PUBLIC_C_INCLUDE_MOJO_SYSTEM_HANDLE_H_
|
|
|