Defect Report concerning: IEEE Std. 1003.1c-1995, ISO/IEC 9945-1:1990 AMD 2 - Threads
Clause: 18.1.2
PASC Interpretation Ref: pasc-1003.1c-10
Topic: cancellation points


This is an unapproved interpretation of PASC 1003.1c-1995, ISO/IEC 9945-1:1990 AMD 2 - Threads.

Use of the information contained in this unapproved document is at your own risk.

Last update: 30 March,1998


								1003.1c-95  #10

 _____________________________________________________________________________

	Interpretation Number:	XXXX
	Topic:               cancellation points
	Relevant Sections:   18.1.2

	From: Andrew Josey (on behalf of X/Open)
	Date: Sat Jul 13 06:42:29 BST 1996

Interpretation Request: (Defect Report)
-----------------------

Section 18.1.2 has the wording:

"A cancellation point may also occur when a thread is
executing the following functions"

This is incorrect and doesn't explain the intent of this section. According
to the current wording, an implementation is not required to support
cancellation. The definition of "may" according to this document is
"..., the feature or behavior is optional." This means that an 
implementation is allowed to disable cancelability within these functions.

The actual intent of POSIX is to say that these functions are cancellation
points if they happen to block during the course of the function call. For all
functions listed, sometimes they may block, sometimes they may not.

The wording as stated is incorrect and allows for incorrectly coded
implementations.

An interpretation is requested to clarify the intended
behavior of these interfaces with respect to cancellation. We believe the
following change is the intent.

Change the wording:

"A cancellation point may also occur when a thread is
executing the following functions:"

To:

"A cancellation point will also occur in the following
functions if the function causes the thread to block:"




Interpretation response
------------------------
The "intent" is that the functions listed in ISO 9945-1:1996 following line 
56 in 18.1.2 are allowed to be cancellation points, just in
case they are implemented using other routines specified to be cancellation
points.

Were it not for this language, these routines cannot use routines which are
cancellation points in their implementation because the standard says that
no POSIX/ANSI routines other than those specified are cancellation points.

Rationale
-------------
None.
Forwarded to Interpretations group: July 12th 1996
Proposed resolution: 18 Sep 96
Finalised: 25 Sep 96