Commit b035b6de authored by Alexey Dobriyan's avatar Alexey Dobriyan Committed by Linus Torvalds

[PATCH] Consolidate default sched_clock()

Use attribute(weak).
Signed-off-by: default avatarAlexey Dobriyan <adobriyan@openvz.org>
Acked-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 5e07e1cc
...@@ -90,17 +90,6 @@ static inline __u32 rpcc(void) ...@@ -90,17 +90,6 @@ static inline __u32 rpcc(void)
return result; return result;
} }
/*
* Scheduler clock - returns current time in nanosec units.
*
* Copied from ARM code for expediency... ;-}
*/
unsigned long long sched_clock(void)
{
return (unsigned long long)jiffies * (1000000000 / HZ);
}
/* /*
* timer_interrupt() needs to keep up the real-time clock, * timer_interrupt() needs to keep up the real-time clock,
* as well as call the "do_timer()" routine every clocktick * as well as call the "do_timer()" routine every clocktick
......
...@@ -77,16 +77,6 @@ static unsigned long dummy_gettimeoffset(void) ...@@ -77,16 +77,6 @@ static unsigned long dummy_gettimeoffset(void)
} }
#endif #endif
/*
* Scheduler clock - returns current time in nanosec units.
* This is the default implementation. Sub-architecture
* implementations can override this.
*/
unsigned long long __attribute__((weak)) sched_clock(void)
{
return (unsigned long long)jiffies * (1000000000 / HZ);
}
/* /*
* An implementation of printk_clock() independent from * An implementation of printk_clock() independent from
* sched_clock(). This avoids non-bootable kernels when * sched_clock(). This avoids non-bootable kernels when
......
...@@ -89,14 +89,6 @@ static unsigned long gettimeoffset(void) ...@@ -89,14 +89,6 @@ static unsigned long gettimeoffset(void)
return (offset + LATCH/2) / LATCH; return (offset + LATCH/2) / LATCH;
} }
/*
* Scheduler clock - returns current time in nanosec units.
*/
unsigned long long sched_clock(void)
{
return (unsigned long long)jiffies * (1000000000 / HZ);
}
static unsigned long next_rtc_update; static unsigned long next_rtc_update;
/* /*
......
...@@ -109,15 +109,6 @@ static void avr32_hpt_init(unsigned int count) ...@@ -109,15 +109,6 @@ static void avr32_hpt_init(unsigned int count)
sysreg_write(COUNT, count); sysreg_write(COUNT, count);
} }
/*
* Scheduler clock - returns current time in nanosec units.
*/
unsigned long long sched_clock(void)
{
/* There must be better ways...? */
return (unsigned long long)jiffies * (1000000000 / HZ);
}
/* /*
* local_timer_interrupt() does profiling and process accounting on a * local_timer_interrupt() does profiling and process accounting on a
* per-CPU basis. * per-CPU basis.
......
...@@ -216,14 +216,6 @@ cris_do_profile(struct pt_regs* regs) ...@@ -216,14 +216,6 @@ cris_do_profile(struct pt_regs* regs)
#endif #endif
} }
/*
* Scheduler clock - returns current time in nanosec units.
*/
unsigned long long sched_clock(void)
{
return (unsigned long long)jiffies * (1000000000 / HZ);
}
static int static int
__init init_udelay(void) __init init_udelay(void)
{ {
......
...@@ -118,9 +118,3 @@ int do_settimeofday(struct timespec *tv) ...@@ -118,9 +118,3 @@ int do_settimeofday(struct timespec *tv)
} }
EXPORT_SYMBOL(do_settimeofday); EXPORT_SYMBOL(do_settimeofday);
unsigned long long sched_clock(void)
{
return (unsigned long long)jiffies * (1000000000 / HZ);
}
...@@ -286,11 +286,3 @@ void __init time_init(void) ...@@ -286,11 +286,3 @@ void __init time_init(void)
#error no chip configuration #error no chip configuration
#endif #endif
} }
/*
* Scheduler clock - returns current time in nanosec units.
*/
unsigned long long sched_clock(void)
{
return (unsigned long long)jiffies * (1000000000 / HZ);
}
...@@ -159,12 +159,3 @@ int do_settimeofday(struct timespec *tv) ...@@ -159,12 +159,3 @@ int do_settimeofday(struct timespec *tv)
} }
EXPORT_SYMBOL(do_settimeofday); EXPORT_SYMBOL(do_settimeofday);
/*
* Scheduler clock - returns current time in ns units.
*/
unsigned long long sched_clock(void)
{
return (unsigned long long)jiffies*(1000000000/HZ);
}
...@@ -174,13 +174,4 @@ int do_settimeofday(struct timespec *tv) ...@@ -174,13 +174,4 @@ int do_settimeofday(struct timespec *tv)
clock_was_set(); clock_was_set();
return 0; return 0;
} }
/*
* Scheduler clock - returns current time in nanosec units.
*/
unsigned long long sched_clock(void)
{
return (unsigned long long)jiffies * (1000000000 / HZ);
}
EXPORT_SYMBOL(do_settimeofday); EXPORT_SYMBOL(do_settimeofday);
...@@ -455,8 +455,3 @@ EXPORT_SYMBOL(rtc_lock); ...@@ -455,8 +455,3 @@ EXPORT_SYMBOL(rtc_lock);
EXPORT_SYMBOL(to_tm); EXPORT_SYMBOL(to_tm);
EXPORT_SYMBOL(rtc_mips_set_time); EXPORT_SYMBOL(rtc_mips_set_time);
EXPORT_SYMBOL(rtc_mips_get_time); EXPORT_SYMBOL(rtc_mips_get_time);
unsigned long long sched_clock(void)
{
return (unsigned long long)jiffies*(1000000000/HZ);
}
...@@ -288,17 +288,6 @@ do_settimeofday (struct timespec *tv) ...@@ -288,17 +288,6 @@ do_settimeofday (struct timespec *tv)
} }
EXPORT_SYMBOL(do_settimeofday); EXPORT_SYMBOL(do_settimeofday);
/*
* XXX: We can do better than this.
* Returns nanoseconds
*/
unsigned long long sched_clock(void)
{
return (unsigned long long)jiffies * (1000000000 / HZ);
}
void __init start_cpu_itimer(void) void __init start_cpu_itimer(void)
{ {
unsigned int cpu = smp_processor_id(); unsigned int cpu = smp_processor_id();
......
...@@ -41,14 +41,6 @@ static int null_rtc_set_time(const time_t secs) ...@@ -41,14 +41,6 @@ static int null_rtc_set_time(const time_t secs)
void (*rtc_sh_get_time)(struct timespec *) = null_rtc_get_time; void (*rtc_sh_get_time)(struct timespec *) = null_rtc_get_time;
int (*rtc_sh_set_time)(const time_t) = null_rtc_set_time; int (*rtc_sh_set_time)(const time_t) = null_rtc_set_time;
/*
* Scheduler clock - returns current time in nanosec units.
*/
unsigned long long __attribute__ ((weak)) sched_clock(void)
{
return (unsigned long long)jiffies * (1000000000 / HZ);
}
#ifndef CONFIG_GENERIC_TIME #ifndef CONFIG_GENERIC_TIME
void do_gettimeofday(struct timeval *tv) void do_gettimeofday(struct timeval *tv)
{ {
......
...@@ -579,12 +579,3 @@ void enter_deep_standby(void) ...@@ -579,12 +579,3 @@ void enter_deep_standby(void)
asm __volatile__ ("nop"); asm __volatile__ ("nop");
panic("Unexpected wakeup!\n"); panic("Unexpected wakeup!\n");
} }
/*
* Scheduler clock - returns current time in nanosec units.
*/
unsigned long long sched_clock(void)
{
return (unsigned long long)jiffies * (1000000000 / HZ);
}
...@@ -436,15 +436,6 @@ static inline unsigned long do_gettimeoffset(void) ...@@ -436,15 +436,6 @@ static inline unsigned long do_gettimeoffset(void)
return (*master_l10_counter >> 10) & 0x1fffff; return (*master_l10_counter >> 10) & 0x1fffff;
} }
/*
* Returns nanoseconds
* XXX This is a suboptimal implementation.
*/
unsigned long long sched_clock(void)
{
return (unsigned long long)jiffies * (1000000000 / HZ);
}
/* Ok, my cute asm atomicity trick doesn't work anymore. /* Ok, my cute asm atomicity trick doesn't work anymore.
* There are just too many variables that need to be protected * There are just too many variables that need to be protected
* now (both members of xtime, et al.) * now (both members of xtime, et al.)
......
...@@ -27,14 +27,6 @@ ...@@ -27,14 +27,6 @@
#define TICK_SIZE (tick_nsec / 1000) #define TICK_SIZE (tick_nsec / 1000)
/*
* Scheduler clock - returns current time in nanosec units.
*/
unsigned long long sched_clock(void)
{
return (unsigned long long)jiffies * (1000000000 / HZ);
}
/* /*
* timer_interrupt() needs to keep up the real-time clock, * timer_interrupt() needs to keep up the real-time clock,
* as well as call the "do_timer()" routine every clocktick * as well as call the "do_timer()" routine every clocktick
......
...@@ -38,15 +38,6 @@ unsigned long ccount_nsec; /* nsec per ccount increment */ ...@@ -38,15 +38,6 @@ unsigned long ccount_nsec; /* nsec per ccount increment */
unsigned int last_ccount_stamp; unsigned int last_ccount_stamp;
static long last_rtc_update = 0; static long last_rtc_update = 0;
/*
* Scheduler clock - returns current tim in nanosec units.
*/
unsigned long long sched_clock(void)
{
return (unsigned long long)jiffies * (1000000000 / HZ);
}
static irqreturn_t timer_interrupt(int irq, void *dev_id); static irqreturn_t timer_interrupt(int irq, void *dev_id);
static struct irqaction timer_irqaction = { static struct irqaction timer_irqaction = {
.handler = timer_interrupt, .handler = timer_interrupt,
......
...@@ -56,6 +56,16 @@ ...@@ -56,6 +56,16 @@
#include <asm/unistd.h> #include <asm/unistd.h>
/*
* Scheduler clock - returns current time in nanosec units.
* This is default implementation.
* Architectures and sub-architectures can override this.
*/
unsigned long long __attribute__((weak)) sched_clock(void)
{
return (unsigned long long)jiffies * (1000000000 / HZ);
}
/* /*
* Convert user-nice values [ -20 ... 0 ... 19 ] * Convert user-nice values [ -20 ... 0 ... 19 ]
* to static priority [ MAX_RT_PRIO..MAX_PRIO-1 ], * to static priority [ MAX_RT_PRIO..MAX_PRIO-1 ],
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment