diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-20 15:02:20 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-20 15:02:20 -0400 |
| commit | efa7e8673c78cc6de2d6c367eb6f50449c57ed90 (patch) | |
| tree | 2759535bd50e6d6cc4801a02106ee26f27aa610f /include/linux | |
| parent | 02d6112cd7d75bf30685ee4b2e9dc0291b4d3133 (diff) | |
| parent | bd807f9c5b90c236c3d173a5815d620bc1b1316d (diff) | |
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
[IA64] Prevent people from directly including <asm/rwsem.h>.
[IA64] remove time interpolator
[IA64] Convert to generic timekeeping/clocksource
[IA64] refresh some config files for 64K pagesize
[IA64] Delete iosapic_free_rte()
[IA64] fallocate system call
[IA64] Enable percpu vector domain for IA64_DIG
[IA64] Enable percpu vector domain for IA64_GENERIC
[IA64] Support irq migration across domain
[IA64] Add support for vector domain
[IA64] Add mapping table between irq and vector
[IA64] Check if irq is sharable
[IA64] Fix invalid irq vector assumption for iosapic
[IA64] Use dynamic irq for iosapic interrupts
[IA64] Use per iosapic lock for indirect iosapic register access
[IA64] Cleanup lock order in iosapic_register_intr
[IA64] Remove duplicated members in iosapic_rte_info
[IA64] Remove block structure for locking in iosapic.c
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/clocksource.h | 6 | ||||
| -rw-r--r-- | include/linux/timex.h | 60 |
2 files changed, 6 insertions, 60 deletions
diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h index bf297b03a4e4..16ea3374dddf 100644 --- a/include/linux/clocksource.h +++ b/include/linux/clocksource.h | |||
| @@ -67,6 +67,12 @@ struct clocksource { | |||
| 67 | unsigned long flags; | 67 | unsigned long flags; |
| 68 | cycle_t (*vread)(void); | 68 | cycle_t (*vread)(void); |
| 69 | void (*resume)(void); | 69 | void (*resume)(void); |
| 70 | #ifdef CONFIG_IA64 | ||
| 71 | void *fsys_mmio; /* used by fsyscall asm code */ | ||
| 72 | #define CLKSRC_FSYS_MMIO_SET(mmio, addr) ((mmio) = (addr)) | ||
| 73 | #else | ||
| 74 | #define CLKSRC_FSYS_MMIO_SET(mmio, addr) do { } while (0) | ||
| 75 | #endif | ||
| 70 | 76 | ||
| 71 | /* timekeeping specific data, ignore */ | 77 | /* timekeeping specific data, ignore */ |
| 72 | cycle_t cycle_interval; | 78 | cycle_t cycle_interval; |
diff --git a/include/linux/timex.h b/include/linux/timex.h index da929dbbea2a..37ac3ff90faf 100644 --- a/include/linux/timex.h +++ b/include/linux/timex.h | |||
| @@ -224,66 +224,6 @@ static inline int ntp_synced(void) | |||
| 224 | __x < 0 ? -(-__x >> __s) : __x >> __s; \ | 224 | __x < 0 ? -(-__x >> __s) : __x >> __s; \ |
| 225 | }) | 225 | }) |
| 226 | 226 | ||
| 227 | |||
| 228 | #ifdef CONFIG_TIME_INTERPOLATION | ||
| 229 | |||
| 230 | #define TIME_SOURCE_CPU 0 | ||
| 231 | #define TIME_SOURCE_MMIO64 1 | ||
| 232 | #define TIME_SOURCE_MMIO32 2 | ||
| 233 | #define TIME_SOURCE_FUNCTION 3 | ||
| 234 | |||
| 235 | /* For proper operations time_interpolator clocks must run slightly slower | ||
| 236 | * than the standard clock since the interpolator may only correct by having | ||
| 237 | * time jump forward during a tick. A slower clock is usually a side effect | ||
| 238 | * of the integer divide of the nanoseconds in a second by the frequency. | ||
| 239 | * The accuracy of the division can be increased by specifying a shift. | ||
| 240 | * However, this may cause the clock not to be slow enough. | ||
| 241 | * The interpolator will self-tune the clock by slowing down if no | ||
| 242 | * resets occur or speeding up if the time jumps per analysis cycle | ||
| 243 | * become too high. | ||
| 244 | * | ||
| 245 | * Setting jitter compensates for a fluctuating timesource by comparing | ||
| 246 | * to the last value read from the timesource to insure that an earlier value | ||
| 247 | * is not returned by a later call. The price to pay | ||
| 248 | * for the compensation is that the timer routines are not as scalable anymore. | ||
| 249 | */ | ||
| 250 | |||
| 251 | struct time_interpolator { | ||
| 252 | u16 source; /* time source flags */ | ||
| 253 | u8 shift; /* increases accuracy of multiply by shifting. */ | ||
| 254 | /* Note that bits may be lost if shift is set too high */ | ||
| 255 | u8 jitter; /* if set compensate for fluctuations */ | ||
| 256 | u32 nsec_per_cyc; /* set by register_time_interpolator() */ | ||
| 257 | void *addr; /* address of counter or function */ | ||
| 258 | cycles_t mask; /* mask the valid bits of the counter */ | ||
| 259 | unsigned long offset; /* nsec offset at last update of interpolator */ | ||
| 260 | u64 last_counter; /* counter value in units of the counter at last update */ | ||
| 261 | cycles_t last_cycle; /* Last timer value if TIME_SOURCE_JITTER is set */ | ||
| 262 | u64 frequency; /* frequency in counts/second */ | ||
| 263 | long drift; /* drift in parts-per-million (or -1) */ | ||
| 264 | unsigned long skips; /* skips forward */ | ||
| 265 | unsigned long ns_skipped; /* nanoseconds skipped */ | ||
| 266 | struct time_interpolator *next; | ||
| 267 | }; | ||
| 268 | |||
| 269 | extern void register_time_interpolator(struct time_interpolator *); | ||
| 270 | extern void unregister_time_interpolator(struct time_interpolator *); | ||
| 271 | extern void time_interpolator_reset(void); | ||
| 272 | extern unsigned long time_interpolator_get_offset(void); | ||
| 273 | extern void time_interpolator_update(long delta_nsec); | ||
| 274 | |||
| 275 | #else /* !CONFIG_TIME_INTERPOLATION */ | ||
| 276 | |||
| 277 | static inline void time_interpolator_reset(void) | ||
| 278 | { | ||
| 279 | } | ||
| 280 | |||
| 281 | static inline void time_interpolator_update(long delta_nsec) | ||
| 282 | { | ||
| 283 | } | ||
| 284 | |||
| 285 | #endif /* !CONFIG_TIME_INTERPOLATION */ | ||
| 286 | |||
| 287 | #define TICK_LENGTH_SHIFT 32 | 227 | #define TICK_LENGTH_SHIFT 32 |
| 288 | 228 | ||
| 289 | #ifdef CONFIG_NO_HZ | 229 | #ifdef CONFIG_NO_HZ |
