Report 1634 Actions
Problem Report Number |
1634 |
Submitter's Classification |
Specification problem |
State |
Resolved |
Resolution |
Permanent Interpretation (PIN) |
Problem Resolution ID |
PIN.X.0191 |
Raised |
1998-05-11 08:00 |
Updated |
2003-03-13 08:00 |
Published |
1998-06-02 08:00 |
Product Standard |
Internationalised System Calls and Libraries Extended V2 (UNIX 98) |
Certification Program |
The Open Brand certification program |
Test Suite |
VSU version 5.0.2 |
Test Identification |
CAPI.os/ioprim/poll 12 |
Specification |
System Interfaces and Headers Issue 5 |
Location in Spec |
See Problem Text |
Problem Summary |
PIN4U.00057 A chnage to the spec is requested. |
Problem Text |
The description of POLLWRBAND in XSH4v2's description of the poll() function was: POLLWRBAND Priority data (priority band greater than 0) may be written.
This meant that poll would always set the POLLWRBAND flag unless all 255 priority bands were flow controlled.
In practice, once a band had been written on SVR4.2 systems, POLLWRBAND only looked at bands that had been written, so SVR4.2 systems failed the original UNIX 95 tests. They got a waiver and a resolution was passed that resulted in the wording in XSH5: POLLWRBAND Priority data (priority band greater than 0) may be written. This event only examines bands that have been written to at least once.
Although the test suite is testing this wording, we believe that this wording is more restrictive than was intended. We believe the intent was that POLLWRBAND flag should be set for any STREAMS file descriptor that has not yet had ANY priority band written to, or that can be written to on at least one band that has been written to.
In practice, the SVr4 derived poll() implementations set POLLWRBAND for any STREAMS file descriptor before ANY priority band has been set (and for that reason fail this UNIX 98 test). After any priority band has been written to, they do set POLLWRBAND inspecting only bands that have been written to once. This behavior is important from the way application code is structured in general when used with poll(). Also, since most applications use only one priority band, this simple structure is sufficient to detect when they can write to a priority band.
Applications that initialize communications channels to other processes want to be able to set up the STREAMS then set up a loop passing out requests on available channels. The test suite would require all of these applications to change to initialize the channels and use each channel once before going into the loop. This makes the initialization much harder for no gain for the applications.
We request that a corrigenda or resolution be passed changing the last sentence of the XSH5 POLLWRBAND description from "This event only examines bands that have been written to at least once." to "If any priority band has been written to on this STREAM, this event only examines bands that have been written to at least once.".
If such a change is eventually made, applications which rely on historic poll() behavior will not have to be changed and existing working applications will operate with XSH5 poll without any modifications.
|
Test Output |
TEST CASE: poll
TEST PURPOSE #12 A successful call to int poll(struct pollfd fds[], nfds_t nfds, int timeout) shall examine each element of the fds array for instances where the POLLWRBAND flag is set in the events member and data for a priority band greater than 0 which has been written to at least once can be written to the file descriptor specified by the fd member without blocking and shall set the POLLWRBAND flag in the corresponding revents member when found. PREP: Create two streams PREP: Open master pseudo tty PREP: Determine if pseudo tty is a stream PREP: Open slave side of pseudo tty PREP: Initialize the file descriptors and event structure TEST: poll returns correctly when no data has been written ERROR: poll returned incorrect value Expected 0 Received 1
|
Review Information
Review Type |
TSMA Review |
Start Date |
null |
Completed |
null |
Status |
Complete |
Review Recommendation |
No Resolution Given |
Review Response |
We recommend this issue be referred to the Base Work Group and a Temporary Interpretation be granted.
|
Review Type |
SA Review |
Start Date |
null |
Completed |
null |
Status |
Complete |
Review Resolution |
No Resolution Given |
Review Conclusion |
To expedite this issue, we recommend a Temporary Interpretation together with a 14 day review by the Base Working Group.
|
Review Type |
Expert Group Review |
Start Date |
null |
Completed |
null |
Status |
Complete |
Review Resolution |
No Resolution Given |
Review Conclusion |
A Permanent Interpretation should be granted. This issue should be considered for a future revision of the specification.
|
Review Type |
SA Review |
Start Date |
null |
Completed |
null |
Status |
Complete |
Review Resolution |
Permanent Interpretation (PIN) |
Review Conclusion |
A Permanent Interpretation is granted.
|
Problem Reporting System Options:
|