History

sched: Introduce preempt_count accessor functions

Replace the single preempt_count() 'function' that's an lvalue with two proper functions: preempt_count() - returns the preempt_count value as rvalue preempt_count_set() - Allows setting the preempt-count value Also provide preempt_count_ptr() as a convenience wrapper to implement all modifying operations.

Peter Zijlstra committed 13 years ago

Commit 4a2b4b21 parent ea811747 files · +30 −18Browse files

Showing the changes to kernel/timer.c (1 of 7 files). Show all

Unified · Split

kernel/timer.c+4−4
@@ -1092,7 +1092,7 @@ static int cascade(struct tvec_base *base, struct tvec *tv, int index) · 1091 unmodified lines
1092static void call_timer_fn(struct timer_list *timer, void (*fn)(unsigned long),1092static void call_timer_fn(struct timer_list *timer, void (*fn)(unsigned long),
1093 unsigned long data)1093 unsigned long data)
1094{1094{
1095 int preempt_count = preempt_count();1095 int count = preempt_count();
1096 1096
1097#ifdef CONFIG_LOCKDEP1097#ifdef CONFIG_LOCKDEP
1098 /*1098 /*
@@ -1119,16 +1119,16 @@ static void call_timer_fn(struct timer_list *timer, void (*fn)(unsigned long), · 20 unmodified lines
1119 1119
1120 lock_map_release(&lockdep_map);1120 lock_map_release(&lockdep_map);
1121 1121
1122 if (preempt_count != preempt_count()) {1122 if (count != preempt_count()) {
1123 WARN_ONCE(1, "timer: %pF preempt leak: %08x -> %08x\n",1123 WARN_ONCE(1, "timer: %pF preempt leak: %08x -> %08x\n",
1124 fn, preempt_count, preempt_count());1124 fn, count, preempt_count());
1125 /*1125 /*
1126 * Restore the preempt count. That gives us a decent1126 * Restore the preempt count. That gives us a decent
1127 * chance to survive and extract information. If the1127 * chance to survive and extract information. If the
1128 * callback kept a lock held, bad luck, but not worse1128 * callback kept a lock held, bad luck, but not worse
1129 * than the BUG() we had.1129 * than the BUG() we had.
1130 */1130 */
1131 preempt_count() = preempt_count;1131 preempt_count_set(count);
1132 }1132 }
1133}1133}
1134 1134

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t