svn commit: r205683 - head/sys/compat/linprocfs
Alexander Leidinger
netchild at FreeBSD.org
Fri Mar 26 12:56:03 UTC 2010
Quoting Kostik Belousov <kostikbel at gmail.com> (from Fri, 26 Mar 2010
13:49:25 +0200):
> On Fri, Mar 26, 2010 at 11:43:15AM +0000, Alexander Leidinger wrote:
>> Author: netchild
>> Date: Fri Mar 26 11:43:15 2010
>> New Revision: 205683
>> URL: http://svn.freebsd.org/changeset/base/205683
>>
>> Log:
>> Fix some bogus values in linprocfs.
>>
>> Submitted by: Petr Salinger <Petr.Salinger at seznam.cz>
>> Verified on: GNU/kFreeBSD debian 8.0-1-686 (by submitter)
>> PR: 144584
>>
>> Modified:
>> head/sys/compat/linprocfs/linprocfs.c
>>
>> Modified: head/sys/compat/linprocfs/linprocfs.c
>> ==============================================================================
>> --- head/sys/compat/linprocfs/linprocfs.c Fri Mar 26 11:33:12 2010 (r205682)
>> +++ head/sys/compat/linprocfs/linprocfs.c Fri Mar 26 11:43:15 2010 (r205683)
>> @@ -110,13 +110,36 @@ __FBSDID("$FreeBSD$");
>> /*
>> * Various conversion macros
>> */
>> +
>> +/* The LINUX_USER_HZ is assumed 100 for now */
>> +
>> +#if defined(__i386__) && defined(__GNUCLIKE_ASM)
>> +/* we need intermediate result as 64 bit, otherwise it overflows
>> too early */
>> +#define DO64_MULDIV(v,m,d) \
>> +({ \
>> + unsigned long rv0; \
>> + unsigned long rv1; \
>> + __asm__ __volatile__( \
>> + "mull %1\n\t" \
>> + "divl %2\n\t" \
>> + :"=a" (rv0), "=d" (rv1) \
>> + :"r" (d), "0" (v), "1" (m) \
>> + :"cc" ); \
>> + rv0; \
>> +})
>
> Why it is impossible to express the calculation in C ?
You forgot to CC the submitter... CCed.
What do you have in mind, (unsinged long)((uint64_t)v * (uint64_t)m /
(uint64_t)d)? Conditionally on the architecture or not?
Bye,
Alexander.
--
http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137
When reviewing your notes before an exam, the most
important ones will be illegible.
More information about the svn-src-head
mailing list