diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-30 07:43:28 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-30 07:43:28 -0700 | 
| commit | 16fa94b532b1958f508e07eca1a9256351241fbc (patch) | |
| tree | 90012a7b7fe2b8cf96f6f5ec12490e0c5e152291 /lib | |
| parent | e0972916e8fe943f342b0dd1c9d43dbf5bc261c2 (diff) | |
| parent | 25f55d9d01ad7a7ad248fd5af1d22675ffd202c5 (diff) | |
| download | olio-linux-3.10-16fa94b532b1958f508e07eca1a9256351241fbc.tar.xz olio-linux-3.10-16fa94b532b1958f508e07eca1a9256351241fbc.zip  | |
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull scheduler changes from Ingo Molnar:
 "The main changes in this development cycle were:
   - full dynticks preparatory work by Frederic Weisbecker
   - factor out the cpu time accounting code better, by Li Zefan
   - multi-CPU load balancer cleanups and improvements by Joonsoo Kim
   - various smaller fixes and cleanups"
* 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (45 commits)
  sched: Fix init NOHZ_IDLE flag
  sched: Prevent to re-select dst-cpu in load_balance()
  sched: Rename load_balance_tmpmask to load_balance_mask
  sched: Move up affinity check to mitigate useless redoing overhead
  sched: Don't consider other cpus in our group in case of NEWLY_IDLE
  sched: Explicitly cpu_idle_type checking in rebalance_domains()
  sched: Change position of resched_cpu() in load_balance()
  sched: Fix wrong rq's runnable_avg update with rt tasks
  sched: Document task_struct::personality field
  sched/cpuacct/UML: Fix header file dependency bug on the UML build
  cgroup: Kill subsys.active flag
  sched/cpuacct: No need to check subsys active state
  sched/cpuacct: Initialize cpuacct subsystem earlier
  sched/cpuacct: Initialize root cpuacct earlier
  sched/cpuacct: Allocate per_cpu cpuusage for root cpuacct statically
  sched/cpuacct: Clean up cpuacct.h
  sched/cpuacct: Remove redundant NULL checks in cpuacct_acount_field()
  sched/cpuacct: Remove redundant NULL checks in cpuacct_charge()
  sched/cpuacct: Add cpuacct_acount_field()
  sched/cpuacct: Add cpuacct_init()
  ...
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/div64.c | 19 | 
1 files changed, 13 insertions, 6 deletions
diff --git a/lib/div64.c b/lib/div64.c index a163b6caef7..3af5728d95f 100644 --- a/lib/div64.c +++ b/lib/div64.c @@ -79,9 +79,10 @@ EXPORT_SYMBOL(div_s64_rem);  #endif  /** - * div64_u64 - unsigned 64bit divide with 64bit divisor + * div64_u64_rem - unsigned 64bit divide with 64bit divisor and 64bit remainder   * @dividend:	64bit dividend   * @divisor:	64bit divisor + * @remainder:  64bit remainder   *   * This implementation is a modified version of the algorithm proposed   * by the book 'Hacker's Delight'.  The original source and full proof @@ -89,27 +90,33 @@ EXPORT_SYMBOL(div_s64_rem);   *   * 'http://www.hackersdelight.org/HDcode/newCode/divDouble.c.txt'   */ -#ifndef div64_u64 -u64 div64_u64(u64 dividend, u64 divisor) +#ifndef div64_u64_rem +u64 div64_u64_rem(u64 dividend, u64 divisor, u64 *remainder)  {  	u32 high = divisor >> 32;  	u64 quot;  	if (high == 0) { -		quot = div_u64(dividend, divisor); +		u32 rem32; +		quot = div_u64_rem(dividend, divisor, &rem32); +		*remainder = rem32;  	} else {  		int n = 1 + fls(high);  		quot = div_u64(dividend >> n, divisor >> n);  		if (quot != 0)  			quot--; -		if ((dividend - quot * divisor) >= divisor) + +		*remainder = dividend - quot * divisor; +		if (*remainder >= divisor) {  			quot++; +			*remainder -= divisor; +		}  	}  	return quot;  } -EXPORT_SYMBOL(div64_u64); +EXPORT_SYMBOL(div64_u64_rem);  #endif  /**  |