Merge branch 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: clocksource: Add clocksource_register_hz/khz interface posix-cpu-timers: Optimize run_posix_cpu_timers() time: Remove xtime_cache mqueue: Convert message queue timeout to use hrtimers hrtimers: Provide schedule_hrtimeout for CLOCK_REALTIME timers: Introduce the concept of timer slack for legacy timers ntp: Remove tickadj ntp: Make time_adjust static time: Add xtime, wall_to_monotonic to feature-removal-schedule timer: Try to survive timer callback preempt_count leak timer: Split out timer function call timer: Print function name for timer callbacks modifying preemption count time: Clean up warp_clock() cpu-timers: Avoid iterating over all threads in fastpath_timer_check() cpu-timers: Change SIGEV_NONE timer implementation cpu-timers: Return correct previous timer reload value cpu-timers: Cleanup arm_timer() cpu-timers: Simplify RLIMIT_CPU handling
This commit is contained in:
commit
164d44fd92
14 changed files with 389 additions and 356 deletions
|
|
@ -273,7 +273,6 @@ static inline s64 clocksource_cyc2ns(cycle_t cycles, u32 mult, u32 shift)
|
|||
}
|
||||
|
||||
|
||||
/* used to install a new clocksource */
|
||||
extern int clocksource_register(struct clocksource*);
|
||||
extern void clocksource_unregister(struct clocksource*);
|
||||
extern void clocksource_touch_watchdog(void);
|
||||
|
|
@ -287,6 +286,24 @@ extern void clocksource_mark_unstable(struct clocksource *cs);
|
|||
extern void
|
||||
clocks_calc_mult_shift(u32 *mult, u32 *shift, u32 from, u32 to, u32 minsec);
|
||||
|
||||
/*
|
||||
* Don't call __clocksource_register_scale directly, use
|
||||
* clocksource_register_hz/khz
|
||||
*/
|
||||
extern int
|
||||
__clocksource_register_scale(struct clocksource *cs, u32 scale, u32 freq);
|
||||
|
||||
static inline int clocksource_register_hz(struct clocksource *cs, u32 hz)
|
||||
{
|
||||
return __clocksource_register_scale(cs, 1, hz);
|
||||
}
|
||||
|
||||
static inline int clocksource_register_khz(struct clocksource *cs, u32 khz)
|
||||
{
|
||||
return __clocksource_register_scale(cs, 1000, khz);
|
||||
}
|
||||
|
||||
|
||||
static inline void
|
||||
clocksource_calc_mult_shift(struct clocksource *cs, u32 freq, u32 minsec)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -422,6 +422,8 @@ extern void hrtimer_init_sleeper(struct hrtimer_sleeper *sl,
|
|||
|
||||
extern int schedule_hrtimeout_range(ktime_t *expires, unsigned long delta,
|
||||
const enum hrtimer_mode mode);
|
||||
extern int schedule_hrtimeout_range_clock(ktime_t *expires,
|
||||
unsigned long delta, const enum hrtimer_mode mode, int clock);
|
||||
extern int schedule_hrtimeout(ktime_t *expires, const enum hrtimer_mode mode);
|
||||
|
||||
/* Soft interrupt function to run the hrtimer queues: */
|
||||
|
|
|
|||
|
|
@ -150,7 +150,6 @@ extern struct timespec timespec_trunc(struct timespec t, unsigned gran);
|
|||
extern int timekeeping_valid_for_hres(void);
|
||||
extern u64 timekeeping_max_deferment(void);
|
||||
extern void update_wall_time(void);
|
||||
extern void update_xtime_cache(u64 nsec);
|
||||
extern void timekeeping_leap_insert(int leapsecond);
|
||||
|
||||
struct tms;
|
||||
|
|
|
|||
|
|
@ -10,13 +10,19 @@
|
|||
struct tvec_base;
|
||||
|
||||
struct timer_list {
|
||||
/*
|
||||
* All fields that change during normal runtime grouped to the
|
||||
* same cacheline
|
||||
*/
|
||||
struct list_head entry;
|
||||
unsigned long expires;
|
||||
struct tvec_base *base;
|
||||
|
||||
void (*function)(unsigned long);
|
||||
unsigned long data;
|
||||
|
||||
struct tvec_base *base;
|
||||
int slack;
|
||||
|
||||
#ifdef CONFIG_TIMER_STATS
|
||||
void *start_site;
|
||||
char start_comm[16];
|
||||
|
|
@ -165,6 +171,8 @@ extern int mod_timer(struct timer_list *timer, unsigned long expires);
|
|||
extern int mod_timer_pending(struct timer_list *timer, unsigned long expires);
|
||||
extern int mod_timer_pinned(struct timer_list *timer, unsigned long expires);
|
||||
|
||||
extern void set_timer_slack(struct timer_list *time, int slack_hz);
|
||||
|
||||
#define TIMER_NOT_PINNED 0
|
||||
#define TIMER_PINNED 1
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -232,13 +232,11 @@ struct timex {
|
|||
*/
|
||||
extern unsigned long tick_usec; /* USER_HZ period (usec) */
|
||||
extern unsigned long tick_nsec; /* ACTHZ period (nsec) */
|
||||
extern int tickadj; /* amount of adjustment per tick */
|
||||
|
||||
/*
|
||||
* phase-lock loop variables
|
||||
*/
|
||||
extern int time_status; /* clock synchronization status bits */
|
||||
extern long time_adjust; /* The amount of adjtime left */
|
||||
|
||||
extern void ntp_init(void);
|
||||
extern void ntp_clear(void);
|
||||
|
|
@ -271,9 +269,6 @@ extern void second_overflow(void);
|
|||
extern void update_ntp_one_tick(void);
|
||||
extern int do_adjtimex(struct timex *);
|
||||
|
||||
/* Don't use! Compatibility define for existing users. */
|
||||
#define tickadj (500/HZ ? : 1)
|
||||
|
||||
int read_current_timer(unsigned long *timer_val);
|
||||
|
||||
/* The clock frequency of the i8253/i8254 PIT */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue