diff options
author | Eli Zaretskii <eliz@gnu.org> | 2008-08-09 18:19:28 +0000 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2008-08-09 18:19:28 +0000 |
commit | 3af03101a78a582ce3b788b56009323a95638b83 (patch) | |
tree | 9408ed337d3460a15b5319f9820f3fd07b81e6af /src/w32.c | |
parent | de62e4f8420755b8e06c132d2fe12dc0ddd8a21a (diff) | |
download | emacs-3af03101a78a582ce3b788b56009323a95638b83.tar.gz |
(process_times): Fix the case of System process.
Diffstat (limited to 'src/w32.c')
-rw-r--r-- | src/w32.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/w32.c b/src/w32.c index 6bbeb8e092f..1d3c5182912 100644 --- a/src/w32.c +++ b/src/w32.c @@ -3608,16 +3608,29 @@ process_times (h_proc, ctime, etime, stime, utime, pcpu) utime_usec = fmodl (tem2, 1000000.0L); utime_sec = tem2 * 0.000001L; *utime = ltime (utime_sec, utime_usec); - tem = (convert_time_raw (ft_creation) - utc_base) * 0.1L; + tem = convert_time_raw (ft_creation); + /* Process no 4 (System) returns zero creation time. */ + if (tem) + tem = (tem - utc_base) * 0.1; ctime_usec = fmodl (tem, 1000000.0L); ctime_sec = tem * 0.000001L; *ctime = ltime (ctime_sec, ctime_usec); - tem = (convert_time_raw (ft_current) - utc_base) * 0.1L - tem; + if (tem) + tem = (convert_time_raw (ft_current) - utc_base) * 0.1L - tem; etime_usec = fmodl (tem, 1000000.0L); etime_sec = tem * 0.000001L; *etime = ltime (etime_sec, etime_usec); - *pcpu = 100.0 * (tem1 + tem2) / tem; + if (tem) + { + *pcpu = 100.0 * (tem1 + tem2) / tem; + if (*pcpu > 100) + *pcpu = 100.0; + } + else + *pcpu = 0; + + return 1; } Lisp_Object |