[RFC] [openjdk] provide milisecond modification timestamps

Thomas Meyer thomas at m3y3r.de
Tue Apr 24 10:28:50 PDT 2012


Am Montag, den 23.04.2012, 14:22 -0400 schrieb Andrew Hughes:
> ----- Original Message -----
> > Am Montag, den 23.04.2012, 12:41 -0400 schrieb Andrew Hughes:
> > > ----- Original Message -----
> > > > diff -r 8ac52c85f9e9
> > > > src/solaris/native/java/io/UnixFileSystem_md.c
> > > > --- a/src/solaris/native/java/io/UnixFileSystem_md.c	Wed Feb 23
> > > > 15:49:19
> > > > 2011 -0800
> > > > +++ b/src/solaris/native/java/io/UnixFileSystem_md.c	Sat Apr 21
> > > > 10:11:26
> > > > 2012 +0200
> > > > @@ -197,7 +197,10 @@
> > > >      WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
> > > >          struct stat64 sb;
> > > >          if (stat64(path, &sb) == 0) {
> > > > -            rv = 1000 * (jlong)sb.st_mtime;
> > > > +            if(sb.st_mtimensec != 0)
> > > > +            	rv = (jlong)sb.st_mtimensec / 1000000;
> > > > +            else
> > > > +                rv = 1000 * (jlong)sb.st_mtime;
> > > >          }
> > > >      } END_PLATFORM_STRING(env, path);
> > > >      return rv;
> > > > 
> > > > 
> > > > 
> > > 
> > 
> > Hi Andrew,
> > 
> > > This looks a sensible improvement to me.  I can add it to the
> > > IcedTea
> > > repository.
> > 
> > But it only looks sensible :-) The correct patch against jdk7 is
> > attached!
> > 
> > I looks like the field st_mtim.tv_nsec is just an extension to the
> > second accuracy provided by st_mtim.tv_sec.
> > 
> 
> Ah right, yes this is the same way clock_gettime works, which we use
> to implement System.nanoTime in GNU Classpath:
> 
>   result = (jlong) tp.tv_sec;
>   result *= (jlong)1000000000L;
>   result += (jlong)tp.tv_nsec;
> 
> The difference here is that the Java API means that most of the accuracy
> gain is lost in the division.  I wonder if there is a case for a deeper
> patch that allows nanosecond accuracy to be fully exposed?

At least not for File.lastModified() which returns "a long value
representing the time the file was last modified, measured in
milliseconds since the epoch".

[me having a quick look at the new stuff in 1.7]

Oh, nice! Java 7 seems to have FileTime and Files.getLastModifiedTime().

But I guess the 1.7 API is no option for icedtea-web (yet)?!

> 
> > But I don't know if this compiles on Solaris, etc... But according to
> > the man page of stat() it should compile if compatible to
> > POSIX.1-2008.
> > 
> > > 
> > > Have you signed the Oracle Contributor Agreement (OCA) so it can
> > > also
> > > be upstreamed to OpenJDK?
> > 
> > Not yet...
> > 
> > thomas
> > 
> > 
> > 
> 






More information about the distro-pkg-dev mailing list