https://github.com/shirou/gopsutil/commit/270f6afc220d6dcbc9e1d14e0f6f65fb4d29dfaf

From 270f6afc220d6dcbc9e1d14e0f6f65fb4d29dfaf Mon Sep 17 00:00:00 2001
From: Dmitri Goutnik <dg@syrec.org>
Date: Tue, 17 Dec 2019 02:51:35 -0500
Subject: [PATCH] Add support for freebsd/arm64

--- vendor/github.com/shirou/gopsutil/cpu/cpu_freebsd_arm64.go.orig	2024-12-23 04:03:22 UTC
+++ vendor/github.com/shirou/gopsutil/cpu/cpu_freebsd_arm64.go
@@ -0,0 +1,9 @@
+package cpu
+
+type cpuTimes struct {
+	User uint64
+	Nice uint64
+	Sys  uint64
+	Intr uint64
+	Idle uint64
+}
--- vendor/github.com/shirou/gopsutil/disk/disk_freebsd_arm64.go.orig	2024-12-23 04:03:22 UTC
+++ vendor/github.com/shirou/gopsutil/disk/disk_freebsd_arm64.go
@@ -0,0 +1,115 @@
+// +build freebsd
+// +build arm64
+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
+// cgo -godefs disk/types_freebsd.go
+
+package disk
+
+const (
+	sizeofPtr		= 0x8
+	sizeofShort		= 0x2
+	sizeofInt		= 0x4
+	sizeofLong		= 0x8
+	sizeofLongLong		= 0x8
+	sizeofLongDouble	= 0x8
+
+	DEVSTAT_NO_DATA	= 0x00
+	DEVSTAT_READ	= 0x01
+	DEVSTAT_WRITE	= 0x02
+	DEVSTAT_FREE	= 0x03
+
+	MNT_RDONLY	= 0x00000001
+	MNT_SYNCHRONOUS	= 0x00000002
+	MNT_NOEXEC	= 0x00000004
+	MNT_NOSUID	= 0x00000008
+	MNT_UNION	= 0x00000020
+	MNT_ASYNC	= 0x00000040
+	MNT_SUIDDIR	= 0x00100000
+	MNT_SOFTDEP	= 0x00200000
+	MNT_NOSYMFOLLOW	= 0x00400000
+	MNT_GJOURNAL	= 0x02000000
+	MNT_MULTILABEL	= 0x04000000
+	MNT_ACLS	= 0x08000000
+	MNT_NOATIME	= 0x10000000
+	MNT_NOCLUSTERR	= 0x40000000
+	MNT_NOCLUSTERW	= 0x80000000
+	MNT_NFS4ACLS	= 0x00000010
+
+	MNT_WAIT	= 1
+	MNT_NOWAIT	= 2
+	MNT_LAZY	= 3
+	MNT_SUSPEND	= 4
+)
+
+const (
+	sizeOfDevstat = 0x120
+)
+
+type (
+	_C_short	int16
+	_C_int		int32
+	_C_long		int64
+	_C_long_long	int64
+	_C_long_double	int64
+)
+
+type Statfs struct {
+	Version		uint32
+	Type		uint32
+	Flags		uint64
+	Bsize		uint64
+	Iosize		uint64
+	Blocks		uint64
+	Bfree		uint64
+	Bavail		int64
+	Files		uint64
+	Ffree		int64
+	Syncwrites	uint64
+	Asyncwrites	uint64
+	Syncreads	uint64
+	Asyncreads	uint64
+	Spare		[10]uint64
+	Namemax		uint32
+	Owner		uint32
+	Fsid		Fsid
+	Charspare	[80]uint8
+	Fstypename	[16]int8
+	Mntfromname	[1024]int8
+	Mntonname	[1024]int8
+}
+type Fsid struct {
+	Val [2]int32
+}
+
+type Devstat struct {
+	Sequence0	uint32
+	Allocated	int32
+	Start_count	uint32
+	End_count	uint32
+	Busy_from	Bintime
+	Dev_links	_Ctype_struct___0
+	Device_number	uint32
+	Device_name	[16]int8
+	Unit_number	int32
+	Bytes		[4]uint64
+	Operations	[4]uint64
+	Duration	[4]Bintime
+	Busy_time	Bintime
+	Creation_time	Bintime
+	Block_size	uint32
+	Tag_types	[3]uint64
+	Flags		uint32
+	Device_type	uint32
+	Priority	uint32
+	Id		*byte
+	Sequence1	uint32
+	Pad_cgo_0	[4]byte
+}
+type Bintime struct {
+	Sec	int64
+	Frac	uint64
+}
+
+type _Ctype_struct___0 struct {
+	Empty uint64
+}
--- vendor/github.com/shirou/gopsutil/host/host_freebsd_arm64.go.orig	2024-12-23 04:03:22 UTC
+++ vendor/github.com/shirou/gopsutil/host/host_freebsd_arm64.go
@@ -0,0 +1,39 @@
+// +build freebsd
+// +build arm64
+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
+// cgo -godefs host/types_freebsd.go
+
+package host
+
+const (
+	sizeofPtr	= 0x8
+	sizeofShort	= 0x2
+	sizeofInt	= 0x4
+	sizeofLong	= 0x8
+	sizeofLongLong	= 0x8
+	sizeOfUtmpx	= 0xc5
+)
+
+type (
+	_C_short	int16
+	_C_int		int32
+	_C_long		int64
+	_C_long_long	int64
+)
+
+type Utmp struct {
+	Line [8]int8
+	Name [16]int8
+	Host [16]int8
+	Time int32
+}
+
+type Utmpx struct {
+	Type uint8
+	Tv   uint64
+	Id   [8]int8
+	Pid  uint32
+	User [32]int8
+	Line [16]int8
+	Host [128]int8
+}
--- vendor/github.com/shirou/gopsutil/process/process_freebsd_arm64.go.orig	2024-12-23 04:03:22 UTC
+++ vendor/github.com/shirou/gopsutil/process/process_freebsd_arm64.go
@@ -0,0 +1,201 @@
+// +build freebsd
+// +build arm64
+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
+// cgo -godefs process/types_freebsd.go
+
+package process
+
+const (
+	CTLKern			= 1
+	KernProc		= 14
+	KernProcPID		= 1
+	KernProcProc		= 8
+	KernProcPathname	= 12
+	KernProcArgs		= 7
+)
+
+const (
+	sizeofPtr	= 0x8
+	sizeofShort	= 0x2
+	sizeofInt	= 0x4
+	sizeofLong	= 0x8
+	sizeofLongLong	= 0x8
+)
+
+const (
+	sizeOfKinfoVmentry	= 0x488
+	sizeOfKinfoProc		= 0x440
+)
+
+const (
+	SIDL	= 1
+	SRUN	= 2
+	SSLEEP	= 3
+	SSTOP	= 4
+	SZOMB	= 5
+	SWAIT	= 6
+	SLOCK	= 7
+)
+
+type (
+	_C_short	int16
+	_C_int		int32
+	_C_long		int64
+	_C_long_long	int64
+)
+
+type Timespec struct {
+	Sec	int64
+	Nsec	int64
+}
+
+type Timeval struct {
+	Sec	int64
+	Usec	int64
+}
+
+type Rusage struct {
+	Utime		Timeval
+	Stime		Timeval
+	Maxrss		int64
+	Ixrss		int64
+	Idrss		int64
+	Isrss		int64
+	Minflt		int64
+	Majflt		int64
+	Nswap		int64
+	Inblock		int64
+	Oublock		int64
+	Msgsnd		int64
+	Msgrcv		int64
+	Nsignals	int64
+	Nvcsw		int64
+	Nivcsw		int64
+}
+
+type Rlimit struct {
+	Cur	int64
+	Max	int64
+}
+
+type KinfoProc struct {
+	Structsize	int32
+	Layout		int32
+	Args		*int64 /* pargs */
+	Paddr		*int64 /* proc */
+	Addr		*int64 /* user */
+	Tracep		*int64 /* vnode */
+	Textvp		*int64 /* vnode */
+	Fd		*int64 /* filedesc */
+	Vmspace		*int64 /* vmspace */
+	Wchan		*byte
+	Pid		int32
+	Ppid		int32
+	Pgid		int32
+	Tpgid		int32
+	Sid		int32
+	Tsid		int32
+	Jobc		int16
+	Spare_short1	int16
+	Tdev_freebsd11	uint32
+	Siglist		[16]byte /* sigset */
+	Sigmask		[16]byte /* sigset */
+	Sigignore	[16]byte /* sigset */
+	Sigcatch	[16]byte /* sigset */
+	Uid		uint32
+	Ruid		uint32
+	Svuid		uint32
+	Rgid		uint32
+	Svgid		uint32
+	Ngroups		int16
+	Spare_short2	int16
+	Groups		[16]uint32
+	Size		uint64
+	Rssize		int64
+	Swrss		int64
+	Tsize		int64
+	Dsize		int64
+	Ssize		int64
+	Xstat		uint16
+	Acflag		uint16
+	Pctcpu		uint32
+	Estcpu		uint32
+	Slptime		uint32
+	Swtime		uint32
+	Cow		uint32
+	Runtime		uint64
+	Start		Timeval
+	Childtime	Timeval
+	Flag		int64
+	Kiflag		int64
+	Traceflag	int32
+	Stat		uint8
+	Nice		int8
+	Lock		uint8
+	Rqindex		uint8
+	Oncpu_old	uint8
+	Lastcpu_old	uint8
+	Tdname		[17]uint8
+	Wmesg		[9]uint8
+	Login		[18]uint8
+	Lockname	[9]uint8
+	Comm		[20]int8
+	Emul		[17]uint8
+	Loginclass	[18]uint8
+	Moretdname	[4]uint8
+	Sparestrings	[46]uint8
+	Spareints	[2]int32
+	Tdev		uint64
+	Oncpu		int32
+	Lastcpu		int32
+	Tracer		int32
+	Flag2		int32
+	Fibnum		int32
+	Cr_flags	uint32
+	Jid		int32
+	Numthreads	int32
+	Tid		int32
+	Pri		Priority
+	Rusage		Rusage
+	Rusage_ch	Rusage
+	Pcb		*int64 /* pcb */
+	Kstack		*byte
+	Udata		*byte
+	Tdaddr		*int64 /* thread */
+	Spareptrs	[6]*byte
+	Sparelongs	[12]int64
+	Sflag		int64
+	Tdflags		int64
+}
+
+type Priority struct {
+	Class	uint8
+	Level	uint8
+	Native	uint8
+	User	uint8
+}
+
+type KinfoVmentry struct {
+	Structsize		int32
+	Type			int32
+	Start			uint64
+	End			uint64
+	Offset			uint64
+	Vn_fileid		uint64
+	Vn_fsid_freebsd11	uint32
+	Flags			int32
+	Resident		int32
+	Private_resident	int32
+	Protection		int32
+	Ref_count		int32
+	Shadow_count		int32
+	Vn_type			int32
+	Vn_size			uint64
+	Vn_rdev_freebsd11	uint32
+	Vn_mode			uint16
+	Status			uint16
+	Vn_fsid			uint64
+	Vn_rdev			uint64
+	X_kve_ispare		[8]int32
+	Path			[1024]uint8
+}
