Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=73b08d2aa4245806ef1bdd48463e9a0b045c62cf
Commit:     73b08d2aa4245806ef1bdd48463e9a0b045c62cf
Parent:     95492e4646e5de8b43d9a7908d6177fb737b61f0
Author:     Thomas Gleixner <[EMAIL PROTECTED]>
AuthorDate: Fri Feb 16 01:27:36 2007 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Fri Feb 16 08:13:57 2007 -0800

    [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.
    
    [EMAIL PROTECTED]: convert vmitime.c to the new clocksource flag]
    Signed-off-by: Thomas Gleixner <[EMAIL PROTECTED]>
    Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]>
    Cc: john stultz <[EMAIL PROTECTED]>
    Cc: Roman Zippel <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 arch/i386/kernel/hpet.c          |    2 +-
 arch/i386/kernel/tsc.c           |    7 +++++--
 arch/i386/kernel/vmitime.c       |    2 +-
 drivers/clocksource/acpi_pm.c    |    3 ++-
 drivers/clocksource/cyclone.c    |    2 +-
 drivers/clocksource/scx200_hrt.c |    2 +-
 include/linux/clocksource.h      |   10 ++++++++--
 kernel/time/jiffies.c            |    1 -
 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 0b29d41..7d2739f 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 0fd9310..a376549 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 2e2d8db..76d2adc 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 b6bcdbb..c7276a6 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 bf4d3d5..4f3925c 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 22915cc..b92da67 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 55d7140..45b0c31 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 a99b2a6..3be8da8 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 8f4bf1e..1144ff2 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));
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to