time: Kill off CONFIG_GENERIC_TIME
Now that all arches have been converted over to use generic time via clocksources or arch_gettimeoffset(), we can remove the GENERIC_TIME config option and simplify the generic code. Signed-off-by: John Stultz <johnstul@us.ibm.com> LKML-Reference: <1279068988-21864-4-git-send-email-johnstul@us.ibm.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
committed by
Thomas Gleixner
parent
ce3bf7ab22
commit
592913ecb8
@@ -73,7 +73,6 @@ parameter is applicable:
|
|||||||
MTD MTD (Memory Technology Device) support is enabled.
|
MTD MTD (Memory Technology Device) support is enabled.
|
||||||
NET Appropriate network support is enabled.
|
NET Appropriate network support is enabled.
|
||||||
NUMA NUMA support is enabled.
|
NUMA NUMA support is enabled.
|
||||||
GENERIC_TIME The generic timeofday code is enabled.
|
|
||||||
NFS Appropriate NFS support is enabled.
|
NFS Appropriate NFS support is enabled.
|
||||||
OSS OSS sound support is enabled.
|
OSS OSS sound support is enabled.
|
||||||
PV_OPS A paravirtualized kernel is enabled.
|
PV_OPS A paravirtualized kernel is enabled.
|
||||||
@@ -468,7 +467,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||||||
clocksource is not available, it defaults to PIT.
|
clocksource is not available, it defaults to PIT.
|
||||||
Format: { pit | tsc | cyclone | pmtmr }
|
Format: { pit | tsc | cyclone | pmtmr }
|
||||||
|
|
||||||
clocksource= [GENERIC_TIME] Override the default clocksource
|
clocksource= Override the default clocksource
|
||||||
Format: <string>
|
Format: <string>
|
||||||
Override the default clocksource and use the clocksource
|
Override the default clocksource and use the clocksource
|
||||||
with the name specified.
|
with the name specified.
|
||||||
|
@@ -47,10 +47,6 @@ config GENERIC_CALIBRATE_DELAY
|
|||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
bool
|
|
||||||
default y
|
|
||||||
|
|
||||||
config GENERIC_CMOS_UPDATE
|
config GENERIC_CMOS_UPDATE
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
@@ -41,10 +41,6 @@ config SYS_SUPPORTS_APM_EMULATION
|
|||||||
config GENERIC_GPIO
|
config GENERIC_GPIO
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
bool
|
|
||||||
default y
|
|
||||||
|
|
||||||
config ARCH_USES_GETTIMEOFFSET
|
config ARCH_USES_GETTIMEOFFSET
|
||||||
bool
|
bool
|
||||||
default n
|
default n
|
||||||
|
@@ -45,9 +45,6 @@ config GENERIC_IRQ_PROBE
|
|||||||
config RWSEM_GENERIC_SPINLOCK
|
config RWSEM_GENERIC_SPINLOCK
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
def_bool y
|
|
||||||
|
|
||||||
config GENERIC_CLOCKEVENTS
|
config GENERIC_CLOCKEVENTS
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
@@ -614,9 +614,6 @@ comment "Kernel Timer/Scheduler"
|
|||||||
|
|
||||||
source kernel/Kconfig.hz
|
source kernel/Kconfig.hz
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
def_bool y
|
|
||||||
|
|
||||||
config GENERIC_CLOCKEVENTS
|
config GENERIC_CLOCKEVENTS
|
||||||
bool "Generic clock events"
|
bool "Generic clock events"
|
||||||
default y
|
default y
|
||||||
|
@@ -20,9 +20,6 @@ config RWSEM_GENERIC_SPINLOCK
|
|||||||
config RWSEM_XCHGADD_ALGORITHM
|
config RWSEM_XCHGADD_ALGORITHM
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
def_bool y
|
|
||||||
|
|
||||||
config GENERIC_CMOS_UPDATE
|
config GENERIC_CMOS_UPDATE
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
@@ -40,10 +40,6 @@ config GENERIC_HARDIRQS_NO__DO_IRQ
|
|||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
bool
|
|
||||||
default y
|
|
||||||
|
|
||||||
config TIME_LOW_RES
|
config TIME_LOW_RES
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
@@ -62,10 +62,6 @@ config GENERIC_CALIBRATE_DELAY
|
|||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
bool
|
|
||||||
default y
|
|
||||||
|
|
||||||
config GENERIC_BUG
|
config GENERIC_BUG
|
||||||
bool
|
bool
|
||||||
depends on BUG
|
depends on BUG
|
||||||
|
@@ -82,10 +82,6 @@ config GENERIC_CALIBRATE_DELAY
|
|||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
bool
|
|
||||||
default y
|
|
||||||
|
|
||||||
config GENERIC_TIME_VSYSCALL
|
config GENERIC_TIME_VSYSCALL
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
@@ -44,9 +44,6 @@ config HZ
|
|||||||
int
|
int
|
||||||
default 100
|
default 100
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
def_bool y
|
|
||||||
|
|
||||||
config ARCH_USES_GETTIMEOFFSET
|
config ARCH_USES_GETTIMEOFFSET
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
@@ -59,9 +59,6 @@ config HZ
|
|||||||
int
|
int
|
||||||
default 100
|
default 100
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
def_bool y
|
|
||||||
|
|
||||||
config ARCH_USES_GETTIMEOFFSET
|
config ARCH_USES_GETTIMEOFFSET
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
@@ -63,10 +63,6 @@ config GENERIC_CALIBRATE_DELAY
|
|||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
bool
|
|
||||||
default y
|
|
||||||
|
|
||||||
config GENERIC_CMOS_UPDATE
|
config GENERIC_CMOS_UPDATE
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
@@ -48,9 +48,6 @@ config GENERIC_IRQ_PROBE
|
|||||||
config GENERIC_CALIBRATE_DELAY
|
config GENERIC_CALIBRATE_DELAY
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
def_bool y
|
|
||||||
|
|
||||||
config GENERIC_TIME_VSYSCALL
|
config GENERIC_TIME_VSYSCALL
|
||||||
def_bool n
|
def_bool n
|
||||||
|
|
||||||
|
@@ -733,10 +733,6 @@ config GENERIC_CLOCKEVENTS
|
|||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
bool
|
|
||||||
default y
|
|
||||||
|
|
||||||
config GENERIC_CMOS_UPDATE
|
config GENERIC_CMOS_UPDATE
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
@@ -46,9 +46,6 @@ config GENERIC_FIND_NEXT_BIT
|
|||||||
config GENERIC_HWEIGHT
|
config GENERIC_HWEIGHT
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
def_bool y
|
|
||||||
|
|
||||||
config GENERIC_BUG
|
config GENERIC_BUG
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
@@ -66,10 +66,6 @@ config GENERIC_CALIBRATE_DELAY
|
|||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
bool
|
|
||||||
default y
|
|
||||||
|
|
||||||
config TIME_LOW_RES
|
config TIME_LOW_RES
|
||||||
bool
|
bool
|
||||||
depends on SMP
|
depends on SMP
|
||||||
|
@@ -29,9 +29,6 @@ config MMU
|
|||||||
config GENERIC_CMOS_UPDATE
|
config GENERIC_CMOS_UPDATE
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
def_bool y
|
|
||||||
|
|
||||||
config GENERIC_TIME_VSYSCALL
|
config GENERIC_TIME_VSYSCALL
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
@@ -40,9 +40,6 @@ config ARCH_HAS_ILOG2_U64
|
|||||||
config GENERIC_HWEIGHT
|
config GENERIC_HWEIGHT
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
def_bool y
|
|
||||||
|
|
||||||
config GENERIC_TIME_VSYSCALL
|
config GENERIC_TIME_VSYSCALL
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
@@ -55,9 +55,6 @@ config GENERIC_CALIBRATE_DELAY
|
|||||||
config GENERIC_CLOCKEVENTS
|
config GENERIC_CLOCKEVENTS
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
def_bool y
|
|
||||||
|
|
||||||
config SCHED_NO_NO_OMIT_FRAME_POINTER
|
config SCHED_NO_NO_OMIT_FRAME_POINTER
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
@@ -98,9 +98,6 @@ config GENERIC_CALIBRATE_DELAY
|
|||||||
config GENERIC_IOMAP
|
config GENERIC_IOMAP
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
def_bool y
|
|
||||||
|
|
||||||
config GENERIC_CLOCKEVENTS
|
config GENERIC_CLOCKEVENTS
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
@@ -66,9 +66,6 @@ config BITS
|
|||||||
default 32 if SPARC32
|
default 32 if SPARC32
|
||||||
default 64 if SPARC64
|
default 64 if SPARC64
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
def_bool y
|
|
||||||
|
|
||||||
config ARCH_USES_GETTIMEOFFSET
|
config ARCH_USES_GETTIMEOFFSET
|
||||||
bool
|
bool
|
||||||
default y if SPARC32
|
default y if SPARC32
|
||||||
|
@@ -55,10 +55,6 @@ config GENERIC_BUG
|
|||||||
default y
|
default y
|
||||||
depends on BUG
|
depends on BUG
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
bool
|
|
||||||
default y
|
|
||||||
|
|
||||||
config GENERIC_CLOCKEVENTS
|
config GENERIC_CLOCKEVENTS
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
@@ -72,9 +72,6 @@ config ARCH_DEFCONFIG
|
|||||||
default "arch/x86/configs/i386_defconfig" if X86_32
|
default "arch/x86/configs/i386_defconfig" if X86_32
|
||||||
default "arch/x86/configs/x86_64_defconfig" if X86_64
|
default "arch/x86/configs/x86_64_defconfig" if X86_64
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
def_bool y
|
|
||||||
|
|
||||||
config GENERIC_CMOS_UPDATE
|
config GENERIC_CMOS_UPDATE
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
@@ -2046,7 +2043,7 @@ config SCx200
|
|||||||
|
|
||||||
config SCx200HR_TIMER
|
config SCx200HR_TIMER
|
||||||
tristate "NatSemi SCx200 27MHz High-Resolution Timer Support"
|
tristate "NatSemi SCx200 27MHz High-Resolution Timer Support"
|
||||||
depends on SCx200 && GENERIC_TIME
|
depends on SCx200
|
||||||
default y
|
default y
|
||||||
---help---
|
---help---
|
||||||
This driver provides a clocksource built upon the on-chip
|
This driver provides a clocksource built upon the on-chip
|
||||||
|
@@ -48,9 +48,6 @@ config HZ
|
|||||||
int
|
int
|
||||||
default 100
|
default 100
|
||||||
|
|
||||||
config GENERIC_TIME
|
|
||||||
def_bool y
|
|
||||||
|
|
||||||
source "init/Kconfig"
|
source "init/Kconfig"
|
||||||
source "kernel/Kconfig.freezer"
|
source "kernel/Kconfig.freezer"
|
||||||
|
|
||||||
|
@@ -101,7 +101,9 @@ obj-y += firmware/
|
|||||||
obj-$(CONFIG_CRYPTO) += crypto/
|
obj-$(CONFIG_CRYPTO) += crypto/
|
||||||
obj-$(CONFIG_SUPERH) += sh/
|
obj-$(CONFIG_SUPERH) += sh/
|
||||||
obj-$(CONFIG_ARCH_SHMOBILE) += sh/
|
obj-$(CONFIG_ARCH_SHMOBILE) += sh/
|
||||||
obj-$(CONFIG_GENERIC_TIME) += clocksource/
|
ifndef CONFIG_ARCH_USES_GETTIMEOFFSET
|
||||||
|
obj-y += clocksource/
|
||||||
|
endif
|
||||||
obj-$(CONFIG_DMA_ENGINE) += dma/
|
obj-$(CONFIG_DMA_ENGINE) += dma/
|
||||||
obj-$(CONFIG_DCA) += dca/
|
obj-$(CONFIG_DCA) += dca/
|
||||||
obj-$(CONFIG_HID) += hid/
|
obj-$(CONFIG_HID) += hid/
|
||||||
|
@@ -77,7 +77,7 @@ static void power_saving_mwait_init(void)
|
|||||||
power_saving_mwait_eax = (highest_cstate << MWAIT_SUBSTATE_SIZE) |
|
power_saving_mwait_eax = (highest_cstate << MWAIT_SUBSTATE_SIZE) |
|
||||||
(highest_subcstate - 1);
|
(highest_subcstate - 1);
|
||||||
|
|
||||||
#if defined(CONFIG_GENERIC_TIME) && defined(CONFIG_X86)
|
#if defined(CONFIG_X86)
|
||||||
switch (boot_cpu_data.x86_vendor) {
|
switch (boot_cpu_data.x86_vendor) {
|
||||||
case X86_VENDOR_AMD:
|
case X86_VENDOR_AMD:
|
||||||
case X86_VENDOR_INTEL:
|
case X86_VENDOR_INTEL:
|
||||||
|
@@ -264,7 +264,7 @@ int acpi_processor_resume(struct acpi_device * device)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
|
#if defined(CONFIG_X86)
|
||||||
static void tsc_check_state(int state)
|
static void tsc_check_state(int state)
|
||||||
{
|
{
|
||||||
switch (boot_cpu_data.x86_vendor) {
|
switch (boot_cpu_data.x86_vendor) {
|
||||||
|
@@ -72,7 +72,7 @@ config ATMEL_TCLIB
|
|||||||
|
|
||||||
config ATMEL_TCB_CLKSRC
|
config ATMEL_TCB_CLKSRC
|
||||||
bool "TC Block Clocksource"
|
bool "TC Block Clocksource"
|
||||||
depends on ATMEL_TCLIB && GENERIC_TIME
|
depends on ATMEL_TCLIB
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
Select this to get a high precision clocksource based on a
|
Select this to get a high precision clocksource based on a
|
||||||
@@ -240,7 +240,7 @@ config CS5535_MFGPT_DEFAULT_IRQ
|
|||||||
|
|
||||||
config CS5535_CLOCK_EVENT_SRC
|
config CS5535_CLOCK_EVENT_SRC
|
||||||
tristate "CS5535/CS5536 high-res timer (MFGPT) events"
|
tristate "CS5535/CS5536 high-res timer (MFGPT) events"
|
||||||
depends on GENERIC_TIME && GENERIC_CLOCKEVENTS && CS5535_MFGPT
|
depends on GENERIC_CLOCKEVENTS && CS5535_MFGPT
|
||||||
help
|
help
|
||||||
This driver provides a clock event source based on the MFGPT
|
This driver provides a clock event source based on the MFGPT
|
||||||
timer(s) in the CS5535 and CS5536 companion chips.
|
timer(s) in the CS5535 and CS5536 companion chips.
|
||||||
|
@@ -300,22 +300,6 @@ struct timespec timespec_trunc(struct timespec t, unsigned gran)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(timespec_trunc);
|
EXPORT_SYMBOL(timespec_trunc);
|
||||||
|
|
||||||
#ifndef CONFIG_GENERIC_TIME
|
|
||||||
/*
|
|
||||||
* Simulate gettimeofday using do_gettimeofday which only allows a timeval
|
|
||||||
* and therefore only yields usec accuracy
|
|
||||||
*/
|
|
||||||
void getnstimeofday(struct timespec *tv)
|
|
||||||
{
|
|
||||||
struct timeval x;
|
|
||||||
|
|
||||||
do_gettimeofday(&x);
|
|
||||||
tv->tv_sec = x.tv_sec;
|
|
||||||
tv->tv_nsec = x.tv_usec * NSEC_PER_USEC;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(getnstimeofday);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
|
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
|
||||||
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
|
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
|
||||||
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
|
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
|
||||||
|
@@ -6,7 +6,7 @@ config TICK_ONESHOT
|
|||||||
|
|
||||||
config NO_HZ
|
config NO_HZ
|
||||||
bool "Tickless System (Dynamic Ticks)"
|
bool "Tickless System (Dynamic Ticks)"
|
||||||
depends on GENERIC_TIME && GENERIC_CLOCKEVENTS
|
depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
|
||||||
select TICK_ONESHOT
|
select TICK_ONESHOT
|
||||||
help
|
help
|
||||||
This option enables a tickless system: timer interrupts will
|
This option enables a tickless system: timer interrupts will
|
||||||
@@ -15,7 +15,7 @@ config NO_HZ
|
|||||||
|
|
||||||
config HIGH_RES_TIMERS
|
config HIGH_RES_TIMERS
|
||||||
bool "High Resolution Timer Support"
|
bool "High Resolution Timer Support"
|
||||||
depends on GENERIC_TIME && GENERIC_CLOCKEVENTS
|
depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
|
||||||
select TICK_ONESHOT
|
select TICK_ONESHOT
|
||||||
help
|
help
|
||||||
This option enables high resolution timer support. If your
|
This option enables high resolution timer support. If your
|
||||||
|
@@ -531,7 +531,7 @@ static u64 clocksource_max_deferment(struct clocksource *cs)
|
|||||||
return max_nsecs - (max_nsecs >> 5);
|
return max_nsecs - (max_nsecs >> 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_GENERIC_TIME
|
#ifndef CONFIG_ARCH_USES_GETTIMEOFFSET
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clocksource_select - Select the best clocksource available
|
* clocksource_select - Select the best clocksource available
|
||||||
@@ -577,7 +577,7 @@ static void clocksource_select(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* CONFIG_GENERIC_TIME */
|
#else /* !CONFIG_ARCH_USES_GETTIMEOFFSET */
|
||||||
|
|
||||||
static inline void clocksource_select(void) { }
|
static inline void clocksource_select(void) { }
|
||||||
|
|
||||||
|
@@ -173,8 +173,6 @@ void timekeeping_leap_insert(int leapsecond)
|
|||||||
update_vsyscall(&xtime, timekeeper.clock, timekeeper.mult);
|
update_vsyscall(&xtime, timekeeper.clock, timekeeper.mult);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_GENERIC_TIME
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* timekeeping_forward_now - update clock to the current time
|
* timekeeping_forward_now - update clock to the current time
|
||||||
*
|
*
|
||||||
@@ -376,52 +374,6 @@ void timekeeping_notify(struct clocksource *clock)
|
|||||||
tick_clock_notify();
|
tick_clock_notify();
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* GENERIC_TIME */
|
|
||||||
|
|
||||||
static inline void timekeeping_forward_now(void) { }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ktime_get - get the monotonic time in ktime_t format
|
|
||||||
*
|
|
||||||
* returns the time in ktime_t format
|
|
||||||
*/
|
|
||||||
ktime_t ktime_get(void)
|
|
||||||
{
|
|
||||||
struct timespec now;
|
|
||||||
|
|
||||||
ktime_get_ts(&now);
|
|
||||||
|
|
||||||
return timespec_to_ktime(now);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(ktime_get);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ktime_get_ts - get the monotonic clock in timespec format
|
|
||||||
* @ts: pointer to timespec variable
|
|
||||||
*
|
|
||||||
* The function calculates the monotonic clock from the realtime
|
|
||||||
* clock and the wall_to_monotonic offset and stores the result
|
|
||||||
* in normalized timespec format in the variable pointed to by @ts.
|
|
||||||
*/
|
|
||||||
void ktime_get_ts(struct timespec *ts)
|
|
||||||
{
|
|
||||||
struct timespec tomono;
|
|
||||||
unsigned long seq;
|
|
||||||
|
|
||||||
do {
|
|
||||||
seq = read_seqbegin(&xtime_lock);
|
|
||||||
getnstimeofday(ts);
|
|
||||||
tomono = wall_to_monotonic;
|
|
||||||
|
|
||||||
} while (read_seqretry(&xtime_lock, seq));
|
|
||||||
|
|
||||||
set_normalized_timespec(ts, ts->tv_sec + tomono.tv_sec,
|
|
||||||
ts->tv_nsec + tomono.tv_nsec);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(ktime_get_ts);
|
|
||||||
|
|
||||||
#endif /* !GENERIC_TIME */
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ktime_get_real - get the real (wall-) time in ktime_t format
|
* ktime_get_real - get the real (wall-) time in ktime_t format
|
||||||
*
|
*
|
||||||
@@ -784,10 +736,11 @@ void update_wall_time(void)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
clock = timekeeper.clock;
|
clock = timekeeper.clock;
|
||||||
#ifdef CONFIG_GENERIC_TIME
|
|
||||||
offset = (clock->read(clock) - clock->cycle_last) & clock->mask;
|
#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
|
||||||
#else
|
|
||||||
offset = timekeeper.cycle_interval;
|
offset = timekeeper.cycle_interval;
|
||||||
|
#else
|
||||||
|
offset = (clock->read(clock) - clock->cycle_last) & clock->mask;
|
||||||
#endif
|
#endif
|
||||||
timekeeper.xtime_nsec = (s64)xtime.tv_nsec << timekeeper.shift;
|
timekeeper.xtime_nsec = (s64)xtime.tv_nsec << timekeeper.shift;
|
||||||
|
|
||||||
|
@@ -153,7 +153,7 @@ config IRQSOFF_TRACER
|
|||||||
bool "Interrupts-off Latency Tracer"
|
bool "Interrupts-off Latency Tracer"
|
||||||
default n
|
default n
|
||||||
depends on TRACE_IRQFLAGS_SUPPORT
|
depends on TRACE_IRQFLAGS_SUPPORT
|
||||||
depends on GENERIC_TIME
|
depends on !ARCH_USES_GETTIMEOFFSET
|
||||||
select TRACE_IRQFLAGS
|
select TRACE_IRQFLAGS
|
||||||
select GENERIC_TRACER
|
select GENERIC_TRACER
|
||||||
select TRACER_MAX_TRACE
|
select TRACER_MAX_TRACE
|
||||||
@@ -175,7 +175,7 @@ config IRQSOFF_TRACER
|
|||||||
config PREEMPT_TRACER
|
config PREEMPT_TRACER
|
||||||
bool "Preemption-off Latency Tracer"
|
bool "Preemption-off Latency Tracer"
|
||||||
default n
|
default n
|
||||||
depends on GENERIC_TIME
|
depends on !ARCH_USES_GETTIMEOFFSET
|
||||||
depends on PREEMPT
|
depends on PREEMPT
|
||||||
select GENERIC_TRACER
|
select GENERIC_TRACER
|
||||||
select TRACER_MAX_TRACE
|
select TRACER_MAX_TRACE
|
||||||
|
Reference in New Issue
Block a user