os: pass tests on Plan 9 again

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5563046
diff --git a/src/pkg/os/file_plan9.go b/src/pkg/os/file_plan9.go
index 6ee57ff..7d136eb 100644
--- a/src/pkg/os/file_plan9.go
+++ b/src/pkg/os/file_plan9.go
@@ -7,6 +7,7 @@
 import (
 	"runtime"
 	"syscall"
+	"time"
 )
 
 // File represents an open file descriptor.
@@ -299,15 +300,14 @@
 // Chtimes changes the access and modification times of the named
 // file, similar to the Unix utime() or utimes() functions.
 //
-// The argument times are in nanoseconds, although the underlying
-// filesystem may truncate or round the values to a more
-// coarse time unit.
-func Chtimes(name string, atimeNs int64, mtimeNs int64) error {
+// The underlying filesystem may truncate or round the values to a
+// less precise time unit.
+func Chtimes(name string, atime time.Time, mtime time.Time) error {
 	var d Dir
 	d.Null()
 
-	d.Atime = uint32(atimeNs / 1e9)
-	d.Mtime = uint32(mtimeNs / 1e9)
+	d.Atime = uint32(atime.Unix())
+	d.Mtime = uint32(mtime.Unix())
 
 	if e := syscall.Wstat(name, pdir(nil, &d)); e != nil {
 		return &PathError{"chtimes", name, e}
diff --git a/src/pkg/os/stat_plan9.go b/src/pkg/os/stat_plan9.go
index 8d3b8a8..f731e43 100644
--- a/src/pkg/os/stat_plan9.go
+++ b/src/pkg/os/stat_plan9.go
@@ -97,3 +97,8 @@
 func Lstat(name string) (FileInfo, error) {
 	return Stat(name)
 }
+
+// For testing.
+func atime(fi FileInfo) time.Time {
+	return time.Unix(int64(fi.(*FileStat).Sys.(*Dir).Atime), 0)
+}