mirror of
https://github.com/torvalds/linux.git
synced 2024-11-29 07:31:29 +00:00
[PATCH] hrtimers: namespace and enum cleanup
- hrtimers did not use the hrtimer_restart enum and relied on the implict int representation. Fix the prototypes and the functions using the enums. - Use seperate name spaces for the enumerations - Convert hrtimer_restart macro to inline function - Add comments No functional changes. [akpm@osdl.org: fix input driver] 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> Cc: Dmitry Torokhov <dtor@mail.ru> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
fd064b9b77
commit
c9cb2e3d7c
@ -546,7 +546,7 @@ static void ads7846_rx(void *ads)
|
|||||||
ts->spi->dev.bus_id, ts->tc.ignore, Rt);
|
ts->spi->dev.bus_id, ts->tc.ignore, Rt);
|
||||||
#endif
|
#endif
|
||||||
hrtimer_start(&ts->timer, ktime_set(0, TS_POLL_PERIOD),
|
hrtimer_start(&ts->timer, ktime_set(0, TS_POLL_PERIOD),
|
||||||
HRTIMER_REL);
|
HRTIMER_MODE_REL);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -578,7 +578,8 @@ static void ads7846_rx(void *ads)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
hrtimer_start(&ts->timer, ktime_set(0, TS_POLL_PERIOD), HRTIMER_REL);
|
hrtimer_start(&ts->timer, ktime_set(0, TS_POLL_PERIOD),
|
||||||
|
HRTIMER_MODE_REL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ads7846_debounce(void *ads, int data_idx, int *val)
|
static int ads7846_debounce(void *ads, int data_idx, int *val)
|
||||||
@ -667,7 +668,7 @@ static void ads7846_rx_val(void *ads)
|
|||||||
status);
|
status);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ads7846_timer(struct hrtimer *handle)
|
static enum hrtimer_restart ads7846_timer(struct hrtimer *handle)
|
||||||
{
|
{
|
||||||
struct ads7846 *ts = container_of(handle, struct ads7846, timer);
|
struct ads7846 *ts = container_of(handle, struct ads7846, timer);
|
||||||
int status = 0;
|
int status = 0;
|
||||||
@ -724,7 +725,7 @@ static irqreturn_t ads7846_irq(int irq, void *handle)
|
|||||||
disable_irq(ts->spi->irq);
|
disable_irq(ts->spi->irq);
|
||||||
ts->pending = 1;
|
ts->pending = 1;
|
||||||
hrtimer_start(&ts->timer, ktime_set(0, TS_POLL_DELAY),
|
hrtimer_start(&ts->timer, ktime_set(0, TS_POLL_DELAY),
|
||||||
HRTIMER_REL);
|
HRTIMER_MODE_REL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
spin_unlock_irqrestore(&ts->lock, flags);
|
spin_unlock_irqrestore(&ts->lock, flags);
|
||||||
@ -862,7 +863,7 @@ static int __devinit ads7846_probe(struct spi_device *spi)
|
|||||||
ts->spi = spi;
|
ts->spi = spi;
|
||||||
ts->input = input_dev;
|
ts->input = input_dev;
|
||||||
|
|
||||||
hrtimer_init(&ts->timer, CLOCK_MONOTONIC, HRTIMER_REL);
|
hrtimer_init(&ts->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
|
||||||
ts->timer.function = ads7846_timer;
|
ts->timer.function = ads7846_timer;
|
||||||
|
|
||||||
spin_lock_init(&ts->lock);
|
spin_lock_init(&ts->lock);
|
||||||
|
@ -25,17 +25,18 @@
|
|||||||
* Mode arguments of xxx_hrtimer functions:
|
* Mode arguments of xxx_hrtimer functions:
|
||||||
*/
|
*/
|
||||||
enum hrtimer_mode {
|
enum hrtimer_mode {
|
||||||
HRTIMER_ABS, /* Time value is absolute */
|
HRTIMER_MODE_ABS, /* Time value is absolute */
|
||||||
HRTIMER_REL, /* Time value is relative to now */
|
HRTIMER_MODE_REL, /* Time value is relative to now */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return values for the callback function
|
||||||
|
*/
|
||||||
enum hrtimer_restart {
|
enum hrtimer_restart {
|
||||||
HRTIMER_NORESTART,
|
HRTIMER_NORESTART, /* Timer is not restarted */
|
||||||
HRTIMER_RESTART,
|
HRTIMER_RESTART, /* Timer must be restarted */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define HRTIMER_INACTIVE ((void *)1UL)
|
|
||||||
|
|
||||||
struct hrtimer_base;
|
struct hrtimer_base;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -52,7 +53,7 @@ struct hrtimer_base;
|
|||||||
struct hrtimer {
|
struct hrtimer {
|
||||||
struct rb_node node;
|
struct rb_node node;
|
||||||
ktime_t expires;
|
ktime_t expires;
|
||||||
int (*function)(struct hrtimer *);
|
enum hrtimer_restart (*function)(struct hrtimer *);
|
||||||
struct hrtimer_base *base;
|
struct hrtimer_base *base;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -114,7 +115,10 @@ extern int hrtimer_start(struct hrtimer *timer, ktime_t tim,
|
|||||||
extern int hrtimer_cancel(struct hrtimer *timer);
|
extern int hrtimer_cancel(struct hrtimer *timer);
|
||||||
extern int hrtimer_try_to_cancel(struct hrtimer *timer);
|
extern int hrtimer_try_to_cancel(struct hrtimer *timer);
|
||||||
|
|
||||||
#define hrtimer_restart(timer) hrtimer_start((timer), (timer)->expires, HRTIMER_ABS)
|
static inline int hrtimer_restart(struct hrtimer *timer)
|
||||||
|
{
|
||||||
|
return hrtimer_start(timer, timer->expires, HRTIMER_MODE_ABS);
|
||||||
|
}
|
||||||
|
|
||||||
/* Query timers: */
|
/* Query timers: */
|
||||||
extern ktime_t hrtimer_get_remaining(const struct hrtimer *timer);
|
extern ktime_t hrtimer_get_remaining(const struct hrtimer *timer);
|
||||||
|
@ -106,7 +106,7 @@ static inline void add_timer(struct timer_list *timer)
|
|||||||
extern void init_timers(void);
|
extern void init_timers(void);
|
||||||
extern void run_local_timers(void);
|
extern void run_local_timers(void);
|
||||||
struct hrtimer;
|
struct hrtimer;
|
||||||
extern int it_real_fn(struct hrtimer *);
|
extern enum hrtimer_restart it_real_fn(struct hrtimer *);
|
||||||
|
|
||||||
unsigned long __round_jiffies(unsigned long j, int cpu);
|
unsigned long __round_jiffies(unsigned long j, int cpu);
|
||||||
unsigned long __round_jiffies_relative(unsigned long j, int cpu);
|
unsigned long __round_jiffies_relative(unsigned long j, int cpu);
|
||||||
|
@ -858,7 +858,7 @@ static inline int copy_signal(unsigned long clone_flags, struct task_struct * ts
|
|||||||
init_sigpending(&sig->shared_pending);
|
init_sigpending(&sig->shared_pending);
|
||||||
INIT_LIST_HEAD(&sig->posix_timers);
|
INIT_LIST_HEAD(&sig->posix_timers);
|
||||||
|
|
||||||
hrtimer_init(&sig->real_timer, CLOCK_MONOTONIC, HRTIMER_REL);
|
hrtimer_init(&sig->real_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
|
||||||
sig->it_real_incr.tv64 = 0;
|
sig->it_real_incr.tv64 = 0;
|
||||||
sig->real_timer.function = it_real_fn;
|
sig->real_timer.function = it_real_fn;
|
||||||
sig->tsk = tsk;
|
sig->tsk = tsk;
|
||||||
|
@ -1134,7 +1134,7 @@ static int futex_lock_pi(u32 __user *uaddr, int detect, unsigned long sec,
|
|||||||
|
|
||||||
if (sec != MAX_SCHEDULE_TIMEOUT) {
|
if (sec != MAX_SCHEDULE_TIMEOUT) {
|
||||||
to = &timeout;
|
to = &timeout;
|
||||||
hrtimer_init(&to->timer, CLOCK_REALTIME, HRTIMER_ABS);
|
hrtimer_init(&to->timer, CLOCK_REALTIME, HRTIMER_MODE_ABS);
|
||||||
hrtimer_init_sleeper(to, current);
|
hrtimer_init_sleeper(to, current);
|
||||||
to->timer.expires = ktime_set(sec, nsec);
|
to->timer.expires = ktime_set(sec, nsec);
|
||||||
}
|
}
|
||||||
|
@ -444,7 +444,7 @@ hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode)
|
|||||||
/* Switch the timer base, if necessary: */
|
/* Switch the timer base, if necessary: */
|
||||||
new_base = switch_hrtimer_base(timer, base);
|
new_base = switch_hrtimer_base(timer, base);
|
||||||
|
|
||||||
if (mode == HRTIMER_REL) {
|
if (mode == HRTIMER_MODE_REL) {
|
||||||
tim = ktime_add(tim, new_base->get_time());
|
tim = ktime_add(tim, new_base->get_time());
|
||||||
/*
|
/*
|
||||||
* CONFIG_TIME_LOW_RES is a temporary way for architectures
|
* CONFIG_TIME_LOW_RES is a temporary way for architectures
|
||||||
@ -583,7 +583,7 @@ void hrtimer_init(struct hrtimer *timer, clockid_t clock_id,
|
|||||||
|
|
||||||
bases = __raw_get_cpu_var(hrtimer_bases);
|
bases = __raw_get_cpu_var(hrtimer_bases);
|
||||||
|
|
||||||
if (clock_id == CLOCK_REALTIME && mode != HRTIMER_ABS)
|
if (clock_id == CLOCK_REALTIME && mode != HRTIMER_MODE_ABS)
|
||||||
clock_id = CLOCK_MONOTONIC;
|
clock_id = CLOCK_MONOTONIC;
|
||||||
|
|
||||||
timer->base = &bases[clock_id];
|
timer->base = &bases[clock_id];
|
||||||
@ -627,7 +627,7 @@ static inline void run_hrtimer_queue(struct hrtimer_base *base)
|
|||||||
|
|
||||||
while ((node = base->first)) {
|
while ((node = base->first)) {
|
||||||
struct hrtimer *timer;
|
struct hrtimer *timer;
|
||||||
int (*fn)(struct hrtimer *);
|
enum hrtimer_restart (*fn)(struct hrtimer *);
|
||||||
int restart;
|
int restart;
|
||||||
|
|
||||||
timer = rb_entry(node, struct hrtimer, node);
|
timer = rb_entry(node, struct hrtimer, node);
|
||||||
@ -669,7 +669,7 @@ void hrtimer_run_queues(void)
|
|||||||
/*
|
/*
|
||||||
* Sleep related functions:
|
* Sleep related functions:
|
||||||
*/
|
*/
|
||||||
static int hrtimer_wakeup(struct hrtimer *timer)
|
static enum hrtimer_restart hrtimer_wakeup(struct hrtimer *timer)
|
||||||
{
|
{
|
||||||
struct hrtimer_sleeper *t =
|
struct hrtimer_sleeper *t =
|
||||||
container_of(timer, struct hrtimer_sleeper, timer);
|
container_of(timer, struct hrtimer_sleeper, timer);
|
||||||
@ -699,7 +699,7 @@ static int __sched do_nanosleep(struct hrtimer_sleeper *t, enum hrtimer_mode mod
|
|||||||
schedule();
|
schedule();
|
||||||
|
|
||||||
hrtimer_cancel(&t->timer);
|
hrtimer_cancel(&t->timer);
|
||||||
mode = HRTIMER_ABS;
|
mode = HRTIMER_MODE_ABS;
|
||||||
|
|
||||||
} while (t->task && !signal_pending(current));
|
} while (t->task && !signal_pending(current));
|
||||||
|
|
||||||
@ -715,10 +715,10 @@ long __sched hrtimer_nanosleep_restart(struct restart_block *restart)
|
|||||||
|
|
||||||
restart->fn = do_no_restart_syscall;
|
restart->fn = do_no_restart_syscall;
|
||||||
|
|
||||||
hrtimer_init(&t.timer, restart->arg0, HRTIMER_ABS);
|
hrtimer_init(&t.timer, restart->arg0, HRTIMER_MODE_ABS);
|
||||||
t.timer.expires.tv64 = ((u64)restart->arg3 << 32) | (u64) restart->arg2;
|
t.timer.expires.tv64 = ((u64)restart->arg3 << 32) | (u64) restart->arg2;
|
||||||
|
|
||||||
if (do_nanosleep(&t, HRTIMER_ABS))
|
if (do_nanosleep(&t, HRTIMER_MODE_ABS))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
rmtp = (struct timespec __user *) restart->arg1;
|
rmtp = (struct timespec __user *) restart->arg1;
|
||||||
@ -751,7 +751,7 @@ long hrtimer_nanosleep(struct timespec *rqtp, struct timespec __user *rmtp,
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Absolute timers do not update the rmtp value and restart: */
|
/* Absolute timers do not update the rmtp value and restart: */
|
||||||
if (mode == HRTIMER_ABS)
|
if (mode == HRTIMER_MODE_ABS)
|
||||||
return -ERESTARTNOHAND;
|
return -ERESTARTNOHAND;
|
||||||
|
|
||||||
if (rmtp) {
|
if (rmtp) {
|
||||||
@ -784,7 +784,7 @@ sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp)
|
|||||||
if (!timespec_valid(&tu))
|
if (!timespec_valid(&tu))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
return hrtimer_nanosleep(&tu, rmtp, HRTIMER_REL, CLOCK_MONOTONIC);
|
return hrtimer_nanosleep(&tu, rmtp, HRTIMER_MODE_REL, CLOCK_MONOTONIC);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -128,7 +128,7 @@ asmlinkage long sys_getitimer(int which, struct itimerval __user *value)
|
|||||||
/*
|
/*
|
||||||
* The timer is automagically restarted, when interval != 0
|
* The timer is automagically restarted, when interval != 0
|
||||||
*/
|
*/
|
||||||
int it_real_fn(struct hrtimer *timer)
|
enum hrtimer_restart it_real_fn(struct hrtimer *timer)
|
||||||
{
|
{
|
||||||
struct signal_struct *sig =
|
struct signal_struct *sig =
|
||||||
container_of(timer, struct signal_struct, real_timer);
|
container_of(timer, struct signal_struct, real_timer);
|
||||||
@ -235,7 +235,7 @@ again:
|
|||||||
timeval_to_ktime(value->it_interval);
|
timeval_to_ktime(value->it_interval);
|
||||||
expires = timeval_to_ktime(value->it_value);
|
expires = timeval_to_ktime(value->it_value);
|
||||||
if (expires.tv64 != 0)
|
if (expires.tv64 != 0)
|
||||||
hrtimer_start(timer, expires, HRTIMER_REL);
|
hrtimer_start(timer, expires, HRTIMER_MODE_REL);
|
||||||
spin_unlock_irq(&tsk->sighand->siglock);
|
spin_unlock_irq(&tsk->sighand->siglock);
|
||||||
break;
|
break;
|
||||||
case ITIMER_VIRTUAL:
|
case ITIMER_VIRTUAL:
|
||||||
|
@ -145,7 +145,7 @@ static int common_timer_set(struct k_itimer *, int,
|
|||||||
struct itimerspec *, struct itimerspec *);
|
struct itimerspec *, struct itimerspec *);
|
||||||
static int common_timer_del(struct k_itimer *timer);
|
static int common_timer_del(struct k_itimer *timer);
|
||||||
|
|
||||||
static int posix_timer_fn(struct hrtimer *data);
|
static enum hrtimer_restart posix_timer_fn(struct hrtimer *data);
|
||||||
|
|
||||||
static struct k_itimer *lock_timer(timer_t timer_id, unsigned long *flags);
|
static struct k_itimer *lock_timer(timer_t timer_id, unsigned long *flags);
|
||||||
|
|
||||||
@ -334,12 +334,12 @@ EXPORT_SYMBOL_GPL(posix_timer_event);
|
|||||||
|
|
||||||
* This code is for CLOCK_REALTIME* and CLOCK_MONOTONIC* timers.
|
* This code is for CLOCK_REALTIME* and CLOCK_MONOTONIC* timers.
|
||||||
*/
|
*/
|
||||||
static int posix_timer_fn(struct hrtimer *timer)
|
static enum hrtimer_restart posix_timer_fn(struct hrtimer *timer)
|
||||||
{
|
{
|
||||||
struct k_itimer *timr;
|
struct k_itimer *timr;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int si_private = 0;
|
int si_private = 0;
|
||||||
int ret = HRTIMER_NORESTART;
|
enum hrtimer_restart ret = HRTIMER_NORESTART;
|
||||||
|
|
||||||
timr = container_of(timer, struct k_itimer, it.real.timer);
|
timr = container_of(timer, struct k_itimer, it.real.timer);
|
||||||
spin_lock_irqsave(&timr->it_lock, flags);
|
spin_lock_irqsave(&timr->it_lock, flags);
|
||||||
@ -722,7 +722,7 @@ common_timer_set(struct k_itimer *timr, int flags,
|
|||||||
if (!new_setting->it_value.tv_sec && !new_setting->it_value.tv_nsec)
|
if (!new_setting->it_value.tv_sec && !new_setting->it_value.tv_nsec)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
mode = flags & TIMER_ABSTIME ? HRTIMER_ABS : HRTIMER_REL;
|
mode = flags & TIMER_ABSTIME ? HRTIMER_MODE_ABS : HRTIMER_MODE_REL;
|
||||||
hrtimer_init(&timr->it.real.timer, timr->it_clock, mode);
|
hrtimer_init(&timr->it.real.timer, timr->it_clock, mode);
|
||||||
timr->it.real.timer.function = posix_timer_fn;
|
timr->it.real.timer.function = posix_timer_fn;
|
||||||
|
|
||||||
@ -734,7 +734,7 @@ common_timer_set(struct k_itimer *timr, int flags,
|
|||||||
/* SIGEV_NONE timers are not queued ! See common_timer_get */
|
/* SIGEV_NONE timers are not queued ! See common_timer_get */
|
||||||
if (((timr->it_sigev_notify & ~SIGEV_THREAD_ID) == SIGEV_NONE)) {
|
if (((timr->it_sigev_notify & ~SIGEV_THREAD_ID) == SIGEV_NONE)) {
|
||||||
/* Setup correct expiry time for relative timers */
|
/* Setup correct expiry time for relative timers */
|
||||||
if (mode == HRTIMER_REL)
|
if (mode == HRTIMER_MODE_REL)
|
||||||
timer->expires = ktime_add(timer->expires,
|
timer->expires = ktime_add(timer->expires,
|
||||||
timer->base->get_time());
|
timer->base->get_time());
|
||||||
return 0;
|
return 0;
|
||||||
@ -950,7 +950,8 @@ static int common_nsleep(const clockid_t which_clock, int flags,
|
|||||||
struct timespec *tsave, struct timespec __user *rmtp)
|
struct timespec *tsave, struct timespec __user *rmtp)
|
||||||
{
|
{
|
||||||
return hrtimer_nanosleep(tsave, rmtp, flags & TIMER_ABSTIME ?
|
return hrtimer_nanosleep(tsave, rmtp, flags & TIMER_ABSTIME ?
|
||||||
HRTIMER_ABS : HRTIMER_REL, which_clock);
|
HRTIMER_MODE_ABS : HRTIMER_MODE_REL,
|
||||||
|
which_clock);
|
||||||
}
|
}
|
||||||
|
|
||||||
asmlinkage long
|
asmlinkage long
|
||||||
|
@ -625,7 +625,7 @@ rt_mutex_slowlock(struct rt_mutex *lock, int state,
|
|||||||
/* Setup the timer, when timeout != NULL */
|
/* Setup the timer, when timeout != NULL */
|
||||||
if (unlikely(timeout))
|
if (unlikely(timeout))
|
||||||
hrtimer_start(&timeout->timer, timeout->timer.expires,
|
hrtimer_start(&timeout->timer, timeout->timer.expires,
|
||||||
HRTIMER_ABS);
|
HRTIMER_MODE_ABS);
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
/* Try to acquire the lock: */
|
/* Try to acquire the lock: */
|
||||||
|
Loading…
Reference in New Issue
Block a user