make process.processes function public

pull/444/head
tycho garen 8 years ago
parent 48fc561289
commit 08a382b207

@ -390,8 +390,8 @@ func (p *Process) MemoryMaps(grouped bool) (*[]MemoryMapsStat, error) {
return &ret, common.ErrNotImplementedError return &ret, common.ErrNotImplementedError
} }
func processes() ([]Process, error) { func Processes() ([]*Process, error) {
results := make([]Process, 0, 50) results := make([]*Process)
mib := []int32{CTLKern, KernProc, KernProcAll, 0} mib := []int32{CTLKern, KernProc, KernProcAll, 0}
buf, length, err := common.CallSyscall(mib) buf, length, err := common.CallSyscall(mib)
@ -403,13 +403,6 @@ func processes() ([]Process, error) {
k := KinfoProc{} k := KinfoProc{}
procinfoLen := int(unsafe.Sizeof(k)) procinfoLen := int(unsafe.Sizeof(k))
count := int(length / uint64(procinfoLen)) count := int(length / uint64(procinfoLen))
/*
fmt.Println(length, procinfoLen, count)
b := buf[0*procinfoLen : 0*procinfoLen+procinfoLen]
fmt.Println(b)
kk, err := parseKinfoProc(b)
fmt.Printf("%#v", kk)
*/
// parse buf to procs // parse buf to procs
for i := 0; i < count; i++ { for i := 0; i < count; i++ {
@ -422,7 +415,7 @@ func processes() ([]Process, error) {
if err != nil { if err != nil {
continue continue
} }
results = append(results, *p) results = append(results, p)
} }
return results, nil return results, nil

@ -22,7 +22,7 @@ type MemoryMapsStat struct {
func Pids() ([]int32, error) { func Pids() ([]int32, error) {
var ret []int32 var ret []int32
procs, err := processes() procs, err := Processes()
if err != nil { if err != nil {
return ret, nil return ret, nil
} }
@ -278,8 +278,8 @@ func (p *Process) MemoryMaps(grouped bool) (*[]MemoryMapsStat, error) {
return &ret, common.ErrNotImplementedError return &ret, common.ErrNotImplementedError
} }
func processes() ([]Process, error) { func Processes() ([]*Process, error) {
results := make([]Process, 0, 50) results := make([]*Process)
mib := []int32{CTLKern, KernProc, KernProcProc, 0} mib := []int32{CTLKern, KernProc, KernProcProc, 0}
buf, length, err := common.CallSyscall(mib) buf, length, err := common.CallSyscall(mib)
@ -302,7 +302,7 @@ func processes() ([]Process, error) {
continue continue
} }
results = append(results, *p) results = append(results, p)
} }
return results, nil return results, nil

@ -1017,6 +1017,27 @@ func Pids() ([]int32, error) {
return readPidsFromDir(common.HostProc()) return readPidsFromDir(common.HostProc())
} }
// Process returns a slice of pointers to Process structs for all
// currently running processes.
func Processes() ([]*Process, error) {
out := []*Process{}
pids, err := Pids()
if err != nil {
return out, err
}
for _, pid := range pids {
p, err := NewProcess(pid)
if err != nil {
continue
}
out = append(out, p)
}
return out, nil
}
func readPidsFromDir(path string) ([]int32, error) { func readPidsFromDir(path string) ([]int32, error) {
var ret []int32 var ret []int32

@ -25,7 +25,7 @@ type MemoryMapsStat struct {
func Pids() ([]int32, error) { func Pids() ([]int32, error) {
var ret []int32 var ret []int32
procs, err := processes() procs, err := Processes()
if err != nil { if err != nil {
return ret, nil return ret, nil
} }
@ -268,8 +268,8 @@ func (p *Process) MemoryMaps(grouped bool) (*[]MemoryMapsStat, error) {
return &ret, common.ErrNotImplementedError return &ret, common.ErrNotImplementedError
} }
func processes() ([]Process, error) { func Processes() ([]*Process, error) {
results := make([]Process, 0, 50) results := make([]*Process)
buf, length, err := CallKernProcSyscall(KernProcAll, 0) buf, length, err := CallKernProcSyscall(KernProcAll, 0)
@ -292,7 +292,7 @@ func processes() ([]Process, error) {
continue continue
} }
results = append(results, *p) results = append(results, p)
} }
return results, nil return results, nil

@ -95,7 +95,7 @@ func init() {
func Pids() ([]int32, error) { func Pids() ([]int32, error) {
var ret []int32 var ret []int32
procs, err := processes() procs, err := Processes()
if err != nil { if err != nil {
return ret, nil return ret, nil
} }
@ -422,7 +422,7 @@ func (p *Process) getFromSnapProcess(pid int32) (int32, int32, string, error) {
} }
// Get processes // Get processes
func processes() ([]*Process, error) { func Processes() ([]*Process, error) {
var dst []Win32_Process var dst []Win32_Process
q := wmi.CreateQuery(&dst, "") q := wmi.CreateQuery(&dst, "")
err := wmi.Query(q, &dst) err := wmi.Query(q, &dst)

Loading…
Cancel
Save