コード例 #1
0
        internal static unsafe EPollEvent[] PollEvents(EPoll epoll, int maxEvents, int timeout)
        {
            bool              isPackedEvents = EPoll.PackedEvents;
            EPollEvent *      events         = stackalloc EPollEvent[isPackedEvents ? 0 : maxEvents];
            EPollEventPacked *packedEvents   = stackalloc EPollEventPacked[isPackedEvents ? maxEvents : 0];
            int nrEvents = epoll.Wait(events != null ? (void *)events : (void *)packedEvents, maxEvents, timeout);
            var retval   = new EPollEvent[nrEvents];

            for (int i = 0; i < nrEvents; i++)
            {
                retval[i].Events = isPackedEvents ? packedEvents[i].Events : events[i].Events;
                retval[i].Data   = isPackedEvents ? packedEvents[i].Data   : events[i].Data;
            }
            return(retval);
        }
コード例 #2
0
 internal extern static int EPollControl(EPollHandle __epfd, EPollCommand __op, FileDescriptor __fd, ref EPollEvent __event);
コード例 #3
0
ファイル: EPoll.cs プロジェクト: theojulienne/lucid
 private static extern int epoll_ctl(int epfd, int op, int fd, ref EPollEvent evt);
コード例 #4
0
 internal extern static int EPollWait(EPollHandle __epfd, ref EPollEvent __events, int __maxevents, int __timeout);