|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 0135 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 0135.
Report 0135 Actions
Problem Report Number 0135 Submitter's Classification Test Suite problem State Resolved Resolution Test Suite Deficiency (TSD) Problem Resolution ID TSD.X.0135 Raised 1994-05-02 08:00 Updated 2003-03-13 08:00 Published 1994-05-04 08:00 Product Standard Internationalised System Calls and Libraries (XPG4) Certification Program The Open Brand certification program Test Suite VSX4 version 4.3.2 Test Identification POSIX.os/devclass/cfsetispee 3 Problem Summary TSD4.135 X/OPEN CAE Specification, System Interfaces and Headers, Issue 4, on tcgetattr, page 457 stated: "If the terminal device does not support split baud rates, the input baud rate stored in the termios st... Problem Text
X/OPEN CAE Specification, System Interfaces and Headers, Issue 4, on
tcgetattr, page 457 stated:
"If the terminal device does not support split baud rates, the input baud
rate stored in the termios structure will be zero."
POSIX-Part 1: System Application Program Interface (API), IEEE std 1003.1
first edition 1990-12-07, Section 7.2.1.2, page 143 stated:
"If differing baud rates are not supported, the rate returned as the
output baud rate shall be the actual baud rate. The rate returned as the
input baud rate shall be either the number zero or the output rate ...".
Our implementation does not support split baud rates. We chose to return
zero for the input baud rate both to conform to the tcgetattr extension
in the X/OPEN CAE Specification and to maintain compatibility for
applications which used the following sequence to change the baud rate:
* tcgetattr
* set CBAUD bits in the termios structure's c_cflag by referencing
them explicitly or by calling cfsetospeed.
* tcsetattr
With the POSIX.1-1990 tcsetattr behavior, this would return an error if
tcgetattr did not return zero for the input baud rate. Under the previous
version of POSIX.1, it was "implementation-defined" whether tcsetattr
would return an error when split baud rates are not supported and the
input baud is non-zero and not equal to the output baud. Our previous
releases ignored the input baud rate, and used only the output baud rate.
This was compliant to the older revision of the POSIX.1 specification, and
allowed the sequence above to work even if the input baud rate returned by
tcgetattr was non-zero. Returning zero for the input speed allows us to
implement the POSIX.1-1990 tcsetattr bahavior while not breaking the
sequence of steps above for setting the baud rate.
The test uses cfsetispeed to set the input speed to zero and uses
cfsetospeed to set the output speed to a particular baud rate. It then
uses tcsetattr to attempt to set that value and calls tcgetattr,
cfgetispeed, and cfgetospeed to check that both output and input speeds
were set to the speed passed to cfsetospeed. If either of the values
returned by cfgetispeed or cfgetospeed does not match, the test judges
that that baud rate is not supported and tries another. Since tcgetattr
returns zero for the input speed, the test thinks none of the speeds is
supported and reports a failure.
The test should be modified to accept this cfgetispeed behavior,
especially since this behavior is specified as an extension to the
tcgetattr description in the X/OPEN CAE Specification.
Test Output
/tset/POSIX.os/devclass/cfsetispee/T.cfsetispee 3 Failed
Test Description:
If general terminal interface supported:
When cfsetispeed(termios_p, 0) and tcsetattr(fildes,
optional_actions, termios_p) are successfully called, the input
baud rate shall be set to the output baud rate.
Posix Ref: Component TCSETATTR Assertion 7.2.1.2-09(C)
Test Strategy:
SET IXON in loop back termios structure SET IXOFF in terminal termios
structure
For each of the specified baud rates:
SET input/output baud rate in terminal structure using
cfsetispeed()/cfsetospeed()
SET terminal information using tcsetattr()
OBTAIN terminal information using tcgetattr()
If input/output baud rate is not set to specified baud rate, baud rate
is not supported
SET input/output baud rate in loop back terminal structure using
cfsetispeed()/cfsetospeed()
SET terminal information using tcsetattr()
OBTAIN terminal information using tcgetattr()
If input/output baud rate is not set to specified baud rate, baud rate
is not supported
If baud rate is supported, CREATE [child process|process pair]
Child: SLEEP using sleep() to allow terminal file to initialise
SET time out.
WRITE data to loop back file using write()
VERIFY that data was written within twice the expected write time
Parent: READ from terminal file using read()
VERIFY that all written data can be read
VERIFY that at least one of the specified baud rates is supported
Test Information:
none of specified speeds are supported
Review Information
Review Type TSMA Review Start Date null Completed null Status Complete Review Recommendation No Resolution Given Review Response
This is accepted as a test suite deficiency.
Review Type SA Review Start Date null Completed null Status Complete Review Resolution Test Suite Deficiency (TSD) Review Conclusion
This is an agreed test suite deficiency.
Problem Reporting System Options:
- View Report 0135
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority