Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Mar 2010 13:36:17 +0100
From:      Alexander Leidinger <netchild@FreeBSD.org>
To:        Kostik Belousov <kostikbel@gmail.com>, Petr Salinger <Petr.Salinger@seznam.cz>
Cc:        svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org
Subject:   Re: svn commit: r205683 - head/sys/compat/linprocfs
Message-ID:  <20100326133617.34413032k064412c@webmail.leidinger.net>
In-Reply-To: <20100326114925.GS2415@deviant.kiev.zoral.com.ua>
References:  <201003261143.o2QBhFhK034688@svn.freebsd.org> <20100326114925.GS2415@deviant.kiev.zoral.com.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
Quoting Kostik Belousov <kostikbel@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@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.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100326133617.34413032k064412c>