2021-08-24 04:37:44 +08:00
|
|
|
//go:build !windows
|
2020-10-02 04:49:09 +08:00
|
|
|
|
|
|
|
|
package intel_rdt
|
|
|
|
|
|
|
|
|
|
import "github.com/prometheus/procfs"
|
|
|
|
|
|
2024-10-25 18:45:08 +08:00
|
|
|
type processesHandler interface {
|
|
|
|
|
getAllProcesses() ([]process, error)
|
2020-10-02 04:49:09 +08:00
|
|
|
}
|
|
|
|
|
|
2024-10-25 18:45:08 +08:00
|
|
|
type process struct {
|
2020-10-02 04:49:09 +08:00
|
|
|
Name string
|
|
|
|
|
PID int
|
|
|
|
|
}
|
|
|
|
|
|
2024-10-25 18:45:08 +08:00
|
|
|
type processManager struct{}
|
2020-10-02 04:49:09 +08:00
|
|
|
|
2024-10-25 18:45:08 +08:00
|
|
|
func newProcessor() processesHandler {
|
|
|
|
|
return &processManager{}
|
2020-10-02 04:49:09 +08:00
|
|
|
}
|
|
|
|
|
|
2024-10-25 18:45:08 +08:00
|
|
|
func (p *processManager) getAllProcesses() ([]process, error) {
|
2020-10-02 04:49:09 +08:00
|
|
|
allProcesses, err := procfs.AllProcs()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
2022-11-16 01:57:50 +08:00
|
|
|
|
2024-10-25 18:45:08 +08:00
|
|
|
processes := make([]process, 0, len(allProcesses))
|
2020-10-02 04:49:09 +08:00
|
|
|
for _, proc := range allProcesses {
|
|
|
|
|
procComm, err := proc.Comm()
|
|
|
|
|
if err != nil {
|
|
|
|
|
continue
|
|
|
|
|
}
|
2024-10-25 18:45:08 +08:00
|
|
|
newProcess := process{
|
2020-10-02 04:49:09 +08:00
|
|
|
PID: proc.PID,
|
|
|
|
|
Name: procComm,
|
|
|
|
|
}
|
|
|
|
|
processes = append(processes, newProcess)
|
|
|
|
|
}
|
|
|
|
|
return processes, nil
|
|
|
|
|
}
|