HomeAbout Us A-Z IndexSearch * Contact Us Register LoginPress Shop

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 0296 Details

Help 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:

     

    Back   


Contact the Certification Authority