I am sponsoring this automatic case for myself. 1. Introduction
This case adds two new functions to the C library, futimens() and utimensat(), as follows: #include <sys/stat.h> int futimens(int fd, const struct timespec times[2]); int utimensat(int fd, const char *path, const struct timespec times[2], int flag); The commitment level of these interfaces is Committed. The release binding is "patch" (so it can be back-ported to Solaris 10 if required). 2. Discussion Problems with, for example, make on ZFS file systems have emerged because ZFS keeps access and modification times for its files with nanosecond granularity, while commands such as touch(1) will only set access and modification times of its target files to microsecond granularity (rounded down). See the bugid: 6539657 touch(1) does not set the nanosecond timestamp of a file correctly The touch(1) command (and possibly others) need a system call interface that sets access and modification times of files with nanosecond granularity. Happily, such interfaces have been designed and are specified in the latest SUSv4 Posix interface specification: #include <sys/stat.h> int futimens(int fd, const struct timespec times[2]); int utimensat(int fd, const char *path, const struct timespec times[2], int flag); Even though Solaris does not (yet) implement the new Posix standard, there is nothing stopping Solaris from providing a few of the newly-specified interfaces (provided that the names are appropriately hidden from view when an old standards-conforming application is compiled). 3. Interface table Both functions are Committed. Both are specified by the latest Posix specification. 4. References 6815302 Implement futimens, utimensat(POSIX.1-2008) - set file modification times with nanosecond granularity 5. Manual pages. See the materials directory for the futimens(2) manual page. This is copied from the Posix specification, with minor changes such as changing "shall" to "will" in the text. Roger Faulkner