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

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 2516 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 2516.


Report 2516 Actions


    Problem Report Number 2516
    Submitter's Classification Specification problem
    State Resolved
    Resolution Permanent Interpretation (PIN)
    Problem Resolution ID PIN.X.0277
    Raised 2006-06-12 16:24
    Updated 2006-06-16 21:44
    Published 2006-06-16 21:44
    Product Standard Internationalised System Calls and Libraries Extended V3 (UNIX 03)
    Certification Program The Open Brand certification program
    Test Suite VSX4 version 4.2.4
    Test Identification POSIX.os/devclass/tcflow 4, 5, 7, 8
    Specification Base Definitions Issue 6
    Location in Spec See Problem Text
    Linked Problem Reports 0295
    Problem Summary 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
    the defect in our system. So we request a waiver for above failures.

    tcflow 4, tcflow 7

    Each of these test cases transmit a STOP character to the terminal
    device to stop the transmission of input from the terminal by executing
    tcflow(..., TCIOFF). They then write to the terminal 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 there to be a STOP
    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 kernel, the ioctl
    is passed to the line discipline STREAMS module ldterm. Ldterm
    transforms the
    ioctl into an M_STOPI ("stop 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 not be transmitted
    upstream.
    No STOP character is actually written to the data stream. Because of
    this, no
    STOP character will be present in the data read from the loopback
    connection.

    tcflow 5, tcflow 8

    These test cases transmit a START character to the terminal device
    to start the transmission of input from the terminal by executing
    tcflow(..., TCION). They then write to the terminal 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 there to be a START
    character in the data read.

    These tests fail on SVR4-based systems due to the way tcflow is
    implemented:
    .br
    When the ioctl generated by tcflow() is processed by the kernel, the
    ioctl is
    passed to the line discipline STREAMS module ldterm. ldterm transforms the
    ioctl into an 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.
    No START character is actually written to the data stream. Because of this,
    no START character will be present in the data read from the loopback
    connection.


    Similar problems were encountered for which a waiver was granted. See
    Waiver PG3.611.
    Test Output
    ************************************************************************
    /tset/POSIX.os/devclass/tcflow/T.tcflow 4 Failed

    Test Description:
    If general terminal interface supported:
    When tcflow(fildes, TCIOFF) is called from a foreground
    process, it
    shall cause the system to transmit a STOP character to the
    terminal, and shall return zero.
    Posix Ref: Component TCFLOW Assertion 7.2.2.2-07(C)

    Test Strategy:
    OPEN and initialise terminal file and loop back file
    RESTART output of data to terminal file using tcflow() using TCOON
    SET time out for WAITTIME
    SEND stop character to terminal file using tcflow() using TCIOFF
    VERIFY that tcflow() returned zero.
    SET time out for WAITTIME
    WRITE data to terminal file using write()
    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
    VERIFY that read returned size of data written
    VERIFY that terminal stop character was read
    VERIFY that terminal start character was not read

    Test Information:
    STOP character was not sent

    ************************************************************************


    ************************************************************************
    /tset/POSIX.os/devclass/tcflow/T.tcflow 5 Failed

    Test Description:
    If general terminal interface supported:
    When tcflow(fildes, TCION) is called from a foreground
    process, it
    shall cause the system to transmit a START character to the
    terminal to restart suspended input, and shall return zero.
    Posix Ref: Component TCFLOW Assertion 7.2.2.2-08(C)

    Test Strategy:
    OPEN and initialise terminal file and loop back file
    RESTART output of data to terminal file using tcflow() using TCOON
    SET time out for WAITTIME
    SEND start character to terminal file using tcflow() using TCION
    VERIFY that tcflow() returned zero.
    SET time out for WAITTIME
    WRITE data to terminal file using write()
    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
    VERIFY that read returned size of data written
    VERIFY that terminal start character was read
    VERIFY that terminal stop character was not read

    Test Information:
    START character was not sent

    ************************************************************************


    ************************************************************************
    /tset/POSIX.os/devclass/tcflow/T.tcflow 7 Failed

    Test Description:
    If general terminal interface supported:
    If _POSIX_JOB_CONTROL is implemented, when tcflow() is called
    from
    a background process, that is blocking the SIGTTOU signal, a
    SIGTTOU signal shall not be sent to the process group associated
    with the calling process and the tcflow() actions shall be
    performed.
    Posix Ref: Component TCFLOW Assertion 7.2.2.2-10(C)

    Test Strategy:
    OPEN and initialise terminal file and loop back file
    For each action TCOON, TCOOFF, TCION, TCIOFF:
    RESTART output of data to terminal file using tcflow() using TCOON
    If action is TCOON:
    SET time out for WAITTIME
    SUSPEND output of data to terminal 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 terminal 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 terminal stop character was not read
    If action is TCIOFF:
    VERIFY that terminal stop character was read
    If action is not TCION:
    VERIFY that terminal start character was not read
    If action is TCION:
    VERIFY that terminal 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 8 Failed

    Test Description:
    If general terminal interface supported:
    If _POSIX_JOB_CONTROL is implemented, when tcflow() is called
    from
    a background process, that is ignoring the SIGTTOU signal, a
    SIGTTOU signal shall not be sent to the process group associated
    with the calling process and the tcflow() actions shall be
    performed.
    Posix Ref: Component TCFLOW Assertion 7.2.2.2-11(C)

    Test Strategy:
    OPEN and initialise terminal file and loop back file
    For each action TCOON, TCOOFF, TCION, TCIOFF:
    RESTART output of data to terminal file using tcflow() using TCOON
    If action is TCOON:
    SET time out for WAITTIME
    SUSPEND output of data to terminal 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 terminal 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 terminal stop character was not read
    If action is TCIOFF:
    VERIFY that terminal stop character was read
    If action is not TCION:
    VERIFY that terminal start character was not read
    If action is TCION:
    VERIFY that terminal start character was read

    Test Information:
    tcflow(TCIOFF) action was not performed
    tcflow(TCION) action was not performed

    ************************************************************************

    Review Information

    Review Type SA Review
    Start Date 2006-06-12 16:24
    Last Updated 2006-06-15 00:23
    Completed 2006-06-15 00:23
    Status Complete
    Review Resolution Permanent Interpretation (PIN)
    Review Conclusion The PR is an agreed Permanent Interpretation.

    Problem Reporting System Options:

     

    Back   


Contact the Certification Authority