syscall: add nanosleep on FreeBSD

Fixes #461

R=rsc
CC=golang-dev
https://golang.org/cl/181059
diff --git a/src/pkg/syscall/syscall_freebsd.go b/src/pkg/syscall/syscall_freebsd.go
index 9b4ecd3..4a187dd 100644
--- a/src/pkg/syscall/syscall_freebsd.go
+++ b/src/pkg/syscall/syscall_freebsd.go
@@ -520,6 +520,7 @@
 //sys	Mkdir(path string, mode int) (errno int)
 //sys	Mkfifo(path string, mode int) (errno int)
 //sys	Mknod(path string, mode int, dev int) (errno int)
+//sys	Nanosleep(time *Timespec, leftover *Timespec) (errno int)
 //sys	Open(path string, mode int, perm int) (fd int, errno int)
 //sys	Pathconf(path string, name int) (val int, errno int)
 //sys	Pread(fd int, p []byte, offset int64) (n int, errno int)
diff --git a/src/pkg/syscall/zsyscall_freebsd_386.go b/src/pkg/syscall/zsyscall_freebsd_386.go
index 99f23d0..8216dc7 100644
--- a/src/pkg/syscall/zsyscall_freebsd_386.go
+++ b/src/pkg/syscall/zsyscall_freebsd_386.go
@@ -425,6 +425,12 @@
 	return
 }
 
+func Nanosleep(time *Timespec, leftover *Timespec) (errno int) {
+	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+	errno = int(e1)
+	return
+}
+
 func Open(path string, mode int, perm int) (fd int, errno int) {
 	r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(perm))
 	fd = int(r0)
diff --git a/src/pkg/syscall/zsyscall_freebsd_amd64.go b/src/pkg/syscall/zsyscall_freebsd_amd64.go
index a670ce1..ccae89b 100644
--- a/src/pkg/syscall/zsyscall_freebsd_amd64.go
+++ b/src/pkg/syscall/zsyscall_freebsd_amd64.go
@@ -425,6 +425,12 @@
 	return
 }
 
+func Nanosleep(time *Timespec, leftover *Timespec) (errno int) {
+	_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+	errno = int(e1)
+	return
+}
+
 func Open(path string, mode int, perm int) (fd int, errno int) {
 	r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(perm))
 	fd = int(r0)