Defect Report concerning: IEEE Std. 1003.1c-1995, ISO/IEC 9945-1:1990 AMD 2 - Threads
Clause: _POSIX_PRIORITIZED_IO
PASC Interpretation Ref: pasc-1003.1c-06
Topic: 6.7.1.1


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  #6

 _____________________________________________________________________________

	Interpretation Number:	XXXX
	Topic:                6.7.1.1
	Relevant Sections:    _POSIX_PRIORITIZED_IO

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

From: "Frank Prindle" <prindle@voicenet.com>
Date: Tue, 28 May 1996 08:52:51 +0000

FOR IEEE STD 1003.1c-1995:

1c1. Subsection 6.7.1.1:

	The first sentence of the fifth paragraph of section 6.7.1.1 says "If
	{_POSIX_PRIORITIZED_IO} and {_POSIX_PRIORITY_SCHEDULING} are defined,
	then asynchronous I/O is queued in priority order, with the priority
	of each asynchronous operation based on the current scheduling priority
	of the calling process."  The statement is ambiguous when the calling
	process is multi-threaded.

	If a multi-threaded process initiates async I/O requests from threads
	of various priorities, what is the "priority of the requesting process"
	for each such request - the priority of the requesting thread, or 
	something else?  This is ill-defined, as a multi-threaded process may
	have several priorities.

	Assuming that the interpretation answers "the priority of the requesting
	thread" to the above question, I suggest that the word "process" in the
	sentence be changed to "thread".  Another possibility is
	that it is the priority of the "initial" thread started when the process
	was created, but this creates problems for async I/O requests from other
	threads subsequently created with a higher priority, since they cannot
	utilize their higher priority to advantage.


Interpretation response
------------------------
The standard is clear: the priority is that of the process as set by 
sched_setparam or other mechanisms.  Even in the presence of threads 
this remains a 'well defined' term and value.  A conforming 
implementation shall use that value in the calculation of the I/O 
priority.

Rationale
-------------
None.
Forwarded to Interpretations group: May 28 1996
Finalised: July 10th 1996.