From edff33b0b328ae7906ec8d2f54d3cc5fc7d09397 Mon Sep 17 00:00:00 2001 From: mykola2312 <49044616+mykola2312@users.noreply.github.com> Date: Mon, 25 Nov 2024 15:18:49 +0200 Subject: [PATCH] implement freebsd libproc query, BUT it's reading wrong values --- proc_freebsd.go | 37 +++++++++++++++++++++++++++++++++++ linux_test.go => proc_test.go | 8 ++++---- 2 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 proc_freebsd.go rename linux_test.go => proc_test.go (64%) diff --git a/proc_freebsd.go b/proc_freebsd.go new file mode 100644 index 0000000..11cbaa0 --- /dev/null +++ b/proc_freebsd.go @@ -0,0 +1,37 @@ +//go:build freebsd + +package proc + +/* +#cgo LDFLAGS: -lproc +#include + +static int libproc_state(int pid) { + int ret; + struct proc_handle* proc; + + ret = proc_attach((pid_t)pid, PATTACH_RDONLY | PATTACH_NOSTOP, &proc); + if (ret) return -ret; + + ret = proc_state(proc); + proc_detach(proc, 0); + proc_free(proc); + + return ret; +} +*/ +import "C" +import ( + "errors" + "fmt" +) + +func queryInternal(pid int) (ProcState, error) { + var ret C.int + ret = C.libproc_state((C.int)(pid)) + if ret < 0 { + return 0, errors.New(fmt.Sprintf("libproc: %d", (int)(-ret))) + } + + return (ProcState)(ret), nil +} diff --git a/linux_test.go b/proc_test.go similarity index 64% rename from linux_test.go rename to proc_test.go index d91eb73..311e12a 100644 --- a/linux_test.go +++ b/proc_test.go @@ -1,11 +1,11 @@ -//go:build linux - package proc -import "testing" +import ( + "testing" +) func TestQuery(t *testing.T) { if _, err := Query(1); err != nil { - t.Failed() + t.Fail() } }