DMARC-Filter: OpenDMARC Filter v1.4.2 delorie.com 62VDv60H2692961 Authentication-Results: delorie.com; dmarc=pass (p=none dis=none) header.from=cygwin.com Authentication-Results: delorie.com; spf=pass smtp.mailfrom=cygwin.com DKIM-Filter: OpenDKIM Filter v2.11.0 delorie.com 62VDv60H2692961 Authentication-Results: delorie.com; dkim=pass (1024-bit key, unprotected) header.d=cygwin.com header.i=@cygwin.com header.a=rsa-sha256 header.s=default header.b=NSUT4BSu X-Recipient: archive-cygwin AT delorie DOT com DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 05D774BB58B4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; s=default; t=1774965425; bh=lvWLnDNxykZ8P9GCioJtc4NRpLwtBqU4bKWSfIQ9e1c=; h=Date:Subject:References:To:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=NSUT4BSuawOt9ZJECaGcnwoV0/ApgTCAHldFkVTjaNDZxX+VNrNKMIC4bSwSTMpMb LQ3yDGYEc9GjVDHUEO1LXuGf4GCgQW0WQywtPft+0H1ma/aKHiKt5syDnAUOnQA7F4 zbNsB9/qdf5xkGX6BXtJc6itcBp4Z8/QA/iBGeI8= X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A452A4BB58B4 ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A452A4BB58B4 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1774965405; cv=pass; b=sRt8AFjpzRGkDjqtm8B0yjkEdzkk7l7Hts4mOrrlFWx1pvEtPGgEuzTEWEm8xPEKnbeqLRrkXb3LvLwJ1nOjblnXwMh6fpkw9XT5F6kWgdBOnz70pQ+u8ya+of0RCUEsm6teRtggA8+guvbIig2zoi5Cc96glYfCtzDBlWLhC2E= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1774965405; c=relaxed/simple; bh=Qlwu9iA7b4k2GOyPdJBFcWMqciPIyRfxk8nWc9Y1urA=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=ioeZdB3FIg7HhRiDPcukRldaaTnPzbunGACU4c+NQcumM2Q+HlqbYKcW9R5hGimtBU+i5VslGQmTJdwBPhdrhGZ8XIvjnCtxVgz04B8+RR58mCwhhZFDYhpbTTQobIEchyYkF2eWTpXcjqBMFBXIsVqAJdWXFXOLOtWI5R3KWYs= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A452A4BB58B4 ARC-Seal: i=1; a=rsa-sha256; t=1774965402; cv=none; d=zohomail.eu; s=zohoarc; b=TQfFGsodQB7i3/BTftg8mXJ22B06PAS4HEoAB6fnEKAjih2433JtZljZcXi4+n+CV5DzCJ2fRC7ucrGWLztNVqauMAp1hySlH8eIW16XchU3njtc5Jx3dVHFHhpUWpmuTaDoJI/9BtYibRitf3PEjVVUSPBvdjtqBRNXO6AOFnc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.eu; s=zohoarc; t=1774965402; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=UeLuIp9qhj05kZ/3ewHZY8hDjCnICCvhjL1WfuGiUfc=; b=H8w5yVK7VmoA5aFw1j3x0CGxfmW7vEaDb1CbvTuVtJ2iYi05FvTDzN2+2pmlfTybiHwfllbndY6lFOF8A+FHz5USuFHfojyqPpFmQ10SF8xYdKmZLOT2+CwZlA/0RCksneNhHG0CmzTROnPKxc5yUxIAoXHpl+eDANAT9w7P9SE= ARC-Authentication-Results: i=1; mx.zohomail.eu; dkim=pass header.i=hamishmb.com; spf=pass smtp.mailfrom=cygwin AT hamishmb DOT com; dmarc=pass header.from= Message-ID: Date: Tue, 31 Mar 2026 14:56:38 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: epoll implementation for Cygwin References: <8d05ff34-1f75-42c1-b72a-621163a68cbf AT hamishmb DOT com> Content-Language: en-US To: The Cygwin Mailing List In-Reply-To: X-ZohoMailClient: External X-BeenThere: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.30 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Hamish McIntyre-Bhatty via Cygwin Reply-To: Hamish McIntyre-Bhatty Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: cygwin-bounces~archive-cygwin=delorie DOT com AT cygwin DOT com Sender: "Cygwin" Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by delorie.com id 62VDv60H2692961 On 23/03/2026 08:02, Jakob Bohm via Cygwin wrote: > On 21/03/2026 01:51, Daisuke Fujimura via Cygwin wrote: >> Hi Hamish and all, >> >> As the author of cygepoll, I’d like to provide some context regarding >> its implementation. >> >> Currently, cygepoll is an experimental wrapper around upoll >> (https://github.com/richardhundt/upoll). In the Cygwin environment, it >> simply maps the epoll interface onto poll or select. >> >> Because it relies on these underlying mechanisms, it doesn't offer the >> performance benefits typically associated with epoll on Linux. It >> essentially carries the same overhead as poll or select. Ah, I see. Thanks for letting me know this. As sys/epoll.h isn't a hard requirement for wxWidgets, I guess using this may be of little to no benefit then. >> >> If the goal is to provide a truly performant epoll implementation for >> Cygwin, I believe it should be implemented natively within >> cygwin1.dll—perhaps by leveraging Windows-specific APIs. > Indeed, Windows sockets (WinSock2) has a more powerful implementation of > select() than traditional POSIX systems like Linux.  In particular, > WinSock native select uses true sets for the handle lists and isn't > limited to the low valued handles like on Linux, though cygwin may be > emulating the Linux-style FD_SET implementation.  There is also the > WSAEventSelect() native function which maps the wait for a single > (socket,condition) to a wait for a single Win32 Event (an NT kernel > KEVENT, which is a tiny object), and the core Win32 API has the > WaitForMultipleObject() family of functions which can wait for up to 64 > such Win32 events or a timeout in parallel, allowing easy handling of > 63 events per thread in a thread pool (Using the 64th slot for > signalling changes to the list of events). > >> Providing cygepoll as a standalone package might offer API >> compatibility, but it wouldn't meet the performance expectations users >> have for epoll. Therefore, I think discussing a native implementation >> within the Cygwin core is a more meaningful path than packaging my >> current experimental library. That makes a lot of sense. Thanks again both. >> >> Best regards, >> >> Daisuke Fujimura >> >> On Sat, Mar 21, 2026 at 6:03 AM Hamish McIntyre-Bhatty via Cygwin >> wrote: >>> Hi all, >>> >>> I recently stumbled across this epoll implementation for Cygwin: >>> https://github.com/fd00/cygepoll >>> >>> I'm not sure how to test it, or even if it would still work, as it is >>> very old, but I know that wxWidgets at least could benefit from >>> something like this. Is there any chance we could integrate it into >>> Cygwin as a package? > > Enjoy > > Jakob Best, Hamish -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple