applied thanks, -len On Sunday 24 February 2008, Yi Yang wrote: > cpuidle C-state sysfs node time and usage are very easy to overflow because > they are all of unsigned int type, time will overflow within about two hours, > usage will take longer time to overflow, but they are increasing for ever. > > This patch will convert them to unsigned long long. > > > Signed-off-by: Yi Yang <yi.y.yang@xxxxxxxxx> > --- > drivers/cpuidle/cpuidle.c | 2 +- > drivers/cpuidle/sysfs.c | 10 ++++++++-- > include/linux/cpuidle.h | 4 ++-- > > --- a/include/linux/cpuidle.h 2008-02-25 02:31:26.000000000 -0500 > +++ b/include/linux/cpuidle.h 2008-02-25 04:30:24.000000000 -0500 > @@ -38,8 +38,8 @@ struct cpuidle_state { > unsigned int power_usage; /* in mW */ > unsigned int target_residency; /* in US */ > > - unsigned int usage; > - unsigned int time; /* in US */ > + unsigned long long usage; > + unsigned long long time; /* in US */ > > int (*enter) (struct cpuidle_device *dev, > struct cpuidle_state *state); > --- a/drivers/cpuidle/cpuidle.c 2008-02-25 02:37:14.000000000 -0500 > +++ b/drivers/cpuidle/cpuidle.c 2008-02-25 04:29:19.000000000 -0500 > @@ -67,7 +67,7 @@ static void cpuidle_idle_call(void) > /* enter the state and update stats */ > dev->last_residency = target_state->enter(dev, target_state); > dev->last_state = target_state; > - target_state->time += dev->last_residency; > + target_state->time += (unsigned long long)dev->last_residency; > target_state->usage++; > > /* give the governor an opportunity to reflect on the outcome */ > --- a/drivers/cpuidle/sysfs.c 2008-02-25 02:33:14.000000000 -0500 > +++ b/drivers/cpuidle/sysfs.c 2008-02-25 03:10:50.000000000 -0500 > @@ -218,6 +218,12 @@ static ssize_t show_state_##_name(struct > return sprintf(buf, "%u\n", state->_name);\ > } > > +#define define_show_state_ull_function(_name) \ > +static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \ > +{ \ > + return sprintf(buf, "%llu\n", state->_name);\ > +} > + > #define define_show_state_str_function(_name) \ > static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \ > { \ > @@ -228,8 +234,8 @@ static ssize_t show_state_##_name(struct > > define_show_state_function(exit_latency) > define_show_state_function(power_usage) > -define_show_state_function(usage) > -define_show_state_function(time) > +define_show_state_ull_function(usage) > +define_show_state_ull_function(time) > define_show_state_str_function(name) > define_show_state_str_function(desc) > > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html