diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2007-02-16 01:27:36 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-16 08:13:57 -0800 | 
| commit | 73b08d2aa4245806ef1bdd48463e9a0b045c62cf (patch) | |
| tree | 1cd5b3a7b9f889bb6ff1e7fc6c9a95751faad4d7 | |
| parent | 95492e4646e5de8b43d9a7908d6177fb737b61f0 (diff) | |
| download | olio-linux-3.10-73b08d2aa4245806ef1bdd48463e9a0b045c62cf.tar.xz olio-linux-3.10-73b08d2aa4245806ef1bdd48463e9a0b045c62cf.zip  | |
[PATCH] clocksource: replace is_continuous by a flag field
Using a flag filed allows to encode more than one information into a variable.
Preparatory patch for the generic clocksource verification.
[mingo@elte.hu: convert vmitime.c to the new clocksource flag]
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: john stultz <johnstul@us.ibm.com>
Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
| -rw-r--r-- | arch/i386/kernel/hpet.c | 2 | ||||
| -rw-r--r-- | arch/i386/kernel/tsc.c | 7 | ||||
| -rw-r--r-- | arch/i386/kernel/vmitime.c | 2 | ||||
| -rw-r--r-- | drivers/clocksource/acpi_pm.c | 3 | ||||
| -rw-r--r-- | drivers/clocksource/cyclone.c | 2 | ||||
| -rw-r--r-- | drivers/clocksource/scx200_hrt.c | 2 | ||||
| -rw-r--r-- | include/linux/clocksource.h | 10 | ||||
| -rw-r--r-- | kernel/time/jiffies.c | 1 | ||||
| -rw-r--r-- | kernel/timer.c | 2 | 
9 files changed, 20 insertions, 11 deletions
diff --git a/arch/i386/kernel/hpet.c b/arch/i386/kernel/hpet.c index 0b29d41322a..7d2739fff3a 100644 --- a/arch/i386/kernel/hpet.c +++ b/arch/i386/kernel/hpet.c @@ -26,7 +26,7 @@ static struct clocksource clocksource_hpet = {  	.mask		= HPET_MASK,  	.mult		= 0, /* set below */  	.shift		= HPET_SHIFT, -	.is_continuous	= 1, +	.flags		= CLOCK_SOURCE_IS_CONTINUOUS,  };  static int __init init_hpet_clocksource(void) diff --git a/arch/i386/kernel/tsc.c b/arch/i386/kernel/tsc.c index 0fd93107ff9..a3765499178 100644 --- a/arch/i386/kernel/tsc.c +++ b/arch/i386/kernel/tsc.c @@ -314,7 +314,8 @@ static struct clocksource clocksource_tsc = {  	.mult			= 0, /* to be set */  	.shift			= 22,  	.update_callback	= tsc_update_callback, -	.is_continuous		= 1, +	.flags			= CLOCK_SOURCE_IS_CONTINUOUS | +				  CLOCK_SOURCE_MUST_VERIFY,  };  static int tsc_update_callback(void) @@ -434,8 +435,10 @@ static int __init init_tsc_clocksource(void)  		clocksource_tsc.mult = clocksource_khz2mult(current_tsc_khz,  							clocksource_tsc.shift);  		/* lower the rating if we already know its unstable: */ -		if (check_tsc_unstable()) +		if (check_tsc_unstable()) {  			clocksource_tsc.rating = 0; +			clocksource_tsc.flags &= ~CLOCK_SOURCE_IS_CONTINUOUS; +		}  		init_timer(&verify_tsc_freq_timer);  		verify_tsc_freq_timer.function = verify_tsc_freq; diff --git a/arch/i386/kernel/vmitime.c b/arch/i386/kernel/vmitime.c index 2e2d8dbcbd6..76d2adcae5a 100644 --- a/arch/i386/kernel/vmitime.c +++ b/arch/i386/kernel/vmitime.c @@ -115,7 +115,7 @@ static struct clocksource clocksource_vmi = {  	.mask			= CLOCKSOURCE_MASK(64),  	.mult			= 0, /* to be set */  	.shift			= 22, -	.is_continuous		= 1, +	.flags			= CLOCK_SOURCE_IS_CONTINUOUS,  }; diff --git a/drivers/clocksource/acpi_pm.c b/drivers/clocksource/acpi_pm.c index b6bcdbbf57b..c7276a61695 100644 --- a/drivers/clocksource/acpi_pm.c +++ b/drivers/clocksource/acpi_pm.c @@ -72,7 +72,8 @@ static struct clocksource clocksource_acpi_pm = {  	.mask		= (cycle_t)ACPI_PM_MASK,  	.mult		= 0, /*to be caluclated*/  	.shift		= 22, -	.is_continuous	= 1, +	.flags		= CLOCK_SOURCE_IS_CONTINUOUS, +  }; diff --git a/drivers/clocksource/cyclone.c b/drivers/clocksource/cyclone.c index bf4d3d50d1c..4f3925ceb36 100644 --- a/drivers/clocksource/cyclone.c +++ b/drivers/clocksource/cyclone.c @@ -31,7 +31,7 @@ static struct clocksource clocksource_cyclone = {  	.mask		= CYCLONE_TIMER_MASK,  	.mult		= 10,  	.shift		= 0, -	.is_continuous	= 1, +	.flags		= CLOCK_SOURCE_IS_CONTINUOUS,  };  static int __init init_cyclone_clocksource(void) diff --git a/drivers/clocksource/scx200_hrt.c b/drivers/clocksource/scx200_hrt.c index 22915cc46ba..b92da677aa5 100644 --- a/drivers/clocksource/scx200_hrt.c +++ b/drivers/clocksource/scx200_hrt.c @@ -57,7 +57,7 @@ static struct clocksource cs_hrt = {  	.rating		= 250,  	.read		= read_hrt,  	.mask		= CLOCKSOURCE_MASK(32), -	.is_continuous	= 1, +	.flags		= CLOCK_SOURCE_IS_CONTINUOUS,  	/* mult, shift are set based on mhz27 flag */  }; diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h index 55d71405237..45b0c310ae8 100644 --- a/include/linux/clocksource.h +++ b/include/linux/clocksource.h @@ -45,7 +45,7 @@ typedef u64 cycle_t;   * @mult:		cycle to nanosecond multiplier   * @shift:		cycle to nanosecond divisor (power of two)   * @update_callback:	called when safe to alter clocksource values - * @is_continuous:	defines if clocksource is free-running. + * @flags:		flags describing special properties   * @cycle_interval:	Used internally by timekeeping core, please ignore.   * @xtime_interval:	Used internally by timekeeping core, please ignore.   */ @@ -58,7 +58,7 @@ struct clocksource {  	u32 mult;  	u32 shift;  	int (*update_callback)(void); -	int is_continuous; +	unsigned long flags;  	/* timekeeping specific data, ignore */  	cycle_t cycle_last, cycle_interval; @@ -66,6 +66,12 @@ struct clocksource {  	s64 error;  }; +/* + * Clock source flags bits:: + */ +#define CLOCK_SOURCE_IS_CONTINUOUS	0x01 +#define CLOCK_SOURCE_MUST_VERIFY	0x02 +  /* simplify initialization of mask field */  #define CLOCKSOURCE_MASK(bits) (cycle_t)(bits<64 ? ((1ULL<<bits)-1) : -1) diff --git a/kernel/time/jiffies.c b/kernel/time/jiffies.c index a99b2a6e6a0..3be8da8fed7 100644 --- a/kernel/time/jiffies.c +++ b/kernel/time/jiffies.c @@ -62,7 +62,6 @@ struct clocksource clocksource_jiffies = {  	.mask		= 0xffffffff, /*32bits*/  	.mult		= NSEC_PER_JIFFY << JIFFIES_SHIFT, /* details above */  	.shift		= JIFFIES_SHIFT, -	.is_continuous	= 0, /* tick based, not free running */  };  static int __init init_jiffies_clocksource(void) diff --git a/kernel/timer.c b/kernel/timer.c index 8f4bf1e6a3e..1144ff2c2ea 100644 --- a/kernel/timer.c +++ b/kernel/timer.c @@ -871,7 +871,7 @@ int timekeeping_is_continuous(void)  	do {  		seq = read_seqbegin(&xtime_lock); -		ret = clock->is_continuous; +		ret = clock->flags & CLOCK_SOURCE_IS_CONTINUOUS;  	} while (read_seqretry(&xtime_lock, seq));  |