diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-27 21:42:52 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-27 21:42:52 -0400 |
commit | 17bb51d56cdc8cbf252031db3107de034cfeb44c (patch) | |
tree | f9fb2c16b29a152d3413fa0028e660e3b6146584 /include/linux/highmem.h | |
parent | 0671b7674f42ab3a200401ea0e48d6f47d34acae (diff) | |
parent | 95aac7b1cd224f568fb83937044cd303ff11b029 (diff) |
Merge branch 'akpm-incoming-2'
* akpm-incoming-2: (139 commits)
epoll: make epoll_wait() use the hrtimer range feature
select: rename estimate_accuracy() to select_estimate_accuracy()
Remove duplicate includes from many files
ramoops: use the platform data structure instead of module params
kernel/resource.c: handle reinsertion of an already-inserted resource
kfifo: fix kfifo_alloc() to return a signed int value
w1: don't allow arbitrary users to remove w1 devices
alpha: remove dma64_addr_t usage
mips: remove dma64_addr_t usage
sparc: remove dma64_addr_t usage
fuse: use release_pages()
taskstats: use real microsecond granularity for CPU times
taskstats: split fill_pid function
taskstats: separate taskstats commands
delayacct: align to 8 byte boundary on 64-bit systems
delay-accounting: reimplement -c for getdelays.c to report information on a target command
namespaces Kconfig: move namespace menu location after the cgroup
namespaces Kconfig: remove the cgroup device whitelist experimental tag
namespaces Kconfig: remove pointless cgroup dependency
namespaces Kconfig: make namespace a submenu
...
Diffstat (limited to 'include/linux/highmem.h')
-rw-r--r-- | include/linux/highmem.h | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/include/linux/highmem.h b/include/linux/highmem.h index 8a85ec109a3a..e9138198e823 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h | |||
@@ -37,27 +37,6 @@ extern unsigned long totalhigh_pages; | |||
37 | 37 | ||
38 | void kmap_flush_unused(void); | 38 | void kmap_flush_unused(void); |
39 | 39 | ||
40 | DECLARE_PER_CPU(int, __kmap_atomic_idx); | ||
41 | |||
42 | static inline int kmap_atomic_idx_push(void) | ||
43 | { | ||
44 | int idx = __get_cpu_var(__kmap_atomic_idx)++; | ||
45 | #ifdef CONFIG_DEBUG_HIGHMEM | ||
46 | WARN_ON_ONCE(in_irq() && !irqs_disabled()); | ||
47 | BUG_ON(idx > KM_TYPE_NR); | ||
48 | #endif | ||
49 | return idx; | ||
50 | } | ||
51 | |||
52 | static inline int kmap_atomic_idx_pop(void) | ||
53 | { | ||
54 | int idx = --__get_cpu_var(__kmap_atomic_idx); | ||
55 | #ifdef CONFIG_DEBUG_HIGHMEM | ||
56 | BUG_ON(idx < 0); | ||
57 | #endif | ||
58 | return idx; | ||
59 | } | ||
60 | |||
61 | #else /* CONFIG_HIGHMEM */ | 40 | #else /* CONFIG_HIGHMEM */ |
62 | 41 | ||
63 | static inline unsigned int nr_free_highpages(void) { return 0; } | 42 | static inline unsigned int nr_free_highpages(void) { return 0; } |
@@ -95,6 +74,36 @@ static inline void __kunmap_atomic(void *addr) | |||
95 | 74 | ||
96 | #endif /* CONFIG_HIGHMEM */ | 75 | #endif /* CONFIG_HIGHMEM */ |
97 | 76 | ||
77 | #if defined(CONFIG_HIGHMEM) || defined(CONFIG_X86_32) | ||
78 | |||
79 | DECLARE_PER_CPU(int, __kmap_atomic_idx); | ||
80 | |||
81 | static inline int kmap_atomic_idx_push(void) | ||
82 | { | ||
83 | int idx = __get_cpu_var(__kmap_atomic_idx)++; | ||
84 | #ifdef CONFIG_DEBUG_HIGHMEM | ||
85 | WARN_ON_ONCE(in_irq() && !irqs_disabled()); | ||
86 | BUG_ON(idx > KM_TYPE_NR); | ||
87 | #endif | ||
88 | return idx; | ||
89 | } | ||
90 | |||
91 | static inline int kmap_atomic_idx(void) | ||
92 | { | ||
93 | return __get_cpu_var(__kmap_atomic_idx) - 1; | ||
94 | } | ||
95 | |||
96 | static inline int kmap_atomic_idx_pop(void) | ||
97 | { | ||
98 | int idx = --__get_cpu_var(__kmap_atomic_idx); | ||
99 | #ifdef CONFIG_DEBUG_HIGHMEM | ||
100 | BUG_ON(idx < 0); | ||
101 | #endif | ||
102 | return idx; | ||
103 | } | ||
104 | |||
105 | #endif | ||
106 | |||
98 | /* | 107 | /* |
99 | * Make both: kmap_atomic(page, idx) and kmap_atomic(page) work. | 108 | * Make both: kmap_atomic(page, idx) and kmap_atomic(page) work. |
100 | */ | 109 | */ |