|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 0296 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 0296.
Report 0296 Actions
Problem Report Number 0296 Submitter's Classification Specification problem State Resolved Resolution Permanent Interpretation (PIN) Problem Resolution ID PIN.X.0012 Raised 1993-11-15 08:00 Updated 2003-03-13 08:00 Published 1993-11-19 08:00 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/tcflow 15, 16 Specification System Interfaces and Headers Issue 4 Location in Spec See Problem Text Linked Problem Reports PIN4.011, (in, old, system) Problem Summary PIN4.012 Our system (SVR4 based) does not support locally connected asynchronous terminals. In order to run VSX tests, we use a pseudo-tty loopback to simulate the hardware terminal interface. The failures are... Problem Text
Our system (SVR4 based) does not support locally connected asynchronous
terminals. In order to run VSX tests, we use a pseudo-tty loopback to simulate
the hardware terminal interface.
The failures are caused by the limitation of pseudo-tty loopback, not
a defect in our system. So we request a waiver for the above failures.
tcflow 15, 16
The first part of each of these test cases transmits a STOP character to the
terminal device to attempt to stop the transmission of input from the terminal
by executing tcflow(..., TCIOFF) from a child process. They then write to the
terminal from the parent process and read back what was written from the other
end (the loopback connection) to verify that output to the terminal was not
suspended. The test cases expect to see a STOP character in the data read.
The second part of each of these test cases transmit a START character to the
terminal device to attempt to start the transmission of input from the
terminal by executing tcflow(..., TCION) from a child process. They then write
to the terminal from the parent process and read back what was written from
the other end (the loopback connection) to verify that output to the terminal
was not suspended. The test cases expect to see a START character in the
data read.
These tests fail on SVR4-based systems due to the way tcflow is implemented.
When the ioctl generated by tcflow() is processed by the system, the ioctl
is passed to the line discipline STREAMS module ldterm. Ldterm transforms
the ioctl into an M_STOPI ("stop input") or M_STARTI ("start input") control
message that is passed to the pseudo driver emulator STREAMS module ptem.
Ptem sets a flag in an internal structure that will cause input from the
device to be transmitted upstream or not. No STOP or START character
is actually written to the data stream. Therefore, no STOP or START
character will be found in the data read from the pseudo-tty.Test Output
************************************************************************
/tset/POSIX.os/devclass/tcflow/T.tcflow 15 Failed
Test Description:
If general terminal interface supported:
when tcflow() is called from a background process, that is blocking
the SIGTTOU signal, and when fildes refers to a non-controlling
terminal, the tcflow actions shall be performed.
Posix Ref: Component TCFLOW Assertion 7.2.2.2-X4(C)
Test Strategy:
OPEN and initialise terminal file and loop back file
For each action TCOON, TCOOFF, TCION, TCIOFF:
RESTART output of data to loop back file using tcflow() using TCOON
If action is TCOON:
SET time out for WAITTIME
SUSPEND output of data to loop back file using tcflow() using
TCOOFF
CREATE child process
CHILD process:
CREATE new background process group using setpgid(0, 0)
SET signal action for SIGTTOU to signal catching function
BLOCK signal SIGTTOU using sigprocmask()
CREATE process pair
CHILD process:
SET signal action for signal SIGTTOU to signal catching function
SLEEP for WAITTIME/2 (to receive signal, if any)
PARENT process:
CALL tcflow() for the current action
VERIFY that SIGTTOU signal was not received by child process
VERIFY that tcflow() returned zero.
SET time out for WAITTIME
WRITE data to loop back file using write()
IF action is TCOOFF and terminal output is not buffered
VERIFY write timed out
ELSE
VERIFY that write returned the size of data written
SLEEP for a short interval to allow data to be available for reading
SET time out for WAITTIME
READ from loop back file using read()
VERIFY that read did not time out
If action is TCOOFF:
VERIFY that read did not return any data
If action is TCOON:
VERIFY that read returned size of data written
If action is not TCIOFF:
VERIFY that loop back stop character was not read
If action is TCIOFF:
VERIFY that loop back stop character was read
If action is not TCION:
VERIFY that loop back start character was not read
If action is TCION:
VERIFY that loop back start character was read
Test Information:
tcflow(TCIOFF) action was not performed
tcflow(TCION) action was not performed
************************************************************************
************************************************************************
/tset/POSIX.os/devclass/tcflow/T.tcflow 16 Failed
Test Description:
If general terminal interface supported:
when tcflow() is called from a background process, that is ignoring
the SIGTTOU signal, and when fildes refers to a non-controlling
terminal, the tcflow actions shall be performed.
Posix Ref: Component TCFLOW Assertion 7.2.2.2-X5(C)
Test Strategy:
OPEN and initialise terminal file and loop back file
For each action TCOON, TCOOFF, TCION, TCIOFF:
RESTART output of data to loop back file using tcflow() using TCOON
If action is TCOON:
SET time out for WAITTIME
SUSPEND output of data to loop back file using tcflow() using
TCOOFF
CREATE child process
CHILD process:
CREATE new background process group using setpgid(0, 0)
SET signal action for SIGTTOU to SIG_IGN
CREATE process pair
CHILD process:
SET signal action for signal SIGTTOU to signal catching function
SLEEP for WAITTIME/2 (to receive signal, if any)
PARENT process:
CALL tcflow() for the current action
VERIFY that SIGTTOU signal was not received by child process
VERIFY that tcflow() returned zero.
SET time out for WAITTIME
WRITE data to loop back file using write()
IF action is TCOOFF and terminal output is not buffered
VERIFY write timed out
ELSE
VERIFY that write returned the size of data written
SLEEP for a short interval to allow data to be available for reading
SET time out for WAITTIME
READ from loop back file using read()
VERIFY that read did not time out
If action is TCOOFF:
VERIFY that read did not return any data
If action is TCOON:
VERIFY that read returned size of data written
If action is not TCIOFF:
VERIFY that loop back stop character was not read
If action is TCIOFF:
VERIFY that loop back stop character was read
If action is not TCION:
VERIFY that loop back start character was not read
If action is TCION:
VERIFY that loop back start character was read
Test Information:
tcflow(TCIOFF) action was not performed
tcflow(TCION) action was not performed
************************************************************************Review Information
Review Type TSMA Review Start Date null Completed null Status Complete Review Recommendation No Resolution Given Review Response
It is accepted that the passing of flow control information across a
pseudo-terminal connection is unnecessary and a permanent interpretation
is recommended.
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:
- View Report 0296
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority