Looks good to me. +1 on this revised specification. - Garrett
Roger A. Faulkner wrote: >> Date: Thu, 03 Dec 2009 00:30:10 -0800 >> From: Mike Shapiro <mws at sun.com> >> Subject: Re: delete obsolete system call traps [PSARC/2009/657] >> To: "Roger A. Faulkner" <Roger.Faulkner at sun.com> >> Cc: psarc-ext at sac.sfbay.sun.com, Bart.Smaalders at sun.com, >> > Bryan.Cantrill at sun.com, Michael.Shapiro at sun.com, Darrin.Johnson at > sun.com > > ... > >> I certainly agree some of this is implementation and doesn't matter. >> And from a technical perspective, because the current DTrace syscall >> provider advertises the sysent table names and not the sub-coded man >> page (2) view of system calls (something we intend to rectify >> someday), we marked those names as Private in our stability mechanism. >> >> But from a practical perspective, I'm very uncomfortable with the *at >> part of this project, whereby extremely well-known fundamental names >> used extensively by users of DTrace based on long-standing >> fundamentals like syscall::open:entry just go away, essentially for no >> benefit. >> > > I discussed this matter offline with Michael Shapiro and Bryan Cantrill. > > While it is unfortunate that the current DTrace syscall provider > has caused the syscall trap table to have become a public interface, > DTrace usage is widespread enough to warrent keeping unchanged what > Mike refers to as "extremely well-known fundamental names used > extensively by users of DTrace based on long-standing fundamentals > like syscall::open:entry". > > This not a tenable long-term solution. The kernel <-> user-level > syscall trap interface has never been a Solaris public interface. > The long-term solution is to implement what Mike refers to as > "the sub-coded man page (2) view of system calls" in the DTrace > syscall provider. > > In the interim, for the current PSARC case for deleting obsolete > system call traps, I am changing the proposal as follows: > > =========================================================== > > Retain these old system call traps; > make sure they are called from libc as always so that > existing DTrace scripts continue to work as always: > open() > open64() > stat() > lstat() > fstat() > stat64() > lstat64() > fstat64() > rename() > unlink() > rmdir() > chown() > lchown() > fchown() > access() > > Delete these in favor of open*(path, O_WRONLY | O_CREAT | O_TRUNC, mode): > creat() > creat64() > > Delete this in favor of fcntl(F_DUPFD): > dup() > > Delete these from i386 code in favor of *stat() amd mknod() > (they should have been deleted when COFF support was dropped): > _xstat() > _lxstat() > _fxstat() > _xmknod() > > Delete these (they are never called from libc): > exec() > fork1() > forkall() > poll() > utime() > utimes() > umount() > wait() > lwp_mutex_lock() > lwp_sema_wait() > > Delete this: > fsat() > in favor of individual (new) system call traps for each of its subcodes: > openat() > openat64() > fstatat() > fstatat64() > renameat() > unlinkat() > fchownat() > faccessat() > > =========================================================== > > Roger Faulkner > >