| // Copyright 2019 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| //go:build unix | |
| package pprof | |
| import ( | |
| "fmt" | |
| "io" | |
| "runtime" | |
| "syscall" | |
| ) | |
| // Adds MaxRSS to platforms that are supported. | |
| func addMaxRSS(w io.Writer) { | |
| var rssToBytes uintptr | |
| switch runtime.GOOS { | |
| case "aix", "android", "dragonfly", "freebsd", "linux", "netbsd", "openbsd": | |
| rssToBytes = 1024 | |
| case "darwin", "ios": | |
| rssToBytes = 1 | |
| case "illumos", "solaris": | |
| rssToBytes = uintptr(syscall.Getpagesize()) | |
| default: | |
| panic("unsupported OS") | |
| } | |
| var rusage syscall.Rusage | |
| err := syscall.Getrusage(syscall.RUSAGE_SELF, &rusage) | |
| if err == nil { | |
| fmt.Fprintf(w, "# MaxRSS = %d\n", uintptr(rusage.Maxrss)*rssToBytes) | |
| } | |
| } | |