]> Cypherpunks.ru repositories - gostls13.git/commitdiff
syscall: make Getpagesize return page size from runtime
authorAustin Clements <austin@google.com>
Tue, 19 Jul 2016 02:00:45 +0000 (22:00 -0400)
committerAustin Clements <austin@google.com>
Tue, 6 Sep 2016 21:05:55 +0000 (21:05 +0000)
syscall.Getpagesize currently returns hard-coded page sizes on all
architectures (some of which are probably always wrong, and some of
which are definitely not always right). The runtime now has this
information, queried from the OS during runtime init, so make
syscall.Getpagesize return the page size that the runtime knows.

Updates #10180.

Change-Id: I4daa6fbc61a2193eb8fa9e7878960971205ac346
Reviewed-on: https://go-review.googlesource.com/25051
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
27 files changed:
src/runtime/runtime.go
src/syscall/syscall.go
src/syscall/syscall_darwin_386.go
src/syscall/syscall_darwin_amd64.go
src/syscall/syscall_darwin_arm.go
src/syscall/syscall_darwin_arm64.go
src/syscall/syscall_dragonfly_amd64.go
src/syscall/syscall_freebsd_386.go
src/syscall/syscall_freebsd_amd64.go
src/syscall/syscall_freebsd_arm.go
src/syscall/syscall_linux_386.go
src/syscall/syscall_linux_amd64.go
src/syscall/syscall_linux_arm.go
src/syscall/syscall_linux_arm64.go
src/syscall/syscall_linux_mips64x.go
src/syscall/syscall_linux_ppc64x.go
src/syscall/syscall_linux_s390x.go
src/syscall/syscall_nacl.go
src/syscall/syscall_netbsd_386.go
src/syscall/syscall_netbsd_amd64.go
src/syscall/syscall_netbsd_arm.go
src/syscall/syscall_openbsd_386.go
src/syscall/syscall_openbsd_amd64.go
src/syscall/syscall_openbsd_arm.go
src/syscall/syscall_plan9.go
src/syscall/syscall_solaris_amd64.go
src/syscall/syscall_windows.go

index d9c26ccb12087f11f2f4d86c68d38072f71615c0..d8fe2f451f28ee12b3e0f6c864a28d01058b05e9 100644 (file)
@@ -52,5 +52,8 @@ var argslice []string
 //go:linkname syscall_runtime_envs syscall.runtime_envs
 func syscall_runtime_envs() []string { return append([]string{}, envs...) }
 
+//go:linkname syscall_Getpagesize syscall.Getpagesize
+func syscall_Getpagesize() int { return int(physPageSize) }
+
 //go:linkname os_runtime_args os.runtime_args
 func os_runtime_args() []string { return append([]string{}, argslice...) }
index f07c3c75d024caf5bbe6c4549ab5f905fb5e3b34..2fbe624c1fc782548f4defbb13ea64b3c2660a0e 100644 (file)
@@ -95,6 +95,10 @@ func (tv *Timeval) Nano() int64 {
        return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000
 }
 
+// Getpagesize is provided by the runtime.
+
+func Getpagesize() int
+
 // use is a no-op, but the compiler cannot see that it is.
 // Calling use(p) ensures that p is kept live until that point.
 // This was needed until Go 1.6 to call syscall.Syscall correctly.
index f75de000bdbb4db01b59770de8229180a23e2928..11a991e78909de192b7115d13f6d9c2e59a16a9c 100644 (file)
@@ -6,8 +6,6 @@ package syscall
 
 import "unsafe"
 
-func Getpagesize() int { return 4096 }
-
 func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
 
 func NsecToTimespec(nsec int64) (ts Timespec) {
index 79083117b61e30e567c194412d7241914c3d2826..d7951e8654f2182540575f50886984b253be91a0 100644 (file)
@@ -6,8 +6,6 @@ package syscall
 
 import "unsafe"
 
-func Getpagesize() int { return 4096 }
-
 func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
 
 func NsecToTimespec(nsec int64) (ts Timespec) {
index fe431039f48ec1e8945d599829173fecf157956f..830a2e077be7230c660173569e81b0d0a11d5752 100644 (file)
@@ -6,8 +6,6 @@ package syscall
 
 import "unsafe"
 
-func Getpagesize() int { return 4096 }
-
 func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
 
 func NsecToTimespec(nsec int64) (ts Timespec) {
index d396e253323ad816e20c34031713d9f765d7275f..02316a78fcf4067ed441f3cc482e9b337fa21b50 100644 (file)
@@ -6,8 +6,6 @@ package syscall
 
 import "unsafe"
 
-func Getpagesize() int { return 16384 }
-
 func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
 
 func NsecToTimespec(nsec int64) (ts Timespec) {
index 70c2ffb0350085d53af429abc6fd211738af2301..7cad7257cd963e0ccf09a69f457c423e0d447f6b 100644 (file)
@@ -6,8 +6,6 @@ package syscall
 
 import "unsafe"
 
-func Getpagesize() int { return 4096 }
-
 func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
 
 func NsecToTimespec(nsec int64) (ts Timespec) {
index ebd3d4c9cf835317c394ebeb976975c866802330..7b53dc24944d4196867b12a769924f5977ed5054 100644 (file)
@@ -6,8 +6,6 @@ package syscall
 
 import "unsafe"
 
-func Getpagesize() int { return 4096 }
-
 func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
 
 func NsecToTimespec(nsec int64) (ts Timespec) {
index 70c2ffb0350085d53af429abc6fd211738af2301..7cad7257cd963e0ccf09a69f457c423e0d447f6b 100644 (file)
@@ -6,8 +6,6 @@ package syscall
 
 import "unsafe"
 
-func Getpagesize() int { return 4096 }
-
 func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
 
 func NsecToTimespec(nsec int64) (ts Timespec) {
index ab72871ddadb0d4333688df8fc0f65b72eb59037..83fa1d7bfc3b0bbb41d67ac16343782c9179238d 100644 (file)
@@ -6,8 +6,6 @@ package syscall
 
 import "unsafe"
 
-func Getpagesize() int { return 4096 }
-
 func TimespecToNsec(ts Timespec) int64 { return ts.Sec*1e9 + int64(ts.Nsec) }
 
 func NsecToTimespec(nsec int64) (ts Timespec) {
index d9e0ed57edd6fe80f680b6d2b18ea38f825068f5..4f3c7c440a69c95b9dd1752b8b471eb3ece5c231 100644 (file)
@@ -14,8 +14,6 @@ const (
        _SYS_getdents = SYS_GETDENTS64
 )
 
-func Getpagesize() int { return 4096 }
-
 func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
 
 func NsecToTimespec(nsec int64) (ts Timespec) {
index d1bda291d1594ac6ec18c445e036e90ab63158c4..119204b70b549d570dde22a3a1d859324b2337f5 100644 (file)
@@ -72,8 +72,6 @@ func Gettimeofday(tv *Timeval) (err error) {
        return nil
 }
 
-func Getpagesize() int { return 4096 }
-
 func Time(t *Time_t) (tt Time_t, err error) {
        var tv Timeval
        errno := gettimeofday(&tv)
index 7c78254673c93ab36d2fb3bfd05686cb183adc3c..b38b7e5483e7534aad393d76815e5b8dc04283f4 100644 (file)
@@ -11,8 +11,6 @@ const (
        _SYS_getdents = SYS_GETDENTS64
 )
 
-func Getpagesize() int { return 4096 }
-
 func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
 
 func NsecToTimespec(nsec int64) (ts Timespec) {
index 5f1478ca5c9dab24a6321d398c4609bdf03c365a..98681d359b5545d97d84f2f9d05a1b3a04f17937 100644 (file)
@@ -68,8 +68,6 @@ func Lstat(path string, stat *Stat_t) (err error) {
 //sys  sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
 //sys  mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
 
-func Getpagesize() int { return 65536 }
-
 //sysnb        Gettimeofday(tv *Timeval) (err error)
 //sysnb        Time(t *Time_t) (tt Time_t, err error)
 
index a14485a9055dc929fc0241b225644d351d6e400b..a1331a89f3e7edc914863af375e5dc140355b8e6 100644 (file)
@@ -65,8 +65,6 @@ const (
 //sys  sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
 //sys  mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
 
-func Getpagesize() int { return 65536 }
-
 //sysnb        Gettimeofday(tv *Timeval) (err error)
 
 func Time(t *Time_t) (tt Time_t, err error) {
index 9f1c07e54c7180de3598d5b73c809265b2eddd08..e931ee4630352546ff3d9baf5888a4f8a5624961 100644 (file)
@@ -64,8 +64,6 @@ const (
 //sys  sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
 //sys  mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
 
-func Getpagesize() int { return 65536 }
-
 //sysnb        Gettimeofday(tv *Timeval) (err error)
 //sysnb        Time(t *Time_t) (tt Time_t, err error)
 
index d74277a790d710cc7f95f63187373fe17c3faa9d..b67d7aab38077f7c6d9f9af106d1db5791c504fd 100644 (file)
@@ -44,8 +44,6 @@ const (
 //sysnb        getgroups(n int, list *_Gid_t) (nn int, err error)
 //sysnb        setgroups(n int, list *_Gid_t) (err error)
 
-func Getpagesize() int { return 4096 }
-
 //sysnb        Gettimeofday(tv *Timeval) (err error)
 
 func Time(t *Time_t) (tt Time_t, err error) {
index d22d0c7536af5ed3ca5023e3409bf6582678635d..e594ad34c3644f88247e45c2d95613d71945cdb5 100644 (file)
@@ -292,7 +292,6 @@ func Getegid() int                      { return 1 }
 func Geteuid() int                      { return 1 }
 func Getgid() int                       { return 1 }
 func Getgroups() ([]int, error)         { return []int{1}, nil }
-func Getpagesize() int                  { return 65536 }
 func Getppid() int                      { return 2 }
 func Getpid() int                       { return 3 }
 func Gettimeofday(tv *Timeval) error    { return ENOSYS }
index 2dbff07f1d957a54a587c35441a505a7c5a436e1..71c639c88b7005412bf4297fad4caf412837bc5d 100644 (file)
@@ -4,8 +4,6 @@
 
 package syscall
 
-func Getpagesize() int { return 4096 }
-
 func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
 
 func NsecToTimespec(nsec int64) (ts Timespec) {
index 5784db99a5569bf2e4f887fb6fdc167b85d3d270..4762da3a8242bca6a700366c05ec491faeb73ebe 100644 (file)
@@ -4,8 +4,6 @@
 
 package syscall
 
-func Getpagesize() int { return 4096 }
-
 func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
 
 func NsecToTimespec(nsec int64) (ts Timespec) {
index 659698aac97c00c74356f660908d30be62f4ad91..0160252608a0dea6fd007961e4d13951e1cdd44c 100644 (file)
@@ -4,8 +4,6 @@
 
 package syscall
 
-func Getpagesize() int { return 4096 }
-
 func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
 
 func NsecToTimespec(nsec int64) (ts Timespec) {
index ad5ae14bf87185c8128529401f4f3330b8efac45..c836a6fdf9baafa13d6706624714b5558eaba262 100644 (file)
@@ -4,8 +4,6 @@
 
 package syscall
 
-func Getpagesize() int { return 4096 }
-
 func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
 
 func NsecToTimespec(nsec int64) (ts Timespec) {
index 6181344cdc10c57ff1af0bf04fc8755e6f0e4e3a..ca8e7c0bcbb5731b12fef4c95d02048121588fff 100644 (file)
@@ -4,8 +4,6 @@
 
 package syscall
 
-func Getpagesize() int { return 4096 }
-
 func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
 
 func NsecToTimespec(nsec int64) (ts Timespec) {
index ad5ae14bf87185c8128529401f4f3330b8efac45..c836a6fdf9baafa13d6706624714b5558eaba262 100644 (file)
@@ -4,8 +4,6 @@
 
 package syscall
 
-func Getpagesize() int { return 4096 }
-
 func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
 
 func NsecToTimespec(nsec int64) (ts Timespec) {
index b511867cda51d4cd13dee6ca7f4adabf8d048c32..0691889e3112a301e87d492c76ef95625a1c5b4f 100644 (file)
@@ -305,8 +305,6 @@ func Gettimeofday(tv *Timeval) error {
        return nil
 }
 
-func Getpagesize() int { return 0x1000 }
-
 func Getegid() (egid int) { return -1 }
 func Geteuid() (euid int) { return -1 }
 func Getgid() (gid int)   { return -1 }
index 67b8af1a909d64dd5ca12e20de21e51923d178b2..5f918d3426d4564dc138a5603aaf4922ddf72107 100644 (file)
@@ -4,8 +4,6 @@
 
 package syscall
 
-func Getpagesize() int { return 4096 }
-
 func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
 
 func NsecToTimespec(nsec int64) (ts Timespec) {
index a2728e92920009e617307f595e9ee1b80c54967a..e13d6e2dd5a531d45ab946e83537a038b5b8de9b 100644 (file)
@@ -74,8 +74,6 @@ func UTF16PtrFromString(s string) (*uint16, error) {
        return &a[0], nil
 }
 
-func Getpagesize() int { return 4096 }
-
 // Errno is the Windows error number.
 type Errno uintptr