| Index: third_party/mojo/src/mojo/public/go/system/core.go
|
| diff --git a/third_party/mojo/src/mojo/public/go/system/core.go b/third_party/mojo/src/mojo/public/go/system/core.go
|
| deleted file mode 100644
|
| index 9e29cff783a9d3b7a4e883f8113f08821cf060c3..0000000000000000000000000000000000000000
|
| --- a/third_party/mojo/src/mojo/public/go/system/core.go
|
| +++ /dev/null
|
| @@ -1,147 +0,0 @@
|
| -// Copyright 2015 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.
|
| -
|
| -package system
|
| -
|
| -import (
|
| - "runtime"
|
| - "sync"
|
| -)
|
| -
|
| -// core is an instance of the Mojo system APIs implementation.
|
| -var core coreImpl
|
| -
|
| -// Core is an interface giving access to the base operations.
|
| -// See |src/mojo/public/c/system/core.h| for the underlying api.
|
| -type Core interface {
|
| - // AcquireNativeHandle acquires a handle from the native side. The handle
|
| - // will be owned by the returned object and must not be closed outside of
|
| - // it.
|
| - AcquireNativeHandle(handle MojoHandle) UntypedHandle
|
| -
|
| - // GetTimeTicksNow returns a monotonically increasing platform dependent
|
| - // tick count representing "right now". Resolution depends on the system
|
| - // configuration.
|
| - GetTimeTicksNow() MojoTimeTicks
|
| -
|
| - // WaitMany behaves as if Wait were called on each handle/signal pair
|
| - // simultaneously and completing when the first Wait would complete.
|
| - // Notes about return values:
|
| - // |index| can be -1 if the error returned was not caused by a
|
| - // particular handle. For example, the error MOJO_RESULT_DEADLINE_EXCEEDED
|
| - // is not related to a particular handle.
|
| - // |states| can be nil if the signal array could not be returned. This can
|
| - // happen with errors such as MOJO_RESULT_INVALID_ARGUMENT.
|
| - WaitMany(handles []Handle, signals []MojoHandleSignals, deadline MojoDeadline) (result MojoResult, index int, states []MojoHandleSignalsState)
|
| -
|
| - // CreateDataPipe creates a data pipe which is a unidirectional
|
| - // communication channel for unframed data. On success, returns a
|
| - // handle to the producer and consumer of the data pipe.
|
| - CreateDataPipe(opts *DataPipeOptions) (MojoResult, ProducerHandle, ConsumerHandle)
|
| -
|
| - // CreateMessagePipe creates a message pipe which is a bidirectional
|
| - // communication channel for framed data (i.e., messages). Messages
|
| - // can contain plain data and/or Mojo handles. On success, it returns
|
| - // handles to the two endpoints of the message pipe.
|
| - CreateMessagePipe(opts *MessagePipeOptions) (MojoResult, MessagePipeHandle, MessagePipeHandle)
|
| -
|
| - // CreateSharedBuffer creates a buffer of size numBytes that can be
|
| - // shared between applications. One must call MapBuffer to access
|
| - // the buffer.
|
| - CreateSharedBuffer(opts *SharedBufferOptions, numBytes uint64) (MojoResult, SharedBufferHandle)
|
| -}
|
| -
|
| -// coreImpl is an implementation of the Mojo system APIs.
|
| -type coreImpl struct {
|
| - // Protects from making parallel non-blocking mojo cgo calls.
|
| - mu sync.Mutex
|
| -}
|
| -
|
| -// GetCore returns singleton instance of the Mojo system APIs implementation.
|
| -//
|
| -// The implementation uses cgo to call native mojo APIs implementation. Each cgo
|
| -// call uses a separate thread for execution. To limit the number of used
|
| -// threads all non-blocking system calls (i.e. all system calls except |Wait|
|
| -// and |WaitMany|) on this implementation and on handles returned by this
|
| -// implementation are protected by a mutex so that if you make two parallel
|
| -// system calls one will wait for another to finish before executing.
|
| -// However, |Wait| and |WaitMany| are not protected by a mutex and each parallel
|
| -// call will use a separate thread. To reduce number of threads used for |Wait|
|
| -// calls prefer to use |WaitMany|.
|
| -func GetCore() Core {
|
| - return &core
|
| -}
|
| -
|
| -func (impl *coreImpl) AcquireNativeHandle(mojoHandle MojoHandle) UntypedHandle {
|
| - handle := &untypedHandleImpl{baseHandle{impl, mojoHandle}}
|
| - runtime.SetFinalizer(handle, finalizeHandle)
|
| - return handle
|
| -}
|
| -
|
| -func (impl *coreImpl) GetTimeTicksNow() MojoTimeTicks {
|
| - impl.mu.Lock()
|
| - r := sysImpl.GetTimeTicksNow()
|
| - impl.mu.Unlock()
|
| - return MojoTimeTicks(r)
|
| -}
|
| -
|
| -func (impl *coreImpl) WaitMany(handles []Handle, signals []MojoHandleSignals, deadline MojoDeadline) (MojoResult, int, []MojoHandleSignalsState) {
|
| - if len(handles) == 0 {
|
| - r, _, _, _ := sysImpl.WaitMany(nil, nil, uint64(deadline))
|
| - return MojoResult(r), -1, nil
|
| - }
|
| - rawHandles := make([]uint32, len(handles))
|
| - rawSignals := make([]uint32, len(signals))
|
| - for i := 0; i < len(handles); i++ {
|
| - rawHandles[i] = uint32(handles[i].NativeHandle())
|
| - rawSignals[i] = uint32(signals[i])
|
| - }
|
| - r, index, rawSatisfiedSignals, rawSatisfiableSignals := sysImpl.WaitMany(rawHandles, rawSignals, uint64(deadline))
|
| - if MojoResult(r) == MOJO_RESULT_INVALID_ARGUMENT || MojoResult(r) == MOJO_RESULT_RESOURCE_EXHAUSTED {
|
| - return MojoResult(r), index, nil
|
| - }
|
| - signalsStates := make([]MojoHandleSignalsState, len(handles))
|
| - for i := 0; i < len(handles); i++ {
|
| - signalsStates[i].SatisfiedSignals = MojoHandleSignals(rawSatisfiedSignals[i])
|
| - signalsStates[i].SatisfiableSignals = MojoHandleSignals(rawSatisfiableSignals[i])
|
| - }
|
| - return MojoResult(r), index, signalsStates
|
| -}
|
| -
|
| -func (impl *coreImpl) CreateDataPipe(opts *DataPipeOptions) (MojoResult, ProducerHandle, ConsumerHandle) {
|
| -
|
| - var r uint32
|
| - var p, c uint32
|
| - impl.mu.Lock()
|
| - if opts == nil {
|
| - r, p, c = sysImpl.CreateDataPipeWithDefaultOptions()
|
| - } else {
|
| - r, p, c = sysImpl.CreateDataPipe(uint32(opts.Flags), uint32(opts.ElemSize), uint32(opts.Capacity))
|
| - }
|
| - impl.mu.Unlock()
|
| - return MojoResult(r), impl.AcquireNativeHandle(MojoHandle(p)).ToProducerHandle(), impl.AcquireNativeHandle(MojoHandle(c)).ToConsumerHandle()
|
| -}
|
| -
|
| -func (impl *coreImpl) CreateMessagePipe(opts *MessagePipeOptions) (MojoResult, MessagePipeHandle, MessagePipeHandle) {
|
| -
|
| - var flags uint32
|
| - if opts != nil {
|
| - flags = uint32(opts.Flags)
|
| - }
|
| - impl.mu.Lock()
|
| - r, handle0, handle1 := sysImpl.CreateMessagePipe(flags)
|
| - impl.mu.Unlock()
|
| - return MojoResult(r), impl.AcquireNativeHandle(MojoHandle(handle0)).ToMessagePipeHandle(), impl.AcquireNativeHandle(MojoHandle(handle1)).ToMessagePipeHandle()
|
| -}
|
| -
|
| -func (impl *coreImpl) CreateSharedBuffer(opts *SharedBufferOptions, numBytes uint64) (MojoResult, SharedBufferHandle) {
|
| - var flags uint32
|
| - if opts != nil {
|
| - flags = uint32(opts.Flags)
|
| - }
|
| - impl.mu.Lock()
|
| - r, handle := sysImpl.CreateSharedBuffer(flags, numBytes)
|
| - impl.mu.Unlock()
|
| - return MojoResult(r), impl.AcquireNativeHandle(MojoHandle(handle)).ToSharedBufferHandle()
|
| -}
|
|
|