From 63810350ec7f26232fbd653f279c92f43b5c4807 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 2 Jun 2012 09:37:54 -0700 Subject: [PATCH] * sysdep.c (system_process_attributes) [SOLARIS2 && HAVE_PROCFS]: Convert pctcpu and pctmem to Lisp float properly. Let the compiler fold better, as 100.0/0x8000 is exact. --- src/ChangeLog | 6 ++++++ src/sysdep.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 1d48a6ff155..82ff4123b18 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2012-06-02 Paul Eggert + + * sysdep.c (system_process_attributes) [SOLARIS2 && HAVE_PROCFS]: + Convert pctcpu and pctmem to Lisp float properly. + Let the compiler fold better, as 100.0/0x8000 is exact. + 2012-06-02 Andreas Schwab * alloc.c (CONS_BLOCK_SIZE): Account for padding at the end of diff --git a/src/sysdep.c b/src/sysdep.c index a82f802a785..bf87fa2ff0b 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -3107,8 +3107,8 @@ system_process_attributes (Lisp_Object pid) attrs = Fcons (Fcons (Qrss, make_fixnum_or_float (pinfo.pr_rssize)), attrs); /* pr_pctcpu and pr_pctmem are encoded as a fixed point 16 bit number in [0 ... 1]. */ - attrs = Fcons (Fcons (Qpcpu, (pinfo.pr_pctcpu * 100.0) / (double)0x8000), attrs); - attrs = Fcons (Fcons (Qpmem, (pinfo.pr_pctmem * 100.0) / (double)0x8000), attrs); + attrs = Fcons (Fcons (Qpcpu, make_float (100.0 / 0x8000 * pinfo.pr_pctcpu)), attrs); + attrs = Fcons (Fcons (Qpmem, make_float (100.0 / 0x8000 * pinfo.pr_pctmem)), attrs); decoded_cmd = code_convert_string_norecord (make_unibyte_string (pinfo.pr_fname, -- 2.39.2