diff options
author | Alexey Dobriyan <adobriyan@openvz.org> | 2007-02-10 04:45:10 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-11 13:51:28 -0500 |
commit | b035b6de24932ffd4a2b1c6619a2f5711da6920f (patch) | |
tree | 76f43316bf4788c510a1f271064b67ef8e584035 | |
parent | 5e07e1ccb0c0f25dd748ebe2ef83008c2229bf1c (diff) |
[PATCH] Consolidate default sched_clock()
Use attribute(weak).
Signed-off-by: Alexey Dobriyan <adobriyan@openvz.org>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | arch/alpha/kernel/time.c | 11 | ||||
-rw-r--r-- | arch/arm/kernel/time.c | 10 | ||||
-rw-r--r-- | arch/arm26/kernel/time.c | 8 | ||||
-rw-r--r-- | arch/avr32/kernel/time.c | 9 | ||||
-rw-r--r-- | arch/cris/kernel/time.c | 8 | ||||
-rw-r--r-- | arch/h8300/kernel/time.c | 6 | ||||
-rw-r--r-- | arch/m32r/kernel/time.c | 8 | ||||
-rw-r--r-- | arch/m68k/kernel/time.c | 9 | ||||
-rw-r--r-- | arch/m68knommu/kernel/time.c | 9 | ||||
-rw-r--r-- | arch/mips/kernel/time.c | 5 | ||||
-rw-r--r-- | arch/parisc/kernel/time.c | 11 | ||||
-rw-r--r-- | arch/sh/kernel/time.c | 8 | ||||
-rw-r--r-- | arch/sh64/kernel/time.c | 9 | ||||
-rw-r--r-- | arch/sparc/kernel/time.c | 9 | ||||
-rw-r--r-- | arch/v850/kernel/time.c | 8 | ||||
-rw-r--r-- | arch/xtensa/kernel/time.c | 9 | ||||
-rw-r--r-- | kernel/sched.c | 10 |
17 files changed, 10 insertions, 137 deletions
diff --git a/arch/alpha/kernel/time.c b/arch/alpha/kernel/time.c index d7053eb4ffcf..4748e14a28bc 100644 --- a/arch/alpha/kernel/time.c +++ b/arch/alpha/kernel/time.c | |||
@@ -91,17 +91,6 @@ static inline __u32 rpcc(void) | |||
91 | } | 91 | } |
92 | 92 | ||
93 | /* | 93 | /* |
94 | * Scheduler clock - returns current time in nanosec units. | ||
95 | * | ||
96 | * Copied from ARM code for expediency... ;-} | ||
97 | */ | ||
98 | unsigned long long sched_clock(void) | ||
99 | { | ||
100 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
101 | } | ||
102 | |||
103 | |||
104 | /* | ||
105 | * timer_interrupt() needs to keep up the real-time clock, | 94 | * timer_interrupt() needs to keep up the real-time clock, |
106 | * as well as call the "do_timer()" routine every clocktick | 95 | * as well as call the "do_timer()" routine every clocktick |
107 | */ | 96 | */ |
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index 3c8cdcfe8d4a..ee47c532e210 100644 --- a/arch/arm/kernel/time.c +++ b/arch/arm/kernel/time.c | |||
@@ -78,16 +78,6 @@ static unsigned long dummy_gettimeoffset(void) | |||
78 | #endif | 78 | #endif |
79 | 79 | ||
80 | /* | 80 | /* |
81 | * Scheduler clock - returns current time in nanosec units. | ||
82 | * This is the default implementation. Sub-architecture | ||
83 | * implementations can override this. | ||
84 | */ | ||
85 | unsigned long long __attribute__((weak)) sched_clock(void) | ||
86 | { | ||
87 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
88 | } | ||
89 | |||
90 | /* | ||
91 | * An implementation of printk_clock() independent from | 81 | * An implementation of printk_clock() independent from |
92 | * sched_clock(). This avoids non-bootable kernels when | 82 | * sched_clock(). This avoids non-bootable kernels when |
93 | * printk_clock is enabled. | 83 | * printk_clock is enabled. |
diff --git a/arch/arm26/kernel/time.c b/arch/arm26/kernel/time.c index 1206469b2b86..0f1d57fbd3d7 100644 --- a/arch/arm26/kernel/time.c +++ b/arch/arm26/kernel/time.c | |||
@@ -89,14 +89,6 @@ static unsigned long gettimeoffset(void) | |||
89 | return (offset + LATCH/2) / LATCH; | 89 | return (offset + LATCH/2) / LATCH; |
90 | } | 90 | } |
91 | 91 | ||
92 | /* | ||
93 | * Scheduler clock - returns current time in nanosec units. | ||
94 | */ | ||
95 | unsigned long long sched_clock(void) | ||
96 | { | ||
97 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
98 | } | ||
99 | |||
100 | static unsigned long next_rtc_update; | 92 | static unsigned long next_rtc_update; |
101 | 93 | ||
102 | /* | 94 | /* |
diff --git a/arch/avr32/kernel/time.c b/arch/avr32/kernel/time.c index 5a247ba71a72..a2f74affaa98 100644 --- a/arch/avr32/kernel/time.c +++ b/arch/avr32/kernel/time.c | |||
@@ -110,15 +110,6 @@ static void avr32_hpt_init(unsigned int count) | |||
110 | } | 110 | } |
111 | 111 | ||
112 | /* | 112 | /* |
113 | * Scheduler clock - returns current time in nanosec units. | ||
114 | */ | ||
115 | unsigned long long sched_clock(void) | ||
116 | { | ||
117 | /* There must be better ways...? */ | ||
118 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
119 | } | ||
120 | |||
121 | /* | ||
122 | * local_timer_interrupt() does profiling and process accounting on a | 113 | * local_timer_interrupt() does profiling and process accounting on a |
123 | * per-CPU basis. | 114 | * per-CPU basis. |
124 | * | 115 | * |
diff --git a/arch/cris/kernel/time.c b/arch/cris/kernel/time.c index 22a1aa511aea..acfd04559405 100644 --- a/arch/cris/kernel/time.c +++ b/arch/cris/kernel/time.c | |||
@@ -216,14 +216,6 @@ cris_do_profile(struct pt_regs* regs) | |||
216 | #endif | 216 | #endif |
217 | } | 217 | } |
218 | 218 | ||
219 | /* | ||
220 | * Scheduler clock - returns current time in nanosec units. | ||
221 | */ | ||
222 | unsigned long long sched_clock(void) | ||
223 | { | ||
224 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
225 | } | ||
226 | |||
227 | static int | 219 | static int |
228 | __init init_udelay(void) | 220 | __init init_udelay(void) |
229 | { | 221 | { |
diff --git a/arch/h8300/kernel/time.c b/arch/h8300/kernel/time.c index 8abab3bc2b6f..d1ef615ba895 100644 --- a/arch/h8300/kernel/time.c +++ b/arch/h8300/kernel/time.c | |||
@@ -118,9 +118,3 @@ int do_settimeofday(struct timespec *tv) | |||
118 | } | 118 | } |
119 | 119 | ||
120 | EXPORT_SYMBOL(do_settimeofday); | 120 | EXPORT_SYMBOL(do_settimeofday); |
121 | |||
122 | unsigned long long sched_clock(void) | ||
123 | { | ||
124 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
125 | |||
126 | } | ||
diff --git a/arch/m32r/kernel/time.c b/arch/m32r/kernel/time.c index a09038282c78..3858c9f39ba5 100644 --- a/arch/m32r/kernel/time.c +++ b/arch/m32r/kernel/time.c | |||
@@ -286,11 +286,3 @@ void __init time_init(void) | |||
286 | #error no chip configuration | 286 | #error no chip configuration |
287 | #endif | 287 | #endif |
288 | } | 288 | } |
289 | |||
290 | /* | ||
291 | * Scheduler clock - returns current time in nanosec units. | ||
292 | */ | ||
293 | unsigned long long sched_clock(void) | ||
294 | { | ||
295 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
296 | } | ||
diff --git a/arch/m68k/kernel/time.c b/arch/m68k/kernel/time.c index 2a599c3ed787..4c065f9ceffc 100644 --- a/arch/m68k/kernel/time.c +++ b/arch/m68k/kernel/time.c | |||
@@ -159,12 +159,3 @@ int do_settimeofday(struct timespec *tv) | |||
159 | } | 159 | } |
160 | 160 | ||
161 | EXPORT_SYMBOL(do_settimeofday); | 161 | EXPORT_SYMBOL(do_settimeofday); |
162 | |||
163 | /* | ||
164 | * Scheduler clock - returns current time in ns units. | ||
165 | */ | ||
166 | unsigned long long sched_clock(void) | ||
167 | { | ||
168 | return (unsigned long long)jiffies*(1000000000/HZ); | ||
169 | } | ||
170 | |||
diff --git a/arch/m68knommu/kernel/time.c b/arch/m68knommu/kernel/time.c index 11ea217ed5cf..467053da2d08 100644 --- a/arch/m68knommu/kernel/time.c +++ b/arch/m68knommu/kernel/time.c | |||
@@ -174,13 +174,4 @@ int do_settimeofday(struct timespec *tv) | |||
174 | clock_was_set(); | 174 | clock_was_set(); |
175 | return 0; | 175 | return 0; |
176 | } | 176 | } |
177 | |||
178 | /* | ||
179 | * Scheduler clock - returns current time in nanosec units. | ||
180 | */ | ||
181 | unsigned long long sched_clock(void) | ||
182 | { | ||
183 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
184 | } | ||
185 | |||
186 | EXPORT_SYMBOL(do_settimeofday); | 177 | EXPORT_SYMBOL(do_settimeofday); |
diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c index 8aa544f73a5e..545fcbc8cea2 100644 --- a/arch/mips/kernel/time.c +++ b/arch/mips/kernel/time.c | |||
@@ -455,8 +455,3 @@ EXPORT_SYMBOL(rtc_lock); | |||
455 | EXPORT_SYMBOL(to_tm); | 455 | EXPORT_SYMBOL(to_tm); |
456 | EXPORT_SYMBOL(rtc_mips_set_time); | 456 | EXPORT_SYMBOL(rtc_mips_set_time); |
457 | EXPORT_SYMBOL(rtc_mips_get_time); | 457 | EXPORT_SYMBOL(rtc_mips_get_time); |
458 | |||
459 | unsigned long long sched_clock(void) | ||
460 | { | ||
461 | return (unsigned long long)jiffies*(1000000000/HZ); | ||
462 | } | ||
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c index bad7d1eb62b9..5f1b51af06a9 100644 --- a/arch/parisc/kernel/time.c +++ b/arch/parisc/kernel/time.c | |||
@@ -288,17 +288,6 @@ do_settimeofday (struct timespec *tv) | |||
288 | } | 288 | } |
289 | EXPORT_SYMBOL(do_settimeofday); | 289 | EXPORT_SYMBOL(do_settimeofday); |
290 | 290 | ||
291 | /* | ||
292 | * XXX: We can do better than this. | ||
293 | * Returns nanoseconds | ||
294 | */ | ||
295 | |||
296 | unsigned long long sched_clock(void) | ||
297 | { | ||
298 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
299 | } | ||
300 | |||
301 | |||
302 | void __init start_cpu_itimer(void) | 291 | void __init start_cpu_itimer(void) |
303 | { | 292 | { |
304 | unsigned int cpu = smp_processor_id(); | 293 | unsigned int cpu = smp_processor_id(); |
diff --git a/arch/sh/kernel/time.c b/arch/sh/kernel/time.c index c206c9504c4b..d47e775962e9 100644 --- a/arch/sh/kernel/time.c +++ b/arch/sh/kernel/time.c | |||
@@ -41,14 +41,6 @@ static int null_rtc_set_time(const time_t secs) | |||
41 | void (*rtc_sh_get_time)(struct timespec *) = null_rtc_get_time; | 41 | void (*rtc_sh_get_time)(struct timespec *) = null_rtc_get_time; |
42 | int (*rtc_sh_set_time)(const time_t) = null_rtc_set_time; | 42 | int (*rtc_sh_set_time)(const time_t) = null_rtc_set_time; |
43 | 43 | ||
44 | /* | ||
45 | * Scheduler clock - returns current time in nanosec units. | ||
46 | */ | ||
47 | unsigned long long __attribute__ ((weak)) sched_clock(void) | ||
48 | { | ||
49 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
50 | } | ||
51 | |||
52 | #ifndef CONFIG_GENERIC_TIME | 44 | #ifndef CONFIG_GENERIC_TIME |
53 | void do_gettimeofday(struct timeval *tv) | 45 | void do_gettimeofday(struct timeval *tv) |
54 | { | 46 | { |
diff --git a/arch/sh64/kernel/time.c b/arch/sh64/kernel/time.c index 9c4a38a8698c..390b40de7cef 100644 --- a/arch/sh64/kernel/time.c +++ b/arch/sh64/kernel/time.c | |||
@@ -579,12 +579,3 @@ void enter_deep_standby(void) | |||
579 | asm __volatile__ ("nop"); | 579 | asm __volatile__ ("nop"); |
580 | panic("Unexpected wakeup!\n"); | 580 | panic("Unexpected wakeup!\n"); |
581 | } | 581 | } |
582 | |||
583 | /* | ||
584 | * Scheduler clock - returns current time in nanosec units. | ||
585 | */ | ||
586 | unsigned long long sched_clock(void) | ||
587 | { | ||
588 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
589 | } | ||
590 | |||
diff --git a/arch/sparc/kernel/time.c b/arch/sparc/kernel/time.c index 2fcce000d877..9bb1240aaf8a 100644 --- a/arch/sparc/kernel/time.c +++ b/arch/sparc/kernel/time.c | |||
@@ -436,15 +436,6 @@ static inline unsigned long do_gettimeoffset(void) | |||
436 | return (*master_l10_counter >> 10) & 0x1fffff; | 436 | return (*master_l10_counter >> 10) & 0x1fffff; |
437 | } | 437 | } |
438 | 438 | ||
439 | /* | ||
440 | * Returns nanoseconds | ||
441 | * XXX This is a suboptimal implementation. | ||
442 | */ | ||
443 | unsigned long long sched_clock(void) | ||
444 | { | ||
445 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
446 | } | ||
447 | |||
448 | /* Ok, my cute asm atomicity trick doesn't work anymore. | 439 | /* Ok, my cute asm atomicity trick doesn't work anymore. |
449 | * There are just too many variables that need to be protected | 440 | * There are just too many variables that need to be protected |
450 | * now (both members of xtime, et al.) | 441 | * now (both members of xtime, et al.) |
diff --git a/arch/v850/kernel/time.c b/arch/v850/kernel/time.c index cd06f47c0ea7..486e3a441c86 100644 --- a/arch/v850/kernel/time.c +++ b/arch/v850/kernel/time.c | |||
@@ -28,14 +28,6 @@ | |||
28 | #define TICK_SIZE (tick_nsec / 1000) | 28 | #define TICK_SIZE (tick_nsec / 1000) |
29 | 29 | ||
30 | /* | 30 | /* |
31 | * Scheduler clock - returns current time in nanosec units. | ||
32 | */ | ||
33 | unsigned long long sched_clock(void) | ||
34 | { | ||
35 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
36 | } | ||
37 | |||
38 | /* | ||
39 | * timer_interrupt() needs to keep up the real-time clock, | 31 | * timer_interrupt() needs to keep up the real-time clock, |
40 | * as well as call the "do_timer()" routine every clocktick | 32 | * as well as call the "do_timer()" routine every clocktick |
41 | */ | 33 | */ |
diff --git a/arch/xtensa/kernel/time.c b/arch/xtensa/kernel/time.c index a350431363a0..22949be4a5d8 100644 --- a/arch/xtensa/kernel/time.c +++ b/arch/xtensa/kernel/time.c | |||
@@ -38,15 +38,6 @@ unsigned long ccount_nsec; /* nsec per ccount increment */ | |||
38 | unsigned int last_ccount_stamp; | 38 | unsigned int last_ccount_stamp; |
39 | static long last_rtc_update = 0; | 39 | static long last_rtc_update = 0; |
40 | 40 | ||
41 | /* | ||
42 | * Scheduler clock - returns current tim in nanosec units. | ||
43 | */ | ||
44 | |||
45 | unsigned long long sched_clock(void) | ||
46 | { | ||
47 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
48 | } | ||
49 | |||
50 | static irqreturn_t timer_interrupt(int irq, void *dev_id); | 41 | static irqreturn_t timer_interrupt(int irq, void *dev_id); |
51 | static struct irqaction timer_irqaction = { | 42 | static struct irqaction timer_irqaction = { |
52 | .handler = timer_interrupt, | 43 | .handler = timer_interrupt, |
diff --git a/kernel/sched.c b/kernel/sched.c index cca93cc0dd7d..1cd4ee769e20 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -57,6 +57,16 @@ | |||
57 | #include <asm/unistd.h> | 57 | #include <asm/unistd.h> |
58 | 58 | ||
59 | /* | 59 | /* |
60 | * Scheduler clock - returns current time in nanosec units. | ||
61 | * This is default implementation. | ||
62 | * Architectures and sub-architectures can override this. | ||
63 | */ | ||
64 | unsigned long long __attribute__((weak)) sched_clock(void) | ||
65 | { | ||
66 | return (unsigned long long)jiffies * (1000000000 / HZ); | ||
67 | } | ||
68 | |||
69 | /* | ||
60 | * Convert user-nice values [ -20 ... 0 ... 19 ] | 70 | * Convert user-nice values [ -20 ... 0 ... 19 ] |
61 | * to static priority [ MAX_RT_PRIO..MAX_PRIO-1 ], | 71 | * to static priority [ MAX_RT_PRIO..MAX_PRIO-1 ], |
62 | * and back. | 72 | * and back. |