This is the mail archive of the cygwin-patches mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Cygwin select() issues and improvements


John,


Ping?  I'd be interested to get your patches into Cygwin.  select
really needs some kicking :)


Thanks,
Corinna


On Feb 19 11:46, Corinna Vinschen wrote:
> On Feb 18 20:20, john hood wrote:
> > On 2/15/16 7:57 AM, Corinna Vinschen wrote:
> > > On Feb 14 03:09, john hood wrote:
> > >> Various issues with Cygwin's select() annoyed me, and I've spent some
> > >> time gnawing on them.
> > > One of them is that they are not trivial enough to be acceptable without
> > > copyright assignment (except patch 3, but see below).  Please have a
> > > look at https://cygwin.com/contrib.html, the "Before you get started"
> > > section.  There's a link to an "assign.txt" file with instructions.
> > > 
> > > The other one is just this:  Can you please describe each change in the
> > > accompanying patch comment so that it's accessible from the git log?
> > 
> > Sorry for the slow response here.  I have a bad cold and I'm not getting
> > to things quickly.
> 
> I know what you mean.  I'm still coughing badly from the flu I catched
> lately.
> 
> > Microsoft official documentation:
> > 
> > <https://msdn.microsoft.com/en-us/library/windows/desktop/ms687069%28v=vs.85%29.aspx#waitfunctionsandtime-outintervals>
> > 
> > <https://msdn.microsoft.com/en-us/library/windows/hardware/jj602805%28v=vs.85%29.aspx>
> > 
> > Try running my socket-t program in
> > <https://github.com/cgull/cygwin-timeouts> as 'socket-t 10000'; it will
> > report the actual time waited.  On Windows 10, you will see lots of
> > variation in timeouts, with some of them shorter than the requested
> > time.  My ancient Vista laptop has much less variation and is never
> > shorter.  Win7 is similar.
> 
> In the second link it sounds like a change in W8 might causing this.
> 
> > The thing that I think should happen there is that fhandlers'
> > select_{read,write,except}() functions should go away, and an fhandler
> > should only have a poll() function that indicates what's available, and
> > a get_waitable_object() function, that gives sel.wait() something to
> > sleep on.  The select_{read,write,except}() functions, and the
> > always_ready state variables, partially implement both of these pieces
> > of functionality, and really complicate the implementation for select().
> > 
> > I'm not sure I'll ever get to it, these Cygwin issues are very much a
> > side project for me.
> 
> That's ok, but the idea is nice.  It would be cool if we could improve
> select.  From my POV it has at least three downsides.  It's pretty slow,
> the code is complicated, and it's badly commented.  Also, IIRC, the number
> of descriptors is restricted to 63 due to WFMO restricted to this number
> of handles.  This is not a restriction for sockets since sockets are
> using threads per each 63 objects, but the other objects are not doing
> that.  So, yeah, there's a lot to improve on select alone.
> 
> > The last patch in my series reverts from the documented
> > CreateWaitableTimer() interfaces to the ancient, undocumented
> > NTCreateTimer() interfaces only for consistency with the rest of the
> > Cygwin codebase, which only uses NTCreateTimer().  The documented
> > interfaces are all present in XP.  The undocumented interfaces have all
> > the functionality this code needs.
> 
> Using NtCreateTimer is perfectly fine and I think the API is cleaner
> than the CreateWaitableTimer API.
> 
> > I'm on #cygwin and #cygwin-dev, ask questions there if you want.
> 
> Not ATM, but feel free to contact me on the dev channel.
> 
> 
> Thanks,
> Corinna
> 
> -- 
> Corinna Vinschen                  Please, send mails regarding Cygwin to
> Cygwin Maintainer                 cygwin AT cygwin DOT com
> Red Hat



-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat

Attachment: signature.asc
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]