mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-02 17:26:42 +09:00
Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: hrtimers: fix warning in kernel/hrtimer.c x86: make sure we really have an hpet mapping before using it x86: enable HPET on Fujitsu u9200 linux/timex.h: cleanup for userspace posix-timers: simplify de_thread()->exit_itimers() path posix-timers: check ->it_signal instead of ->it_pid to validate the timer posix-timers: use "struct pid*" instead of "struct task_struct*" nohz: suppress needless timer reprogramming clocksource, acpi_pm.c: put acpi_pm_read_slow() under CONFIG_PCI nohz: no softirq pending warnings for offline cpus hrtimer: removing all ur callback modes, fix hrtimer: removing all ur callback modes, fix hotplug hrtimer: removing all ur callback modes x86: correct link to HPET timer specification rtc-cmos: export second NVRAM bank Fixed up conflicts in sound/drivers/pcsp/pcsp.c and sound/core/hrtimer.c manually.
This commit is contained in:
@@ -42,26 +42,6 @@ enum hrtimer_restart {
|
||||
HRTIMER_RESTART, /* Timer must be restarted */
|
||||
};
|
||||
|
||||
/*
|
||||
* hrtimer callback modes:
|
||||
*
|
||||
* HRTIMER_CB_SOFTIRQ: Callback must run in softirq context
|
||||
* HRTIMER_CB_IRQSAFE_PERCPU: Callback must run in hardirq context
|
||||
* Special mode for tick emulation and
|
||||
* scheduler timer. Such timers are per
|
||||
* cpu and not allowed to be migrated on
|
||||
* cpu unplug.
|
||||
* HRTIMER_CB_IRQSAFE_UNLOCKED: Callback should run in hardirq context
|
||||
* with timer->base lock unlocked
|
||||
* used for timers which call wakeup to
|
||||
* avoid lock order problems with rq->lock
|
||||
*/
|
||||
enum hrtimer_cb_mode {
|
||||
HRTIMER_CB_SOFTIRQ,
|
||||
HRTIMER_CB_IRQSAFE_PERCPU,
|
||||
HRTIMER_CB_IRQSAFE_UNLOCKED,
|
||||
};
|
||||
|
||||
/*
|
||||
* Values to track state of the timer
|
||||
*
|
||||
@@ -70,7 +50,6 @@ enum hrtimer_cb_mode {
|
||||
* 0x00 inactive
|
||||
* 0x01 enqueued into rbtree
|
||||
* 0x02 callback function running
|
||||
* 0x04 callback pending (high resolution mode)
|
||||
*
|
||||
* Special cases:
|
||||
* 0x03 callback function running and enqueued
|
||||
@@ -92,8 +71,7 @@ enum hrtimer_cb_mode {
|
||||
#define HRTIMER_STATE_INACTIVE 0x00
|
||||
#define HRTIMER_STATE_ENQUEUED 0x01
|
||||
#define HRTIMER_STATE_CALLBACK 0x02
|
||||
#define HRTIMER_STATE_PENDING 0x04
|
||||
#define HRTIMER_STATE_MIGRATE 0x08
|
||||
#define HRTIMER_STATE_MIGRATE 0x04
|
||||
|
||||
/**
|
||||
* struct hrtimer - the basic hrtimer structure
|
||||
@@ -109,8 +87,6 @@ enum hrtimer_cb_mode {
|
||||
* @function: timer expiry callback function
|
||||
* @base: pointer to the timer base (per cpu and per clock)
|
||||
* @state: state information (See bit values above)
|
||||
* @cb_mode: high resolution timer feature to select the callback execution
|
||||
* mode
|
||||
* @cb_entry: list head to enqueue an expired timer into the callback list
|
||||
* @start_site: timer statistics field to store the site where the timer
|
||||
* was started
|
||||
@@ -129,7 +105,6 @@ struct hrtimer {
|
||||
struct hrtimer_clock_base *base;
|
||||
unsigned long state;
|
||||
struct list_head cb_entry;
|
||||
enum hrtimer_cb_mode cb_mode;
|
||||
#ifdef CONFIG_TIMER_STATS
|
||||
int start_pid;
|
||||
void *start_site;
|
||||
@@ -188,15 +163,11 @@ struct hrtimer_clock_base {
|
||||
* @check_clocks: Indictator, when set evaluate time source and clock
|
||||
* event devices whether high resolution mode can be
|
||||
* activated.
|
||||
* @cb_pending: Expired timers are moved from the rbtree to this
|
||||
* list in the timer interrupt. The list is processed
|
||||
* in the softirq.
|
||||
* @nr_events: Total number of timer interrupt events
|
||||
*/
|
||||
struct hrtimer_cpu_base {
|
||||
spinlock_t lock;
|
||||
struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES];
|
||||
struct list_head cb_pending;
|
||||
#ifdef CONFIG_HIGH_RES_TIMERS
|
||||
ktime_t expires_next;
|
||||
int hres_active;
|
||||
@@ -404,8 +375,7 @@ static inline int hrtimer_active(const struct hrtimer *timer)
|
||||
*/
|
||||
static inline int hrtimer_is_queued(struct hrtimer *timer)
|
||||
{
|
||||
return timer->state &
|
||||
(HRTIMER_STATE_ENQUEUED | HRTIMER_STATE_PENDING);
|
||||
return timer->state & HRTIMER_STATE_ENQUEUED;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -251,9 +251,6 @@ enum
|
||||
BLOCK_SOFTIRQ,
|
||||
TASKLET_SOFTIRQ,
|
||||
SCHED_SOFTIRQ,
|
||||
#ifdef CONFIG_HIGH_RES_TIMERS
|
||||
HRTIMER_SOFTIRQ,
|
||||
#endif
|
||||
RCU_SOFTIRQ, /* Preferable RCU should always be the last softirq */
|
||||
|
||||
NR_SOFTIRQS
|
||||
|
||||
@@ -45,7 +45,11 @@ struct k_itimer {
|
||||
int it_requeue_pending; /* waiting to requeue this timer */
|
||||
#define REQUEUE_PENDING 1
|
||||
int it_sigev_notify; /* notify word of sigevent struct */
|
||||
struct task_struct *it_process; /* process to send signal to */
|
||||
struct signal_struct *it_signal;
|
||||
union {
|
||||
struct pid *it_pid; /* pid of process to send signal to */
|
||||
struct task_struct *it_process; /* for clock_nanosleep */
|
||||
};
|
||||
struct sigqueue *sigq; /* signal queue entry. */
|
||||
union {
|
||||
struct {
|
||||
|
||||
@@ -53,46 +53,10 @@
|
||||
#ifndef _LINUX_TIMEX_H
|
||||
#define _LINUX_TIMEX_H
|
||||
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/time.h>
|
||||
|
||||
#include <asm/param.h>
|
||||
|
||||
#define NTP_API 4 /* NTP API version */
|
||||
|
||||
/*
|
||||
* SHIFT_KG and SHIFT_KF establish the damping of the PLL and are chosen
|
||||
* for a slightly underdamped convergence characteristic. SHIFT_KH
|
||||
* establishes the damping of the FLL and is chosen by wisdom and black
|
||||
* art.
|
||||
*
|
||||
* MAXTC establishes the maximum time constant of the PLL. With the
|
||||
* SHIFT_KG and SHIFT_KF values given and a time constant range from
|
||||
* zero to MAXTC, the PLL will converge in 15 minutes to 16 hours,
|
||||
* respectively.
|
||||
*/
|
||||
#define SHIFT_PLL 4 /* PLL frequency factor (shift) */
|
||||
#define SHIFT_FLL 2 /* FLL frequency factor (shift) */
|
||||
#define MAXTC 10 /* maximum time constant (shift) */
|
||||
|
||||
/*
|
||||
* SHIFT_USEC defines the scaling (shift) of the time_freq and
|
||||
* time_tolerance variables, which represent the current frequency
|
||||
* offset and maximum frequency tolerance.
|
||||
*/
|
||||
#define SHIFT_USEC 16 /* frequency offset scale (shift) */
|
||||
#define PPM_SCALE (NSEC_PER_USEC << (NTP_SCALE_SHIFT - SHIFT_USEC))
|
||||
#define PPM_SCALE_INV_SHIFT 19
|
||||
#define PPM_SCALE_INV ((1ll << (PPM_SCALE_INV_SHIFT + NTP_SCALE_SHIFT)) / \
|
||||
PPM_SCALE + 1)
|
||||
|
||||
#define MAXPHASE 500000000l /* max phase error (ns) */
|
||||
#define MAXFREQ 500000 /* max frequency error (ns/s) */
|
||||
#define MAXFREQ_SCALED ((s64)MAXFREQ << NTP_SCALE_SHIFT)
|
||||
#define MINSEC 256 /* min interval between updates (s) */
|
||||
#define MAXSEC 2048 /* max interval between updates (s) */
|
||||
#define NTP_PHASE_LIMIT ((MAXPHASE / NSEC_PER_USEC) << 5) /* beyond max. dispersion */
|
||||
|
||||
/*
|
||||
* syscall interface - used (mainly by NTP daemon)
|
||||
* to discipline kernel clock oscillator
|
||||
@@ -199,8 +163,45 @@ struct timex {
|
||||
#define TIME_BAD TIME_ERROR /* bw compat */
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/param.h>
|
||||
|
||||
#include <asm/timex.h>
|
||||
|
||||
/*
|
||||
* SHIFT_KG and SHIFT_KF establish the damping of the PLL and are chosen
|
||||
* for a slightly underdamped convergence characteristic. SHIFT_KH
|
||||
* establishes the damping of the FLL and is chosen by wisdom and black
|
||||
* art.
|
||||
*
|
||||
* MAXTC establishes the maximum time constant of the PLL. With the
|
||||
* SHIFT_KG and SHIFT_KF values given and a time constant range from
|
||||
* zero to MAXTC, the PLL will converge in 15 minutes to 16 hours,
|
||||
* respectively.
|
||||
*/
|
||||
#define SHIFT_PLL 4 /* PLL frequency factor (shift) */
|
||||
#define SHIFT_FLL 2 /* FLL frequency factor (shift) */
|
||||
#define MAXTC 10 /* maximum time constant (shift) */
|
||||
|
||||
/*
|
||||
* SHIFT_USEC defines the scaling (shift) of the time_freq and
|
||||
* time_tolerance variables, which represent the current frequency
|
||||
* offset and maximum frequency tolerance.
|
||||
*/
|
||||
#define SHIFT_USEC 16 /* frequency offset scale (shift) */
|
||||
#define PPM_SCALE (NSEC_PER_USEC << (NTP_SCALE_SHIFT - SHIFT_USEC))
|
||||
#define PPM_SCALE_INV_SHIFT 19
|
||||
#define PPM_SCALE_INV ((1ll << (PPM_SCALE_INV_SHIFT + NTP_SCALE_SHIFT)) / \
|
||||
PPM_SCALE + 1)
|
||||
|
||||
#define MAXPHASE 500000000l /* max phase error (ns) */
|
||||
#define MAXFREQ 500000 /* max frequency error (ns/s) */
|
||||
#define MAXFREQ_SCALED ((s64)MAXFREQ << NTP_SCALE_SHIFT)
|
||||
#define MINSEC 256 /* min interval between updates (s) */
|
||||
#define MAXSEC 2048 /* max interval between updates (s) */
|
||||
#define NTP_PHASE_LIMIT ((MAXPHASE / NSEC_PER_USEC) << 5) /* beyond max. dispersion */
|
||||
|
||||
/*
|
||||
* kernel variables
|
||||
* Note: maximum error = NTP synch distance = dispersion + delay / 2;
|
||||
|
||||
Reference in New Issue
Block a user