Anonymous | Login | 2023-03-21 12:07 UTC |
Main | My View | View Issues | Change Log | Docs |
Viewing Issue Simple Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||
ID | Category | Severity | Type | Date Submitted | Last Update | ||
0000881 | [1003.1(2013)/Issue7+TC1] System Interfaces | Comment | Enhancement Request | 2014-10-09 06:04 | 2020-10-16 09:06 | ||
Reporter | philip-guenther | View Status | public | ||||
Assigned To | ajosey | ||||||
Priority | normal | Resolution | Duplicate | ||||
Status | Closed | ||||||
Name | Philip Guenther | ||||||
Organization | OpenBSD | ||||||
User Reference | |||||||
Section | ppoll() | ||||||
Page Number | n/a | ||||||
Line Number | n/a | ||||||
Interp Status | --- | ||||||
Final Accepted Text | |||||||
Summary | 0000881: add ppoll() | ||||||
Description |
In general, select() is a harder to use interface than poll(): the fdset sizing is non-trivial with an amazing number of off-by-one errors in the select() call, exceptfds is misused or misinterpreted by many programs, supporting large fd values is inefficient, etc. The issue for POSIX is that pselect() was added without also adding ppoll(). #include <poll.h> int ppoll(struct pollfd fds[], nfds_t nfds, const struct timespec *, const sigset_t *); ppoll is to poll as pselect is to select. Already implemented under that name in both Linux and OpenBSD and, I believe, illumos. NetBSD has this functionality under the name pollts(). |
||||||
Desired Action | Add ppoll() | ||||||
Tags | No tags attached. | ||||||
Attached Files | |||||||
|
![]() |
|||||||
|
![]() |
|
(0002410) joerg (reporter) 2014-10-09 09:49 |
If a new interface should be added, we should rather add the interface from Solaris, currently: _pollsys(struct pollfd *fds, nfds_t nfd, const timespec_t *timeout, const sigset_t *sigmask) that exists since 2003. |
(0002411) geoffclare (manager) 2014-10-09 10:47 |
In Solaris 11, _pollsys() seems to be an internal libc interface that is not exposed for use by applications. It has no prototype in the headers, no man page, and attempting to use it produces an "undefined symbol" linker error. By contrast, Solaris 11 does have a useable ppoll(), with a prototype in <poll.h> and a man page (shared with poll()). |
(0002412) joerg (reporter) 2014-10-09 11:05 |
Sorry, it seems that I did slip the sigmask parameter from the ppoll() proposal from above. BTW: the ppoll() call in Solaris just forwards to _pollsys() |
(0002530) ajosey (manager) 2015-01-29 17:12 |
Martin has sent a call to sponsor the interface to The Open Group Base Working Group (as of Jan 22 2015) |
(0005048) geoffclare (manager) 2020-10-16 09:06 |
Although this bug was chronologically before bug 0001263, the latter has the detailed changes to add ppoll() and so this bug is being closed as a duplicate of it. |
Mantis 1.1.6[^] Copyright © 2000 - 2008 Mantis Group |