diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-19 21:19:48 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-19 21:19:48 -0500 |
| commit | d652e1eb8e7b739fccbfb503a3da3e9f640fbf3d (patch) | |
| tree | 55ab77bad0cbb045eac0b84b80d63f88f1ae09e6 /include | |
| parent | 8f55cea410dbc56114bb71a3742032070c8108d0 (diff) | |
| parent | 77852fea6e2442a0e654a9292060489895de18c7 (diff) | |
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull scheduler changes from Ingo Molnar:
"Main changes:
- scheduler side full-dynticks (user-space execution is undisturbed
and receives no timer IRQs) preparation changes that convert the
cputime accounting code to be full-dynticks ready, from Frederic
Weisbecker.
- Initial sched.h split-up changes, by Clark Williams
- select_idle_sibling() performance improvement by Mike Galbraith:
" 1 tbench pair (worst case) in a 10 core + SMT package:
pre 15.22 MB/sec 1 procs
post 252.01 MB/sec 1 procs "
- sched_rr_get_interval() ABI fix/change. We think this detail is not
used by apps (so it's not an ABI in practice), but lets keep it
under observation.
- misc RT scheduling cleanups, optimizations"
* 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (24 commits)
sched/rt: Add <linux/sched/rt.h> header to <linux/init_task.h>
cputime: Remove irqsave from seqlock readers
sched, powerpc: Fix sched.h split-up build failure
cputime: Restore CPU_ACCOUNTING config defaults for PPC64
sched/rt: Move rt specific bits into new header file
sched/rt: Add a tuning knob to allow changing SCHED_RR timeslice
sched: Move sched.h sysctl bits into separate header
sched: Fix signedness bug in yield_to()
sched: Fix select_idle_sibling() bouncing cow syndrome
sched/rt: Further simplify pick_rt_task()
sched/rt: Do not account zero delta_exec in update_curr_rt()
cputime: Safely read cputime of full dynticks CPUs
kvm: Prepare to add generic guest entry/exit callbacks
cputime: Use accessors to read task cputime stats
cputime: Allow dynamic switch between tick/virtual based cputime accounting
cputime: Generic on-demand virtual cputime accounting
cputime: Move default nsecs_to_cputime() to jiffies based cputime file
cputime: Librarize per nsecs resolution cputime definitions
cputime: Avoid multiplication overflow on utime scaling
context_tracking: Export context state for generic vtime
...
Fix up conflict in kernel/context_tracking.c due to comment additions.
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-generic/cputime.h | 66 | ||||
| -rw-r--r-- | include/asm-generic/cputime_jiffies.h | 72 | ||||
| -rw-r--r-- | include/asm-generic/cputime_nsecs.h | 104 | ||||
| -rw-r--r-- | include/linux/context_tracking.h | 28 | ||||
| -rw-r--r-- | include/linux/hardirq.h | 4 | ||||
| -rw-r--r-- | include/linux/init_task.h | 12 | ||||
| -rw-r--r-- | include/linux/kernel_stat.h | 2 | ||||
| -rw-r--r-- | include/linux/kvm_host.h | 55 | ||||
| -rw-r--r-- | include/linux/sched.h | 185 | ||||
| -rw-r--r-- | include/linux/sched/rt.h | 58 | ||||
| -rw-r--r-- | include/linux/sched/sysctl.h | 110 | ||||
| -rw-r--r-- | include/linux/tsacct_kern.h | 3 | ||||
| -rw-r--r-- | include/linux/vtime.h | 59 |
13 files changed, 524 insertions, 234 deletions
diff --git a/include/asm-generic/cputime.h b/include/asm-generic/cputime.h index 9a62937c56ca..51969436b8b8 100644 --- a/include/asm-generic/cputime.h +++ b/include/asm-generic/cputime.h | |||
| @@ -4,66 +4,12 @@ | |||
| 4 | #include <linux/time.h> | 4 | #include <linux/time.h> |
| 5 | #include <linux/jiffies.h> | 5 | #include <linux/jiffies.h> |
| 6 | 6 | ||
| 7 | typedef unsigned long __nocast cputime_t; | 7 | #ifndef CONFIG_VIRT_CPU_ACCOUNTING |
| 8 | 8 | # include <asm-generic/cputime_jiffies.h> | |
| 9 | #define cputime_one_jiffy jiffies_to_cputime(1) | 9 | #endif |
| 10 | #define cputime_to_jiffies(__ct) (__force unsigned long)(__ct) | ||
| 11 | #define cputime_to_scaled(__ct) (__ct) | ||
| 12 | #define jiffies_to_cputime(__hz) (__force cputime_t)(__hz) | ||
| 13 | |||
| 14 | typedef u64 __nocast cputime64_t; | ||
| 15 | |||
| 16 | #define cputime64_to_jiffies64(__ct) (__force u64)(__ct) | ||
| 17 | #define jiffies64_to_cputime64(__jif) (__force cputime64_t)(__jif) | ||
| 18 | |||
| 19 | #define nsecs_to_cputime64(__ct) \ | ||
| 20 | jiffies64_to_cputime64(nsecs_to_jiffies64(__ct)) | ||
| 21 | |||
| 22 | |||
| 23 | /* | ||
| 24 | * Convert cputime to microseconds and back. | ||
| 25 | */ | ||
| 26 | #define cputime_to_usecs(__ct) \ | ||
| 27 | jiffies_to_usecs(cputime_to_jiffies(__ct)) | ||
| 28 | #define usecs_to_cputime(__usec) \ | ||
| 29 | jiffies_to_cputime(usecs_to_jiffies(__usec)) | ||
| 30 | #define usecs_to_cputime64(__usec) \ | ||
| 31 | jiffies64_to_cputime64(nsecs_to_jiffies64((__usec) * 1000)) | ||
| 32 | |||
| 33 | /* | ||
| 34 | * Convert cputime to seconds and back. | ||
| 35 | */ | ||
| 36 | #define cputime_to_secs(jif) (cputime_to_jiffies(jif) / HZ) | ||
| 37 | #define secs_to_cputime(sec) jiffies_to_cputime((sec) * HZ) | ||
| 38 | |||
| 39 | /* | ||
| 40 | * Convert cputime to timespec and back. | ||
| 41 | */ | ||
| 42 | #define timespec_to_cputime(__val) \ | ||
| 43 | jiffies_to_cputime(timespec_to_jiffies(__val)) | ||
| 44 | #define cputime_to_timespec(__ct,__val) \ | ||
| 45 | jiffies_to_timespec(cputime_to_jiffies(__ct),__val) | ||
| 46 | |||
| 47 | /* | ||
| 48 | * Convert cputime to timeval and back. | ||
| 49 | */ | ||
| 50 | #define timeval_to_cputime(__val) \ | ||
| 51 | jiffies_to_cputime(timeval_to_jiffies(__val)) | ||
| 52 | #define cputime_to_timeval(__ct,__val) \ | ||
| 53 | jiffies_to_timeval(cputime_to_jiffies(__ct),__val) | ||
| 54 | |||
| 55 | /* | ||
| 56 | * Convert cputime to clock and back. | ||
| 57 | */ | ||
| 58 | #define cputime_to_clock_t(__ct) \ | ||
| 59 | jiffies_to_clock_t(cputime_to_jiffies(__ct)) | ||
| 60 | #define clock_t_to_cputime(__x) \ | ||
| 61 | jiffies_to_cputime(clock_t_to_jiffies(__x)) | ||
| 62 | 10 | ||
| 63 | /* | 11 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN |
| 64 | * Convert cputime64 to clock. | 12 | # include <asm-generic/cputime_nsecs.h> |
| 65 | */ | 13 | #endif |
| 66 | #define cputime64_to_clock_t(__ct) \ | ||
| 67 | jiffies_64_to_clock_t(cputime64_to_jiffies64(__ct)) | ||
| 68 | 14 | ||
| 69 | #endif | 15 | #endif |
diff --git a/include/asm-generic/cputime_jiffies.h b/include/asm-generic/cputime_jiffies.h new file mode 100644 index 000000000000..272ecba9f588 --- /dev/null +++ b/include/asm-generic/cputime_jiffies.h | |||
| @@ -0,0 +1,72 @@ | |||
| 1 | #ifndef _ASM_GENERIC_CPUTIME_JIFFIES_H | ||
| 2 | #define _ASM_GENERIC_CPUTIME_JIFFIES_H | ||
| 3 | |||
| 4 | typedef unsigned long __nocast cputime_t; | ||
| 5 | |||
| 6 | #define cputime_one_jiffy jiffies_to_cputime(1) | ||
| 7 | #define cputime_to_jiffies(__ct) (__force unsigned long)(__ct) | ||
| 8 | #define cputime_to_scaled(__ct) (__ct) | ||
| 9 | #define jiffies_to_cputime(__hz) (__force cputime_t)(__hz) | ||
| 10 | |||
| 11 | typedef u64 __nocast cputime64_t; | ||
| 12 | |||
| 13 | #define cputime64_to_jiffies64(__ct) (__force u64)(__ct) | ||
| 14 | #define jiffies64_to_cputime64(__jif) (__force cputime64_t)(__jif) | ||
| 15 | |||
| 16 | |||
| 17 | /* | ||
| 18 | * Convert nanoseconds to cputime | ||
| 19 | */ | ||
| 20 | #define nsecs_to_cputime64(__nsec) \ | ||
| 21 | jiffies64_to_cputime64(nsecs_to_jiffies64(__nsec)) | ||
| 22 | #define nsecs_to_cputime(__nsec) \ | ||
| 23 | jiffies_to_cputime(nsecs_to_jiffies(__nsec)) | ||
| 24 | |||
| 25 | |||
| 26 | /* | ||
| 27 | * Convert cputime to microseconds and back. | ||
| 28 | */ | ||
| 29 | #define cputime_to_usecs(__ct) \ | ||
| 30 | jiffies_to_usecs(cputime_to_jiffies(__ct)) | ||
| 31 | #define usecs_to_cputime(__usec) \ | ||
| 32 | jiffies_to_cputime(usecs_to_jiffies(__usec)) | ||
| 33 | #define usecs_to_cputime64(__usec) \ | ||
| 34 | jiffies64_to_cputime64(nsecs_to_jiffies64((__usec) * 1000)) | ||
| 35 | |||
| 36 | /* | ||
| 37 | * Convert cputime to seconds and back. | ||
| 38 | */ | ||
| 39 | #define cputime_to_secs(jif) (cputime_to_jiffies(jif) / HZ) | ||
| 40 | #define secs_to_cputime(sec) jiffies_to_cputime((sec) * HZ) | ||
| 41 | |||
| 42 | /* | ||
| 43 | * Convert cputime to timespec and back. | ||
| 44 | */ | ||
| 45 | #define timespec_to_cputime(__val) \ | ||
| 46 | jiffies_to_cputime(timespec_to_jiffies(__val)) | ||
| 47 | #define cputime_to_timespec(__ct,__val) \ | ||
| 48 | jiffies_to_timespec(cputime_to_jiffies(__ct),__val) | ||
| 49 | |||
| 50 | /* | ||
| 51 | * Convert cputime to timeval and back. | ||
| 52 | */ | ||
| 53 | #define timeval_to_cputime(__val) \ | ||
| 54 | jiffies_to_cputime(timeval_to_jiffies(__val)) | ||
| 55 | #define cputime_to_timeval(__ct,__val) \ | ||
| 56 | jiffies_to_timeval(cputime_to_jiffies(__ct),__val) | ||
| 57 | |||
| 58 | /* | ||
| 59 | * Convert cputime to clock and back. | ||
| 60 | */ | ||
| 61 | #define cputime_to_clock_t(__ct) \ | ||
| 62 | jiffies_to_clock_t(cputime_to_jiffies(__ct)) | ||
| 63 | #define clock_t_to_cputime(__x) \ | ||
| 64 | jiffies_to_cputime(clock_t_to_jiffies(__x)) | ||
| 65 | |||
| 66 | /* | ||
| 67 | * Convert cputime64 to clock. | ||
| 68 | */ | ||
| 69 | #define cputime64_to_clock_t(__ct) \ | ||
| 70 | jiffies_64_to_clock_t(cputime64_to_jiffies64(__ct)) | ||
| 71 | |||
| 72 | #endif | ||
diff --git a/include/asm-generic/cputime_nsecs.h b/include/asm-generic/cputime_nsecs.h new file mode 100644 index 000000000000..b6485cafb7bd --- /dev/null +++ b/include/asm-generic/cputime_nsecs.h | |||
| @@ -0,0 +1,104 @@ | |||
| 1 | /* | ||
| 2 | * Definitions for measuring cputime in nsecs resolution. | ||
| 3 | * | ||
| 4 | * Based on <arch/ia64/include/asm/cputime.h> | ||
| 5 | * | ||
| 6 | * Copyright (C) 2007 FUJITSU LIMITED | ||
| 7 | * Copyright (C) 2007 Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com> | ||
| 8 | * | ||
| 9 | * This program is free software; you can redistribute it and/or | ||
| 10 | * modify it under the terms of the GNU General Public License | ||
| 11 | * as published by the Free Software Foundation; either version | ||
| 12 | * 2 of the License, or (at your option) any later version. | ||
| 13 | * | ||
| 14 | |||
