Exemplo n.º 1
0
 public void RegisterOperationEvent(KWritableEvent writableEvent)
 {
     if (_systemClockContextUpdateCallback != null)
     {
         _systemClockContextUpdateCallback.RegisterOperationEvent(writableEvent);
     }
 }
Exemplo n.º 2
0
        public KSessionRequest(
            KThread clientThread,
            ulong customCmdBuffAddr,
            ulong customCmdBuffSize,
            KWritableEvent asyncEvent = null)
        {
            ClientThread      = clientThread;
            CustomCmdBuffAddr = customCmdBuffAddr;
            CustomCmdBuffSize = customCmdBuffSize;
            AsyncEvent        = asyncEvent;

            BufferDescriptorTable = new KBufferDescriptorTable();
        }
Exemplo n.º 3
0
        public KernelResult SendAsyncRequest(KWritableEvent asyncEvent, ulong customCmdBuffAddr = 0, ulong customCmdBuffSize = 0)
        {
            KThread currentThread = KernelStatic.GetCurrentThread();

            KSessionRequest request = new KSessionRequest(currentThread, customCmdBuffAddr, customCmdBuffSize, asyncEvent);

            KernelContext.CriticalSection.Enter();

            KernelResult result = _parent.ServerSession.EnqueueRequest(request);

            KernelContext.CriticalSection.Leave();

            return(result);
        }
Exemplo n.º 4
0
        private KernelResult ClearEvent(int handle)
        {
            KernelResult result;

            KWritableEvent writableEvent = _process.HandleTable.GetObject <KWritableEvent>(handle);

            if (writableEvent == null)
            {
                KReadableEvent readableEvent = _process.HandleTable.GetObject <KReadableEvent>(handle);

                result = readableEvent?.Clear() ?? KernelResult.InvalidHandle;
            }
            else
            {
                result = writableEvent.Clear();
            }

            return(result);
        }
Exemplo n.º 5
0
        private KernelResult SignalEvent(int handle)
        {
            KWritableEvent writableEvent = _process.HandleTable.GetObject <KWritableEvent>(handle);

            KernelResult result;

            if (writableEvent != null)
            {
                writableEvent.Signal();

                result = KernelResult.Success;
            }
            else
            {
                result = KernelResult.InvalidHandle;
            }

            return(result);
        }
Exemplo n.º 6
0
 public void RegisterOperationEvent(KWritableEvent writableEvent)
 {
     Monitor.Enter(_operationEventList);
     _operationEventList.Add(writableEvent);
     Monitor.Exit(_operationEventList);
 }
Exemplo n.º 7
0
 public KEvent(Horizon system)
 {
     ReadableEvent = new KReadableEvent(system, this);
     WritableEvent = new KWritableEvent(this);
 }
Exemplo n.º 8
0
 public KEvent(KernelContext context)
 {
     ReadableEvent = new KReadableEvent(context, this);
     WritableEvent = new KWritableEvent(context, this);
 }