@@ -35,8 +35,8 @@ fn main() {
35
35
// Assume hertz is 100.
36
36
// TODO: Look this up via syscall (no /proc value for it)
37
37
let hertz = 100 ;
38
- // let minute_hertz = hertz * 60;
39
- // let hour_hertz = minute_hertz * 60;
38
+ let minute_hertz = hertz * 60 ;
39
+ let hour_hertz = minute_hertz * 60 ;
40
40
41
41
let mut table = Table :: init (
42
42
pids. iter ( ) . map ( |p| {
@@ -66,19 +66,17 @@ fn main() {
66
66
} ,
67
67
( _, true ) => {
68
68
let rss = p. status . vmrss . map ( |m| ( m / 1024 ) . to_string ( ) ) . unwrap_or ( "" . to_owned ( ) ) ;
69
- // FIXME: This algorithm is definitely wrong
70
- let _second_utime = p. stat . utime / hertz;
71
- let second_utime = _second_utime % 60 ;
72
- let _minute_utime = _second_utime / 60 ;
73
- let minute_utime = _minute_utime % 60 ;
74
- let hour_utime = _minute_utime / 60 ;
75
- let utime = format ! (
69
+ let raw_time = p. stat . utime + p. stat . stime ;
70
+ let second_utime = raw_time / hertz % 60 ;
71
+ let minute_utime = raw_time / minute_hertz % 60 ;
72
+ let hour_utime = raw_time / hour_hertz % 60 ;
73
+ let cputime = format ! (
76
74
"{:02}:{:02}:{:02}" ,
77
75
hour_utime,
78
76
minute_utime,
79
77
second_utime
80
78
) ;
81
- row ! [ p. stat. pid, p. stat. ppid, rss, utime , name]
79
+ row ! [ p. stat. pid, p. stat. ppid, rss, cputime , name]
82
80
}
83
81
}
84
82
} ) . collect :: < Vec < _ > > ( )
0 commit comments