Austin/317
Minutes of the 11th Plenary Meeting of the Austin Group
12-15 September 2006, The Open Group, Reading, UK
Attendees
Name | Affiliation | Role |
Andrew Josey | The Open Group | Chair |
Nick Stoughton | Usenix | SC 22 OR, Secretary |
Don Cragun | Sun Microsystems | IEEE OR |
Larry Dwyer | HP (teleconference, full) | The Open Group alternate |
Mark Brown | IBM (teleconference, full) | The Open Group OR |
Ulrich Drepper | Red Hat | |
Matthew Rice | Starnix | |
Geoff Clare | The Open Group | |
Cathy Fox | The Open Group | Technical Editor |
Mats Wichmann | Intel/LSB Workgroup (teleconference, part) | |
Evan Leibovitch | LPI (teleconference, part) |
Andrew Josey called the eleventh meeting (a.k.a. Austin/M12, since this counting includes a teleconference) of the Austin Group to order at 9:30 am Tuesday, September 12th at The Open Group offices, Reading, UK.
Meeting Goals
The goal of this meeting is to prepare for D2, including all of the aardvark processing from D1, and current standard. Also to address all of the new material to form editing instructions.
All the participants introduced themselves.
The agenda was approved as published, with the addition of a discussion on approved interpretations/interpretations status (under item 5, Status Reports).
Minutes of the last plenary meeting ( Austin/281, February 21-24, 2006) were reviewed. Approved with no objections.
SD1 No updates.
SD2 - no updates.
Matthew Rice responded to the issues raised at the last Plenary by Stephen Michelle on the difficulties that Canada has had holding together a group of experts to review documents. TABLED. An ISO editing group has been formed (and this meeting is a meeting of the official POSIX editing group).
No updates.
See attendance list above.
Austin Group Status - verbal update by Andrew Josey (see also Austin/305 and Austin/306). Main change since last meeting is that Draft 1 has been produced and balloted. A project plan has been produced (Austin/284). October 31 is the next milestone, for D2. Completion still expected in April 2008. We are on track!
Organizational Reps Status
Austin/285r1 is current scope definition. Austin/284 describes the timeline. Need to review the four new TOG specs this week to understand how to integrate these.
Document FormatNick has developed a new toolchain for document production. Editorial style issues related to this will be discussed later in the agenda. People are encouraged to provide feedback on http://www.opengroup.org/austin/plato/protected/uploads/20/11448/ALL.pdf.
The four extended API sets are in the final throes of approval. We will review each of these documents in detail this week.
CX shading needs to be applied to all changes to headers except dirent.h.
4.1 change UX shading to CX.
4.2 ENOMEM must be CX shaded.
alphasort: add pointer page for scandir().
dirfd: no changes
dprintf: (possible) merge this into fprintf.
getdelim: possible requirment for forwarding page for getline (there are lots of get* functions,
so there may be several pages between the two).
mbsnrtowcs: (possible) merge this page with mbstowcs.
mkdtemp: (possible) merge this page with mkstemp
open_memstream: add see also's in the reverse direction.
psiginfo: add a see also to perror to this page
stpcpy: merge into strcpy
stpncpy: merge into strncpy. ACTION Ulrich to provide words for merging stpncpy with strncpy
strndup: merge with strdup. Both to be mandatory.
strnlen: merge with strlen. strnlen is CX on new page.
strsignal: delete see also to perror.
wcpcpy: merge with wcscpy
wcpncpy: merge with wcsncpy
wcscasecmp: separate page, but ensure alignment with words in strcasecmp.
wcsdup: no changes
wcsncasecmp: merge with wcscasecmp.
wcsnlen: merge with wcslen, CX shaded.
wcsnrtombs: (possible) merge with wcsrtombs
ISSUE for SD1: The standard needs a way to open a directory for searching. While the *at functions which are being added to SUSv4 were being discussed, a proposal was made on a way to open directories for searching; initial attempts to formulate this proposal showed that further thought was necessary, and it was not suitable for standardization at that time.
Wording exists in all *at functions:
The test for whether fd is searchable is based on whether fd is open for searching, not whether the underlying directory currently permits searches. However, the concept of opening a directory for search is no longer in the API set.Replace with:
It is unspecified whether directory searches are permitted based on whether the directory was opened with search permission or on the current permissions of the directory underlying the file descriptor.Also add rationale to XRAT (A.4.4) for this.
Since the current standard does not specify a method for opening a directory for searching it is unspecified whether search permission on the fd argument to openat() and related functions is based on whether the file was opened with search mode or on the current permissions allowed by a directory at the time a search is performed. When there is existing practise that supports opening directories for searching it is expected that these functions will be modified to specify that the search permissions will be granted based on the file access modes of the directory's file descriptor fd and not on the mode of the directory at the time the directory is searched.
Also add new words to 4.12 and 4.4 (normative text) describing directory search permssions and the concept of a pathname relative to a file descriptor.
Any changes to options need to be reflected in 2.1.3 and 2.1.4.
Options to move to base
ASYNCHRONOUS_IO: useful, can be implemented at user level. No reason not to demand it. Move AIO to base. Remove margin code/shading. Mandate macro value as 200xxxL. Also update Annex E to track this option.
POSIX_BARRIERS: no concensus yet.
POSIX_MAPPED_FILES (MF): mandatory for UNIX. Move this to base. Only needs an MMU to be able to implement this. Remove the option MF, mandate the value of the macro to 200xxxL. Also update Annex E to track this option.
POSIX_MEMORY_PROTECT (MPR): similar to mapped files, do the same thing.
POSIX_READER_WRITER_LOCKS already part of threads. Deal with this during THR.
POSIX_REALTIME_SIGNALS (RTS): needed for AIO. Leave open for now. Default position is to move to base unless Larry objects soon.
POSIX_SEMAPHORES (SEM): some overlap with system V semaphores. Not really a problem. Should go to base.
POSIX_SPIN_LOCKS (SPI): this is only intra-process spin-locks, not inter-process. Go to base. THURSDAY: Larry has possible problems here. More research necessary, a lot more than 2 weeks.
POSIX_SYNCHRONIZED_IO (SIO): no concensus yet.
POSIX_THREAD_ATTR_STACKSIZE (TSS): no concensus.
POSIX_THREAD_SAFE_FUNCTIONS (TSF): depends on THR.
POSIX_THREADS (THR): Required in XSI. Seems to be required for all profiles. Make this base. This also brings in Reader-writer-locks and TSF.
POSIX_TIMEOUTS (TMO): everyone has a clock! Lots of customer demand in all systems. Leave open for now, default position is move to base unless Larry objects soon.
XOPEN_ENH_I18N (part of XSI): move to base - may be controversial. Remove XSI shading on these functions, and also on the gencat utility. Functions are catopen, catclose, catgets, nl_langinfo, nl_langinfo_l, setlocale (CX).
POSIX_CLOCK_SELECTION (CS): (Thursday) default position is to move to base. Larry may have problems with the thread interfaces here. Conditional variables by default use CLOCK_REALTIME, which can be reset. Using pthread_condattr_setclock it is possible to specify a clock which does not have this problem, such as CLOCK_MONOTONIC.
Options to be obsoleted
POSIX_SPORADIC_SERVER (SS) and POSIX_THREAD_SPORADIC_SERVER (TSS): treat these together; either both stay or both go. Geoff believes some people are actively developing solutions in this area. Ulrich only knows of problems with it. It is a very specialized set of functions. Really deserves to spin off into its own book (like tracing and possibly even batch). The description of a sporadic server is very vague about what it means. Keep it as an option for now. If nobody is prepared to help support this (i.e. help handle aardvarks against it), then we may revisit this decision and obsolete it before final publication.
Batch (BE): this should all be marked as obsolescent (BE OB). There is only one known implementation; not an issue for portability.
Tracing (TRC) & suboptions (TEF, TRI & TRL): this should all be marked as obsolescent (OB and the original shading).
XOPEN_STREAMS (XSR): should be obsolete.
Functions to be deleted
Legacy: Delete all legacy functions except utimes (which should not be legacy).
XSI Functions to change state
_setjmp and _longjmp. Should become obsolete.
_tolower and _toupper. Should become obsolete.
bsd_signal: marked as obsolete already; delete. No objection.
dlopen, dlcose, dlerror, dlsym: all go to base (remove XSI shading)
fchdir: move to base (i.e. remove XSI)
fstatvfs and statvfs: move to base (remove XSI) (and the related header).
ftw: obsolete. Application usage needs "Applications are encouraged to use nftw". Future directions state it wll be removed later.
getcontext, setcontext, makecontext and swapcontext are already marked OB and should be withdrawn. And header file <ucontext.h>.
getitimer: mark this obsolete in favor of the TMR option functions, and mark the TMR option functions as XSI|TMR. THURSDAY: Move TMR to Base.
getpgid, getsid: move to base.
getsubopt: move to base
gettimeofday: add clock functions from TMR to See Also (clock_getres). Add clock_gettime to Application Usage. Mark interface as obsolete.
iconv, iconv_open, iconv_close: move to base, with <iconv.h>.
isascii: mark obsolete. Application Usage should note that this cannot be used portably in a localized application.
lchown: move to base.
mkstemp: move to base.
nl_langinfo: move to base.
poll: many sighs. Move to base.
pread: move to base.
pthread_attr_get_guardsize and pthread_attr_set_guardsize: move to base. A future aardvark may be submitted to make the default guardsize implementation defined. ACTION: Larry Dwyer to submit an aardvark against pthread_attr_get_guardsize to allow the default size to ne imp def.
pthread_getconcurrency: Leave open for now, default position is obsolete these interfaces unless Don objects soon. ACTION: Don Cragun to submit objection to obsolescence of pthread_[gs]etconcurrency by 2006-10-02.
pthread_mutexattr_gettype and settype: move to base along with PTHREAD_MUTEX*.
pwrite: see pread.
scalb: marked OB already; remove it.
setpgrp: Mark this OB. Add additional Application Usage and/or rationale explaining that the behavior is unspecified whether it matches what sepgid(0,0) or setsid() does unless process is already a session leader. Apps should use one or the other of the alternative interfaces depending on what behavior they want.
sighold etc: was already moved to OB for D1.
siginterrupt: mark this OB. App Usage already says it all.
strcasecmp: move to Base.
strdup: move to base (see consent list).
strfmon: move to base (along with <monetary.h>).
tcgetsid: move to base.
tempnam: mark obsolete. Application Usage should be strengthened to push users harder down the mkstemp, mkdtemp or tmpfile path. Also mark P_tmpdir in <stdio.h> OB.
toascii: mark as OB (same as isascii).
truncate: move to base. There are also several XSI shaded parts of ftruncate. First one: unshade and reword this (remove "XSI-conformant systems"). Second one: still XSI.
ulimit: Obsolete in favor of [gs]etrlimit. Also uses a long rather than an rlim_t
usleep: already OB, should go.
utimes: remove LEGACY marking.
vfork: already marked OB. Should go.
waitid: move to base. Also move the constants etc in <sys/wait.h> from XSI to base. WCONTINUED and WIF_CONTINUED stay XSI. Remove rusage paragraph (only needed for the already removed wait3). Remove <sys/resource.h> throughout sys/wait.h.
writev: same as readv.
XSI Utilities
gencat: move to base.
hash: move to base.
ls: move the following options to base from XSI: -m -n -p -x
m4: move to base, remove from DEVELOPMENT.
tsort: move to base.
Move all UP to Base except fg, bg, jobs, more, talk, and vi. Rationale to explain why these are left: "UP is now an option for Interactive Utilities". Add UP shading to sh and mailx pages for Extended Description.
Headers
cpio.h: move to base
The fcntl page in XSH should lose the first line of the synopsis (optional header unistd.h).
fcntl.h remove XSI shading from "The values used for l_whence ..." and "The symbolic names for file modes ..." and "Inclusion of the ..." (D1 lines 7822 and 7842 and 7875).
fnmatch.h: remove OB shaded text.
glob.h: remove OB shaded text.
iconv.h: move to base.
langinfo.h: move to base.
limits.h: ATEXIT_MAX move to base. Sort the list of numerical limits into alpha order. Remove XSI shading from WORD_BIT, LONG_BIT, (FLT_DIG, DBL_DIG, FLT_MAX, DBL_MAX). Note DBL_DIG, DBL_MAX, FLT_DIG, and FLT_MAX are mentioned only in an introductory paragraph, and not defined. Earlier editions (XSH5/SUSv2 had these as legacy). Looks like they were removed from SUSv3. Remove them from the intro list. "Other Invariant Values": move NL_SETMAX, NL_MSGMAX, NL_TEXTMAX to base (needed for gencat). In NL_ARGMAX change "Maximum value of digit in calls to the printf..." to "Maximum value of n in conversion specifications using the %n$ sequence in the printf and scanf families of functions". NL_NMAX appears to be an editorial error, and should have been dropped in SUSv2. Remove it now.
fprintf rathole
For fprintf, fwprintf, fscanf, fwscanf noted that the %n$ stuff in fprintf is XSI shaded. Also %' . Should move this to CX. D1 lines 13688-13701, 13708-9, 13729-13734 13736-13738, 13759-60. Also 13938 EILSEQ should be CX. And 13944-13955 should be CX. In fscanf, D1 lines 14866-877, 14886 14923-24, 15071, 15072, (the ENOMEM from %m aardvark) all CX. In fwprintf, same as fprintf. Also add a shall fail EOVERFLOW same as fprintf. In fwscanf, same as fscanf.
math.h: MAXFLOAT should be OB and XSI (same as FLT_MAX).
monetary.h: move to base.
nl_types.h: move to base.
poll.h: move to base.
pthread.h: move to base. PTHREAD_MUTEX* move to base. All SPI to base. Note that "TSH|SPI" is now unshaded.
HP Issuespthread_mutexattr_[gs]ettype: move to base.Larry has considerable problems with marking SPI as base. HP cannot implement spin locks efficiently. Needs more time to research.
setjmp.h: Add OB to _longjmp and _setjmp.
signal.h: SIGPOLL should be OB as well as XSR. SIGPROF: should be OB (but SIGSYS SIGTRAP just XSI). SA_RESETHAND: move to base. SA_RESTART: move to base. SA_SIGINFO: move to base. SA_NOCLDWAIT: move to base. SA_NODEFER: move to base. Move the definition of ucontext_t and mcontext_t from ucontext.h into signal.h (in order to support sigaction SA_SIGINFO). This can replace D1 lines 10935-5. This is not shaded. The siginfo_t si_errno field remains XSI, but other XSI only fields in this structure move to base. Noticed bug in current standard XSH 16, line 618. The si_ and SI_ namespace reservations should not be shaded RTS. ACTION: Ulrich to prepare an aardvark (or similar) for sigaction shading changes. D1 line 10957 XSI shading goes. Entire para become CX. In table on D1 page 311, all XSI only move to base. All XSR is "OB XSR". Line 11002 para goes from XSI to CX shading (up to 11016). In the lisdt of functions starting at D1 line 11021, follow same recommendations as made for the functions themselves in earlier pass.
stdio.h: va_list should be CX shaded not XSI (D1 line 11622) and stddef.h symbols (line 11691) is CX not XSI.
stdlib.h: block starting at line 11746 XSI changes to CX. Also D1 11828-829.
string.h: allow stddef.h as CX on line 11904.
strings.h: header moves to base. ffs() becomes XSI shaded.
sys/time.h: D1 lines 12962-12967 become OB.
sys/timeb.h: only function is legacy ... header should go.
sys/types.h: remove shading from clock_t. id_t becomes base. The useconds_t type can be removed (not the suseconds_t) because the only functions that use it are obsolete being deleted.
unistd.h: remove _XOPEN_LEGACY and _SC_XOPEN_LEGACY. Cathy has other shading changes.
wchar.h: wctype_t should become OB XSI together isw*() functions. This is D1 lines 15198-15209 15222-3 (these are all in <wctype.h> ... we are only phasing out these being declared in this header). XSI shading 15177-9 goes from XSI to CX. Also 15182.
wordexp.h: D1 line 15419 goes to base.
Start with D1 aardvark:
XBD ERN 1 Leave open, add to issues list (SD1) XBD ERN 2 Accept XBD ERN 3 Accept XBD ERN 4 Accept XBD ERN 5 Accept as marked; use "File descriptor value too large" in both places. XBD ERN 6 Accept XRAT ERN 1 Accept XCU ERN 1 Accept XCU ERN 2 Accept XCU ERN 3 Accept XCU ERN 4 Accept XCU ERN 5 Accept XCU ERN 6 Accept as marked, see mail 9733 with find . -exec pathck -p -P {} + Also, as suggested in that email, fix the pax example. XCU ERN 7 Accept XCU ERN 8 Accept XCU ERN 9 Accept XCU ERN 10 Accept XCU ERN 11 Accept XCU ERN 12 Accept XCU ERN 13 Accept XCU ERN 14 Accept XSH ERN 1 Accept XSH ERN 2 Accept XSH ERN 3 Accept XSH ERN 4 DUP of 5 (5 is a superset) XSH ERN 5 Accept as marked; change the xref to _exit. Add heading "Consequences of Process Termination" in _Exit(). Also change signal.h XBD 308 change "with all the consequences of _exit()" to "as if by a call to _exit()". XSH ERN 6 DUP of 5 XSH ERN 7 Accept XSH ERN 8 Accept XSH ERN 9 Accept XSH ERN 10 Accept XSH ERN 11 Accept XSH ERN 12 Accept XSH ERN 13 Accept XSH ERN 14 Accept XSH ERN 15 Accept XSH ERN 16 Accept XSH ERN 17 Accept as marked (Andrew has new text) XSH ERN 18 Accept
Homework Review
Ulrich reporting on changes required to sigaction as a consequence of option reorg yesterday. In D1 line 43087-90, delete "and the implementation supports the Realtime Signals Extension option of the XSI Extension option," and unshade entire para.
Line 43106 and 43114 remove XSI shading.
Line 43129-43140 remove XSI|RTS shading.
Line 43144-43147 remove shading.
Line 43150-57 remove shading. 43158-161 remove shading.
Line 43165 and 43169-70 remove shading.
Section 2.4.3, remove shading from D1 lines 1321-1338. Lines 1340-1 (SI_TIMER) should have been an TMR shading (which moves to base). Line 1342-3 should have been AIO (which moves to base). Line 1344-5 should change from RTS to MSG (which remains an option). Line 1354, SIGBUS is unshaded.
Robust Mutexes Interaction with Thread Priority Inheritance and Protection
Ulrich noted that there may be a problem with the interaction between Robust Mutexes and TPI/TPP. Non robust mutexes can have priority inheritance/protection, but in the glibc implementation TPP will be extremely hard to add for robust mutexes. Need a new option markings for the combination of RM and TPP or TPI (suggest RPP and RPI). For example, pthread_mutexattr_getprotocol D1 35743 on p1122, should change from TPI to "TRI|TPI". RPI = Priority Inheritance for Robust Mutexes. RPP Priority Protection for Robust Mutexes. Change TPI and TPP to mean "Non Robust Mutext Priority Inheritance/Protection" (this is used on D1 p410 line 14313 and 14317).
D1 page 1122 lines 35737 becomes RPI|TPI. 35738 becomes RPP|TPP. Copy 35743-6; in first copy change "mutexes" to "robust mutexes" and shade para "RPI". Second copy change "mutexes" to "non-robust mutexes" and shade "RPP". Do the same thing for para 35747. Para starting at 35760 changes shading to "RPI|TPI". ACTION: Ulrich to file aardvark against pthread_mutexattr_getprotcol for propogation of inheritance for waiters on non-PI mutexes.
pthread_mutex_timedlock (D1 p1112) 35397-35400 change TPI to RPI|TPI.
In unistd.h change the _POSIX_THREAD_PRIO_INHERIT to use "non-robust mutex". Similarly for _POSIX_THREAD_PRIO_PROTECT. D1 page 410. Then duplicate them for the robust version. Names should be _POSIX_THREAD_ROBUST_PRIO_INHERIT and _POSIX_THREAD_ROBUST_PRIO_PROTECT (and sort appropriately). New paras are shaded RPI and RPP accordingly.
Sysconf macros are also needed. Leave to editors. Also the sysconf page needs new macros in table.
Undefined Definition
In mail sequence 6721 Donn Terry suggested:
(This is intended as "for the future" at the moment.) In browsing thru a copy of the C++ standard, I noted that their definition of "undefined" is a bit stronger than ours, in that (in effect) it requires "something reasonable" (although they don't use those words). The way I read it, it would disallow "Rogue-O-Matic" sorts of behaviors (good for the standard, bad for debates about what "undefined" means :-) ) We should probably put this on the list of things to look at in the next revision.We looked at the words in C++:
1.3.12 undefined behavior [defns.undefined]While there are some things we like about this definition, it does not seem to add anything that we really need or want. No action required at this time.
behavior, such as might arise upon use of an erroneous program construct or erroneous data, for which this International Standard imposes no requirements. Undefined behavior may also be expected when this International Standard omits the description of any explicit definition of behavior. [Note: permissible undefined behavior ranges from ignoring the situation completely with unpredictable results, to behaving during translation or program execution in a documented manner characteristic of the environment (with or without the issuance of a diagnostic message), to terminating a translation or execution (with the issuance of a diagnostic message). Many erroneous program constructs do not engender undefined behavior; they are required to be diagnosed. ]
Editing Notes
There is a problem with synopses as noted in XCU ERN 97 against the 2004 edition (about grep). Change Utility Argument Syntax (D1 XBD 201 71491 change "the forms" to "the form", remove 7150. Remove last sentence on 7154-5. Also add at end of current text
The form: utility_name -f option_argument [-f option_argument]... [operand...] indicates that the -f option is required at least once, and may occur multiple times.Change "one or more" to "zero or more" on D1 line 7147. Aardvark has been updated with new words.
ACTION: Don Cragun to examine every XCU synopsis in the next draft to check for correctness.
Cross book xrefs: these would be nice, but there is no funding for more work. Nick will fix a few known problems with xrefs, including turning off the "(on page xxx)" in the SEE ALSOs (selected by an argument to the .cX macro)
Open Interpretations
Austin AI-016: In the Dec 4th 2003 teleconference it was agreed that the formal interpretations response will say the standard is uncleasr and no conformance distinction can be made, and that the notes to the editor should be based on Don's proposed changes but with additional text derived from the suggestion Geoff made in ,mail sequence number 6337. In the email discussion preceding the teleconference, Geoff raised some minor problems with Don's text that will also need to be addressed. ACTION: Geoff to email the points needing consideration on AI-016 to Don. Geoff also pointed out that part of the proposed rationale change is no longer appropriate given that the interpretation response will say that the standard is unclear.
Austin AI-112: Separating the XSI namespace. Geoff and Ulrich agreed to withdraw their objections to the proposed response. This interpretation can now move to APPROVED status.
POSIX Certification Status Report
Joint IEEE/Open Group effort to certify POSIX implementations. Andrew presented a status report on certification (Austin/278).
Work Plan Update
No update to Austin 284, other than marking achieved milestones, and addition of next meeting location and date.
Draft 2 is expected by the end of October, with a review period of 3 months (till the end of January). Will need another face-to-face in February 2007. Propose Menlo Park, CA (courtesy Sun Microsystems). Week of 2/26-3/2.
The meeting adjourned at 15:36, Friday September 15.