|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 0404 Details
Show help | Quick Search | Submit a Test Suite Support Request | Click here to view your privileges
This page provides all information on Problem Report 0404.
Report 0404 Actions
Problem Report Number 0404 Submitter's Classification Specification problem State Resolved Resolution Rejected (REJ) Problem Resolution ID REJ.X.0023 Raised 1993-06-03 08:00 Updated 2003-03-13 08:00 Published null Product Standard Internationalised System Calls and Libraries (XPG4) Certification Program The Open Brand certification program Test Suite VSX4 version 4.2.4 Test Identification POSIX.os/devclass/i_noncanon 14 Linked Problem Reports MSF4.003, VWG93-001, (in, old, system) Problem Summary PG4R.023 This has been resolved and a permmanent interpretation has been granted ref. VWG93-001 The test is based on the sentence "if data is in the buffer at the time of the read(), the result will be as if t... Problem Text
This has been resolved and a permmanent interpretation has been granted
ref. VWG93-001
The test is based on the sentence "if data is in the buffer at the time
of the read(), the result will be as if the data has been received immediately
after the read()". (from POSIX.1-90 7.1.1.7)
The test suite takes this to mean the that that the last byte of data in the
input queue should be returned by the read() along with the previous 9 bytes
written. However, due to the multiple buffering inherent in the STREAMS
tty architecture this does not occur.
With STREAMS ttys, there are multiple processing modules each with queues and
buffers associated, and in the test scenario the 9 bytes are passed down the
STREAM after the first timer expired. When the subsequent byte arrives the
timer is reset in the LDTERM STREAMS module. When the read() occurs
only the data previously passed down the STREAM is returned, and the
other byte remains in the STREAM until the timer expires.
We are not sure that the assertion fully supports the test strategy ,
however, if for the moment we assume the test is correct,
we would request a temporary waiver as we feel this is a minor problem
for applications since any application that sets MIN > 0 and TIME > 0
is by this setting expecting the number of bytes returned to be the *smaller*
of MIN and the number of bytes actually read() --- thus an application
in this situation would not be relying on receiving exactly MIN
bytes (if it did require this it could set MIN > 0 and TIME =0), and
thus this implementation would not adversely affect applications.
As such we don't think the test is very meaningful since no real application
could count on this behavior.
Any application that is using raw mode has to be at least a little robust
since it can't count on the sender sending data in any guaranteed time frame.
As a specific example, suppose that the client writes the 9 bytes and
then gets swapped out. The timers could all expire before it is rescheduled
to write the 10th byte. I could construct several viable scenarios like this
in which the application would have to deal with the "wrong" number of
characters coming up.
Since this problem will affect all implementations using STREAMS we would
urge consideration of a permanent temporary waiver --- we are re-architecting
STREAMS in the next major release (due 3Q93), we shall also be lobbying
POSIX.1a to ensure that multiply buffering tty subsystems are viable.Test Output
************************************************************************
/POSIX.os/devclass/i_noncanon/T.i_noncanon 14 Failed
Test Description:
If general terminal interface supported:
When ICANON is clear, MIN > 0, TIME > 0, and data is in the buffer
at the time of the call to read(), then the timer is started as if
data had been received immediately after the call to read().
Posix Ref: Component Terminal Interface Assertion 7.1.1.7.1-35(C)
Test Strategy:
OPEN and initialise terminal file and loop back file
CLEAR ICANON and ECHO in terminal control flags
SET VMIN to READ_MIN and VTIME to 2*READ_TIME
WRITE READ_MIN-1 characters to loop back file file using write()
SLEEP for longer than the inter-byte timer
WRITE 1 character to loop back file file using write()
SLEEP for 2 seconds
SET time out for READ_TIME/10 (half of inter-byte timer)
READ from terminal file using read()
VERIFY that read() returned size of data written
VERIFY that read() was not interrupted by alarm, so read() returned
before timer expired
Test Information:
read() returned 9, expected 10
************************************************************************Review Information
Review Type TSMA Review Start Date null Completed null Status Complete Review Recommendation No Resolution Given Review Response
There is a permanent interpretation for this test under PIN4.008 and
this should be quoted during branding.
Review Type SA Review Start Date null Completed null Status Complete Review Resolution Rejected (REJ) Review Conclusion
This request is refused, please reference PIN4.008.
Problem Reporting System Options:
- View Report 0404
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority