From c9c40215f5b9472b371daa2b740cbecf28dbc0e2 Mon Sep 17 00:00:00 2001 From: Lomanic Date: Tue, 29 Sep 2020 23:56:25 +0200 Subject: [PATCH] [process][darwin] Fix #925 properly with unix.SysctlRaw("kern.proc.pid", PID) --- process/process_darwin.go | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/process/process_darwin.go b/process/process_darwin.go index 1a0ccfb..3bc2295 100644 --- a/process/process_darwin.go +++ b/process/process_darwin.go @@ -12,7 +12,6 @@ import ( "strconv" "strings" "time" - "unsafe" "github.com/shirou/gopsutil/cpu" "github.com/shirou/gopsutil/internal/common" @@ -602,24 +601,9 @@ func parseKinfoProc(buf []byte) (KinfoProc, error) { // Returns a proc as defined here: // http://unix.superglobalmegacorp.com/Net2/newsrc/sys/kinfo_proc.h.html func (p *Process) getKProc() (*KinfoProc, error) { - return p.getKProcWithContext(context.Background()) -} - -func (p *Process) getKProcWithContext(ctx context.Context) (*KinfoProc, error) { - mib := []int32{CTLKern, KernProc, KernProcPID, p.Pid} - procK := KinfoProc{} - length := uint64(unsafe.Sizeof(procK)) - buf := make([]byte, length) - _, _, syserr := unix.Syscall6( - 202, // unix.SYS___SYSCTL https://github.com/golang/sys/blob/76b94024e4b621e672466e8db3d7f084e7ddcad2/unix/zsysnum_darwin_amd64.go#L146 - uintptr(unsafe.Pointer(&mib[0])), - uintptr(len(mib)), - uintptr(unsafe.Pointer(&buf[0])), - uintptr(unsafe.Pointer(&length)), - 0, - 0) - if syserr != 0 { - return nil, syserr + buf, err := unix.SysctlRaw("kern.proc.pid", int(p.Pid)) + if err != nil { + return nil, err } k, err := parseKinfoProc(buf) if err != nil {