mm: make vmstat -rt aware

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
Ingo Molnar 2009-07-03 08:30:13 -05:00 committed by Alibek Omarov
parent 1ea4f83f1b
commit 8972c413b1
2 changed files with 10 additions and 0 deletions

View File

@ -29,7 +29,9 @@ DECLARE_PER_CPU(struct vm_event_state, vm_event_states);
static inline void __count_vm_event(enum vm_event_item item)
{
preempt_disable_rt();
__this_cpu_inc(vm_event_states.event[item]);
preempt_enable_rt();
}
static inline void count_vm_event(enum vm_event_item item)
@ -39,7 +41,9 @@ static inline void count_vm_event(enum vm_event_item item)
static inline void __count_vm_events(enum vm_event_item item, long delta)
{
preempt_disable_rt();
__this_cpu_add(vm_event_states.event[item], delta);
preempt_enable_rt();
}
static inline void count_vm_events(enum vm_event_item item, long delta)

View File

@ -217,6 +217,7 @@ void __mod_zone_page_state(struct zone *zone, enum zone_stat_item item,
long x;
long t;
preempt_disable_rt();
x = delta + __this_cpu_read(*p);
t = __this_cpu_read(pcp->stat_threshold);
@ -226,6 +227,7 @@ void __mod_zone_page_state(struct zone *zone, enum zone_stat_item item,
x = 0;
}
__this_cpu_write(*p, x);
preempt_enable_rt();
}
EXPORT_SYMBOL(__mod_zone_page_state);
@ -258,6 +260,7 @@ void __inc_zone_state(struct zone *zone, enum zone_stat_item item)
s8 __percpu *p = pcp->vm_stat_diff + item;
s8 v, t;
preempt_disable_rt();
v = __this_cpu_inc_return(*p);
t = __this_cpu_read(pcp->stat_threshold);
if (unlikely(v > t)) {
@ -266,6 +269,7 @@ void __inc_zone_state(struct zone *zone, enum zone_stat_item item)
zone_page_state_add(v + overstep, zone, item);
__this_cpu_write(*p, -overstep);
}
preempt_enable_rt();
}
void __inc_zone_page_state(struct page *page, enum zone_stat_item item)
@ -280,6 +284,7 @@ void __dec_zone_state(struct zone *zone, enum zone_stat_item item)
s8 __percpu *p = pcp->vm_stat_diff + item;
s8 v, t;
preempt_disable_rt();
v = __this_cpu_dec_return(*p);
t = __this_cpu_read(pcp->stat_threshold);
if (unlikely(v < - t)) {
@ -288,6 +293,7 @@ void __dec_zone_state(struct zone *zone, enum zone_stat_item item)
zone_page_state_add(v - overstep, zone, item);
__this_cpu_write(*p, overstep);
}
preempt_enable_rt();
}
void __dec_zone_page_state(struct page *page, enum zone_stat_item item)