// +build freebsd
// +build amd64
package process

// copied from sys/sysctl.h
const (
	CTLKern          = 1  // "high kernel": proc, limits
	KernProc         = 14 // struct: process entries
	KernProcPID      = 1  // by process id
	KernProcProc     = 8  // only return procs
	KernProcPathname = 12 // path to executable
	KernProcArgs     = 7  // get/set arguments/proctitle
)

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
}

// copied from sys/user.h
type KinfoProc struct {
	KiStructsize   int32
	KiLayout       int32
	KiArgs         int64
	KiPaddr        int64
	KiAddr         int64
	KiTracep       int64
	KiTextvp       int64
	KiFd           int64
	KiVmspace      int64
	KiWchan        int64
	KiPid          int32
	KiPpid         int32
	KiPgid         int32
	KiTpgid        int32
	KiSid          int32
	KiTsid         int32
	KiJobc         [2]byte
	KiSpareShort1  [2]byte
	KiTdev         int32
	KiSiglist      [16]byte
	KiSigmask      [16]byte
	KiSigignore    [16]byte
	KiSigcatch     [16]byte
	KiUID          int32
	KiRuid         int32
	KiSvuid        int32
	KiRgid         int32
	KiSvgid        int32
	KiNgroups      [2]byte
	KiSpareShort2  [2]byte
	KiGroups       [64]byte
	KiSize         int64
	KiRssize       int64
	KiSwrss        int64
	KiTsize        int64
	KiDsize        int64
	KiSsize        int64
	KiXstat        [2]byte
	KiAcflag       [2]byte
	KiPctcpu       int32
	KiEstcpu       int32
	KiSlptime      int32
	KiSwtime       int32
	KiCow          int32
	KiRuntime      int64
	KiStart        [16]byte
	KiChildtime    [16]byte
	KiFlag         int64
	KiKflag        int64
	KiTraceflag    int32
	KiStat         [1]byte
	KiNice         [1]byte
	KiLock         [1]byte
	KiRqindex      [1]byte
	KiOncpu        [1]byte
	KiLastcpu      [1]byte
	KiOcomm        [17]byte
	KiWmesg        [9]byte
	KiLogin        [18]byte
	KiLockname     [9]byte
	KiComm         [20]byte
	KiEmul         [17]byte
	KiSparestrings [68]byte
	KiSpareints    [36]byte
	KiCrFlags      int32
	KiJid          int32
	KiNumthreads   int32
	KiTid          int32
	KiPri          int32
	KiRusage       Rusage
	KiRusageCh     [144]byte
	KiPcb          int64
	KiKstack       int64
	KiUdata        int64
	KiTdaddr       int64
	KiSpareptrs    [48]byte
	KiSpareint64s  [96]byte
	KiSflag        int64
	KiTdflags      int64
}
