Example #1
0
        private void UninitializePoll(ProcessorPin pin)
        {
            if (pinPolls.TryGetValue(pin, out PinPoll poll))
            {
                pinPolls.Remove(pin);

                var controlResult = poll.InEventPtr != IntPtr.Zero ? OP.epoll_ctl(poll.PollDescriptor, OP.EPOLL_CTL_DEL, poll.FileDescriptor, poll.InEventPtr) : 0;

                Marshal.FreeHGlobal(poll.InEventPtr);
                Marshal.FreeHGlobal(poll.OutEventPtr);

                UnixFile.CloseFileDescriptor(poll.PollDescriptor);
                UnixFile.CloseFileDescriptor(poll.FileDescriptor);

                if (controlResult != 0)
                {
                    throw new IOException("Call to epoll_ctl(EPOLL_CTL_DEL) API failed with the following return value: " + controlResult);
                }
            }
        }