git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] compat: Add another rudimentary poll() emulation

From
Erik Faye-Lund <kusmabite@googlemail.com>
Date
May 27, 2010, 14:06 UTC
Message-ID
<AANLkTikDcZRHpKp9phlThK5x-8A0OfTYIlhGkqookiFj@mail.gmail.com>
In-Reply-To
<AANLkTiko_Azw-cXNFe11oXkijvtER2I9qiRE_gVFouht@mail.gmail.com>
On Thu, May 27, 2010 at 3:58 PM, Marko Kreen <markokr@gmail.com> wrote:
Show 46 quoted lines
> On 5/27/10, Erik Faye-Lund <kusmabite@googlemail.com> wrote:
>> On Thu, May 27, 2010 at 3:29 PM, Marko Kreen <markokr@gmail.com> wrote:
>>  > On 5/27/10, Erik Faye-Lund <kusmabite@googlemail.com> wrote:
>>  >> On Thu, May 27, 2010 at 1:00 PM, Erik Faye-Lund
>>  >>  <kusmabite@googlemail.com> wrote:
>>  >>  > On Thu, May 27, 2010 at 12:10 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:
>>  >>  >> Implement the subset of poll() semantics needed by git in terms of
>>  >>  >> select(), for use by the Interix port.  Inspired by commit 6ed807f
>>  >>  >> (Windows: A rudimentary poll() emulation, 2007-12-01).
>>  >>  >>
>>  >>  >
>>  >>  > A possible problem with this approach is that the maximum number of
>>  >>  > file descriptors poll can handle limited by RLIMIT_NOFILE, whereas the
>>  >>  > maximum number of file descriptors select can handle is limited by
>>  >>  > FD_SETSIZE.
>>  >>  >
>>  >>  > I don't think this is a big problem in reality, though - both values
>>  >>  > seem to be pretty high in most implementations. And IIRC git-daemon is
>>  >>  > the only one who needs more than 2, and it doesn't even check
>>  >>  > RLIMIT_NOFILE.
>>  >>  >
>>  >>
>>  >>
>>  >> To be clear: I think this strategy is the best option (at least for
>>  >>  non-Windows, where select() might be our only option).
>>  >>
>>  >>  But perhaps you should include a check along the lines of this:
>>  >>
>>  >>  if (nfds > FD_SETSIZE)
>>  >>         return errno = EINVAL, error("poll: nfds must be below %d", FD_SETSIZE);
>>  >>
>>  >>  Just so we can know when the code fails :)
>>  >
>>  > Well, per your own FD_SET example, the FD_SETSIZE on windows
>>  > means different thing than FD_SETSIZE on old-style bitmap-based
>>  > select() implementation.
>>  >
>>  > On Unix, it's max fd number + 1, on windows it's max count.
>>  >
>>
>>
>> Are you sure this applies for all Unix, not just some given Unix-y system?
>
> Not sure.  Just pointing out that the above check is not
> universal enough.
>

Isn't it? How could one possibly pass more than max fd number + 1 file descriptors, since they start at 0? I guess one could specify a given fd more than once, but that'd be kind of redundant... and also very unlikely in our case ;)

-- 
Erik "kusma" Faye-Lund
Previous: Marko KreenNext: Marko Kreen
Message 19 of 39 in “Interix support”
  1. 0/3 Interix supportJonathan Callen, May 27, 2010
  2. 1/3 Support building on systems without poll(2)Jonathan Callen, May 27, 2010
  3. Sverre RabbelierMay 27, 2010
  4. Jeff KingMay 27, 2010
  5. Michael J GruberMay 27, 2010
  6. Jonathan CallenMay 27, 2010
  7. compat: Add another rudimentary poll() emulationJonathan Nieder, May 27, 2010
  8. Erik Faye-LundMay 27, 2010
  9. Marko KreenMay 27, 2010
  10. Erik Faye-LundMay 27, 2010
  11. Marko KreenMay 27, 2010
  12. Erik Faye-LundMay 27, 2010
  13. Albert DvornikMay 27, 2010
  14. Paolo BonziniMay 30, 2010
  15. Erik Faye-LundMay 27, 2010
  16. Marko KreenMay 27, 2010
  17. Erik Faye-LundMay 27, 2010
  18. Marko KreenMay 27, 2010
  19. Erik Faye-LundMay 27, 2010
  20. Marko KreenMay 27, 2010
  21. Erik Faye-LundMay 27, 2010
  22. Marko KreenMay 27, 2010
  23. Erik Faye-LundMay 27, 2010
  24. Peter KjellerstedtMay 27, 2010
  25. Albert DvornikMay 27, 2010
  26. Albert DvornikMay 27, 2010
  27. compat: Add another rudimentary poll() emulationJonathan Nieder, May 30, 2010
  28. Johannes SixtMay 30, 2010
  29. Jonathan NiederMay 30, 2010
  30. Joshua JuranMay 30, 2010
  31. Mac OS 9 (Lamp) portJonathan Nieder, May 31, 2010
  32. Joshua JuranMay 31, 2010
  33. Jonathan NiederMay 31, 2010
  34. Albert DvornikMay 31, 2010
  35. Jonathan NiederMay 31, 2010
  36. Albert DvornikMay 31, 2010
  37. 2/3 Support building without inttypes.hJonathan Callen, May 27, 2010
  38. 3/3 Add Interix supportJonathan Callen, May 27, 2010
  39. Jakub NarebskiMay 28, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.