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


Reply via email to