UBUNTU: Ubuntu-2.6.38-12.51
[linux-flexiantxendom0-natty.git] / kernel / timer.c
1 /*
2  *  linux/kernel/timer.c
3  *
4  *  Kernel internal timers, basic process system calls
5  *
6  *  Copyright (C) 1991, 1992  Linus Torvalds
7  *
8  *  1997-01-28  Modified by Finn Arne Gangstad to make timers scale better.
9  *
10  *  1997-09-10  Updated NTP code according to technical memorandum Jan '96
11  *              "A Kernel Model for Precision Timekeeping" by Dave Mills
12  *  1998-12-24  Fixed a xtime SMP race (we need the xtime_lock rw spinlock to
13  *              serialize accesses to xtime/lost_ticks).
14  *                              Copyright (C) 1998  Andrea Arcangeli
15  *  1999-03-10  Improved NTP compatibility by Ulrich Windl
16  *  2002-05-31  Move sys_sysinfo here and make its locking sane, Robert Love
17  *  2000-10-05  Implemented scalable SMP per-CPU timer handling.
18  *                              Copyright (C) 2000, 2001, 2002  Ingo Molnar
19  *              Designed by David S. Miller, Alexey Kuznetsov and Ingo Molnar
20  */
21
22 #include <linux/kernel_stat.h>
23 #include <linux/module.h>
24 #include <linux/interrupt.h>
25 #include <linux/percpu.h>
26 #include <linux/init.h>
27 #include <linux/mm.h>
28 #include <linux/swap.h>
29 #include <linux/pid_namespace.h>
30 #include <linux/notifier.h>
31 #include <linux/thread_info.h>
32 #include <linux/time.h>
33 #include <linux/jiffies.h>
34 #include <linux/posix-timers.h>
35 #include <linux/cpu.h>
36 #include <linux/syscalls.h>
37 #include <linux/delay.h>
38 #include <linux/tick.h>
39 #include <linux/kallsyms.h>
40 #include <linux/irq_work.h>
41 #include <linux/sched.h>
42 #include <linux/slab.h>
43
44 #include <asm/byteorder.h>
45 #include <asm/uaccess.h>
46 #include <asm/unistd.h>
47 #include <asm/div64.h>
48 #include <asm/timex.h>
49 #include <asm/io.h>
50
51 #define CREATE_TRACE_POINTS
52 #include <trace/events/timer.h>
53
54 u64 jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES;
55
56 EXPORT_SYMBOL(jiffies_64);
57
58 #ifdef CONFIG_X86
59 #if defined(__LITTLE_ENDIAN) || (BITS_PER_LONG >= 64)
60 asm(".global jiffies; jiffies = jiffies_64");
61 #else
62 asm(".global jiffies; jiffies = jiffies_64 + 4");
63 #endif
64 #endif
65
66 /*
67  * per-CPU timer vector definitions:
68  */
69 #define TVN_BITS (CONFIG_BASE_SMALL ? 4 : 6)
70 #define TVR_BITS (CONFIG_BASE_SMALL ? 6 : 8)
71 #define TVN_SIZE (1 << TVN_BITS)
72 #define TVR_SIZE (1 << TVR_BITS)
73 #define TVN_MASK (TVN_SIZE - 1)
74 #define TVR_MASK (TVR_SIZE - 1)
75
76 struct tvec {
77         struct list_head vec[TVN_SIZE];
78 };
79
80 struct tvec_root {
81         struct list_head vec[TVR_SIZE];
82 };
83
84 struct tvec_base {
85         spinlock_t lock;
86         struct timer_list *running_timer;
87         unsigned long timer_jiffies;
88         unsigned long next_timer;
89         struct tvec_root tv1;
90         struct tvec tv2;
91         struct tvec tv3;
92         struct tvec tv4;
93         struct tvec tv5;
94 } ____cacheline_aligned;
95
96 struct tvec_base boot_tvec_bases;
97 EXPORT_SYMBOL(boot_tvec_bases);
98 static DEFINE_PER_CPU(struct tvec_base *, tvec_bases) = &boot_tvec_bases;
99
100 /* Functions below help us manage 'deferrable' flag */
101 static inline unsigned int tbase_get_deferrable(struct tvec_base *base)
102 {
103         return ((unsigned int)(unsigned long)base & TBASE_DEFERRABLE_FLAG);
104 }
105
106 static inline struct tvec_base *tbase_get_base(struct tvec_base *base)
107 {
108         return ((struct tvec_base *)((unsigned long)base & ~TBASE_DEFERRABLE_FLAG));
109 }
110
111 static inline void timer_set_deferrable(struct timer_list *timer)
112 {
113         timer->base = TBASE_MAKE_DEFERRED(timer->base);
114 }
115
116 static inline void
117 timer_set_base(struct timer_list *timer, struct tvec_base *new_base)
118 {
119         timer->base = (struct tvec_base *)((unsigned long)(new_base) |
120                                       tbase_get_deferrable(timer->base));
121 }
122
123 static unsigned long round_jiffies_common(unsigned long j, int cpu,
124                 bool force_up)
125 {
126         int rem;
127         unsigned long original = j;
128
129         /*
130          * We don't want all cpus firing their timers at once hitting the
131          * same lock or cachelines, so we skew each extra cpu with an extra
132          * 3 jiffies. This 3 jiffies came originally from the mm/ code which
133          * already did this.
134          * The skew is done by adding 3*cpunr, then round, then subtract this
135          * extra offset again.
136          */
137         j += cpu * 3;
138
139         rem = j % HZ;
140
141         /*
142          * If the target jiffie is just after a whole second (which can happen
143          * due to delays of the timer irq, long irq off times etc etc) then
144          * we should round down to the whole second, not up. Use 1/4th second
145          * as cutoff for this rounding as an extreme upper bound for this.
146          * But never round down if @force_up is set.
147          */
148         if (rem < HZ/4 && !force_up) /* round down */
149                 j = j - rem;
150         else /* round up */
151                 j = j - rem + HZ;
152
153         /* now that we have rounded, subtract the extra skew again */
154         j -= cpu * 3;
155
156         if (j <= jiffies) /* rounding ate our timeout entirely; */
157                 return original;
158         return j;
159 }
160
161 /**
162  * __round_jiffies - function to round jiffies to a full second
163  * @j: the time in (absolute) jiffies that should be rounded
164  * @cpu: the processor number on which the timeout will happen
165  *
166  * __round_jiffies() rounds an absolute time in the future (in jiffies)
167  * up or down to (approximately) full seconds. This is useful for timers
168  * for which the exact time they fire does not matter too much, as long as
169  * they fire approximately every X seconds.
170  *
171  * By rounding these timers to whole seconds, all such timers will fire
172  * at the same time, rather than at various times spread out. The goal
173  * of this is to have the CPU wake up less, which saves power.
174  *
175  * The exact rounding is skewed for each processor to avoid all
176  * processors firing at the exact same time, which could lead
177  * to lock contention or spurious cache line bouncing.
178  *
179  * The return value is the rounded version of the @j parameter.
180  */
181 unsigned long __round_jiffies(unsigned long j, int cpu)
182 {
183         return round_jiffies_common(j, cpu, false);
184 }
185 EXPORT_SYMBOL_GPL(__round_jiffies);
186
187 /**
188  * __round_jiffies_relative - function to round jiffies to a full second
189  * @j: the time in (relative) jiffies that should be rounded
190  * @cpu: the processor number on which the timeout will happen
191  *
192  * __round_jiffies_relative() rounds a time delta  in the future (in jiffies)
193  * up or down to (approximately) full seconds. This is useful for timers
194  * for which the exact time they fire does not matter too much, as long as
195  * they fire approximately every X seconds.
196  *
197  * By rounding these timers to whole seconds, all such timers will fire
198  * at the same time, rather than at various times spread out. The goal
199  * of this is to have the CPU wake up less, which saves power.
200  *
201  * The exact rounding is skewed for each processor to avoid all
202  * processors firing at the exact same time, which could lead
203  * to lock contention or spurious cache line bouncing.
204  *
205  * The return value is the rounded version of the @j parameter.
206  */
207 unsigned long __round_jiffies_relative(unsigned long j, int cpu)
208 {
209         unsigned long j0 = jiffies;
210
211         /* Use j0 because jiffies might change while we run */
212         return round_jiffies_common(j + j0, cpu, false) - j0;
213 }
214 EXPORT_SYMBOL_GPL(__round_jiffies_relative);
215
216 /**
217  * round_jiffies - function to round jiffies to a full second
218  * @j: the time in (absolute) jiffies that should be rounded
219  *
220  * round_jiffies() rounds an absolute time in the future (in jiffies)
221  * up or down to (approximately) full seconds. This is useful for timers
222  * for which the exact time they fire does not matter too much, as long as
223  * they fire approximately every X seconds.
224  *
225  * By rounding these timers to whole seconds, all such timers will fire
226  * at the same time, rather than at various times spread out. The goal
227  * of this is to have the CPU wake up less, which saves power.
228  *
229  * The return value is the rounded version of the @j parameter.
230  */
231 unsigned long round_jiffies(unsigned long j)
232 {
233         return round_jiffies_common(j, raw_smp_processor_id(), false);
234 }
235 EXPORT_SYMBOL_GPL(round_jiffies);
236
237 /**
238  * round_jiffies_relative - function to round jiffies to a full second
239  * @j: the time in (relative) jiffies that should be rounded
240  *
241  * round_jiffies_relative() rounds a time delta  in the future (in jiffies)
242  * up or down to (approximately) full seconds. This is useful for timers
243  * for which the exact time they fire does not matter too much, as long as
244  * they fire approximately every X seconds.
245  *
246  * By rounding these timers to whole seconds, all such timers will fire
247  * at the same time, rather than at various times spread out. The goal
248  * of this is to have the CPU wake up less, which saves power.
249  *
250  * The return value is the rounded version of the @j parameter.
251  */
252 unsigned long round_jiffies_relative(unsigned long j)
253 {
254         return __round_jiffies_relative(j, raw_smp_processor_id());
255 }
256 EXPORT_SYMBOL_GPL(round_jiffies_relative);
257
258 /**
259  * __round_jiffies_up - function to round jiffies up to a full second
260  * @j: the time in (absolute) jiffies that should be rounded
261  * @cpu: the processor number on which the timeout will happen
262  *
263  * This is the same as __round_jiffies() except that it will never
264  * round down.  This is useful for timeouts for which the exact time
265  * of firing does not matter too much, as long as they don't fire too
266  * early.
267  */
268 unsigned long __round_jiffies_up(unsigned long j, int cpu)
269 {
270         return round_jiffies_common(j, cpu, true);
271 }
272 EXPORT_SYMBOL_GPL(__round_jiffies_up);
273
274 /**
275  * __round_jiffies_up_relative - function to round jiffies up to a full second
276  * @j: the time in (relative) jiffies that should be rounded
277  * @cpu: the processor number on which the timeout will happen
278  *
279  * This is the same as __round_jiffies_relative() except that it will never
280  * round down.  This is useful for timeouts for which the exact time
281  * of firing does not matter too much, as long as they don't fire too
282  * early.
283  */
284 unsigned long __round_jiffies_up_relative(unsigned long j, int cpu)
285 {
286         unsigned long j0 = jiffies;
287
288         /* Use j0 because jiffies might change while we run */
289         return round_jiffies_common(j + j0, cpu, true) - j0;
290 }
291 EXPORT_SYMBOL_GPL(__round_jiffies_up_relative);
292
293 /**
294  * round_jiffies_up - function to round jiffies up to a full second
295  * @j: the time in (absolute) jiffies that should be rounded
296  *
297  * This is the same as round_jiffies() except that it will never
298  * round down.  This is useful for timeouts for which the exact time
299  * of firing does not matter too much, as long as they don't fire too
300  * early.
301  */
302 unsigned long round_jiffies_up(unsigned long j)
303 {
304         return round_jiffies_common(j, raw_smp_processor_id(), true);
305 }
306 EXPORT_SYMBOL_GPL(round_jiffies_up);
307
308 /**
309  * round_jiffies_up_relative - function to round jiffies up to a full second
310  * @j: the time in (relative) jiffies that should be rounded
311  *
312  * This is the same as round_jiffies_relative() except that it will never
313  * round down.  This is useful for timeouts for which the exact time
314  * of firing does not matter too much, as long as they don't fire too
315  * early.
316  */
317 unsigned long round_jiffies_up_relative(unsigned long j)
318 {
319         return __round_jiffies_up_relative(j, raw_smp_processor_id());
320 }
321 EXPORT_SYMBOL_GPL(round_jiffies_up_relative);
322
323 /**
324  * set_timer_slack - set the allowed slack for a timer
325  * @timer: the timer to be modified
326  * @slack_hz: the amount of time (in jiffies) allowed for rounding
327  *
328  * Set the amount of time, in jiffies, that a certain timer has
329  * in terms of slack. By setting this value, the timer subsystem
330  * will schedule the actual timer somewhere between
331  * the time mod_timer() asks for, and that time plus the slack.
332  *
333  * By setting the slack to -1, a percentage of the delay is used
334  * instead.
335  */
336 void set_timer_slack(struct timer_list *timer, int slack_hz)
337 {
338         timer->slack = slack_hz;
339 }
340 EXPORT_SYMBOL_GPL(set_timer_slack);
341
342 static void internal_add_timer(struct tvec_base *base, struct timer_list *timer)
343 {
344         unsigned long expires = timer->expires;
345         unsigned long idx = expires - base->timer_jiffies;
346         struct list_head *vec;
347
348         if (idx < TVR_SIZE) {
349                 int i = expires & TVR_MASK;
350                 vec = base->tv1.vec + i;
351         } else if (idx < 1 << (TVR_BITS + TVN_BITS)) {
352                 int i = (expires >> TVR_BITS) & TVN_MASK;
353                 vec = base->tv2.vec + i;
354         } else if (idx < 1 << (TVR_BITS + 2 * TVN_BITS)) {
355                 int i = (expires >> (TVR_BITS + TVN_BITS)) & TVN_MASK;
356                 vec = base->tv3.vec + i;
357         } else if (idx < 1 << (TVR_BITS + 3 * TVN_BITS)) {
358                 int i = (expires >> (TVR_BITS + 2 * TVN_BITS)) & TVN_MASK;
359                 vec = base->tv4.vec + i;
360         } else if ((signed long) idx < 0) {
361                 /*
362                  * Can happen if you add a timer with expires == jiffies,
363                  * or you set a timer to go off in the past
364                  */
365                 vec = base->tv1.vec + (base->timer_jiffies & TVR_MASK);
366         } else {
367                 int i;
368                 /* If the timeout is larger than 0xffffffff on 64-bit
369                  * architectures then we use the maximum timeout:
370                  */
371                 if (idx > 0xffffffffUL) {
372                         idx = 0xffffffffUL;
373                         expires = idx + base->timer_jiffies;
374                 }
375                 i = (expires >> (TVR_BITS + 3 * TVN_BITS)) & TVN_MASK;
376                 vec = base->tv5.vec + i;
377         }
378         /*
379          * Timers are FIFO:
380          */
381         list_add_tail(&timer->entry, vec);
382 }
383
384 #ifdef CONFIG_TIMER_STATS
385 void __timer_stats_timer_set_start_info(struct timer_list *timer, void *addr)
386 {
387         if (timer->start_site)
388                 return;
389
390         timer->start_site = addr;
391         memcpy(timer->start_comm, current->comm, TASK_COMM_LEN);
392         timer->start_pid = current->pid;
393 }
394
395 static void timer_stats_account_timer(struct timer_list *timer)
396 {
397         unsigned int flag = 0;
398
399         if (likely(!timer->start_site))
400                 return;
401         if (unlikely(tbase_get_deferrable(timer->base)))
402                 flag |= TIMER_STATS_FLAG_DEFERRABLE;
403
404         timer_stats_update_stats(timer, timer->start_pid, timer->start_site,
405                                  timer->function, timer->start_comm, flag);
406 }
407
408 #else
409 static void timer_stats_account_timer(struct timer_list *timer) {}
410 #endif
411
412 #ifdef CONFIG_DEBUG_OBJECTS_TIMERS
413
414 static struct debug_obj_descr timer_debug_descr;
415
416 /*
417  * fixup_init is called when:
418  * - an active object is initialized
419  */
420 static int timer_fixup_init(void *addr, enum debug_obj_state state)
421 {
422         struct timer_list *timer = addr;
423
424         switch (state) {
425         case ODEBUG_STATE_ACTIVE:
426                 del_timer_sync(timer);
427                 debug_object_init(timer, &timer_debug_descr);
428                 return 1;
429         default:
430                 return 0;
431         }
432 }
433
434 /*
435  * fixup_activate is called when:
436  * - an active object is activated
437  * - an unknown object is activated (might be a statically initialized object)
438  */
439 static int timer_fixup_activate(void *addr, enum debug_obj_state state)
440 {
441         struct timer_list *timer = addr;
442
443         switch (state) {
444
445         case ODEBUG_STATE_NOTAVAILABLE:
446                 /*
447                  * This is not really a fixup. The timer was
448                  * statically initialized. We just make sure that it
449                  * is tracked in the object tracker.
450                  */
451                 if (timer->entry.next == NULL &&
452                     timer->entry.prev == TIMER_ENTRY_STATIC) {
453                         debug_object_init(timer, &timer_debug_descr);
454                         debug_object_activate(timer, &timer_debug_descr);
455                         return 0;
456                 } else {
457                         WARN_ON_ONCE(1);
458                 }
459                 return 0;
460
461         case ODEBUG_STATE_ACTIVE:
462                 WARN_ON(1);
463
464         default:
465                 return 0;
466         }
467 }
468
469 /*
470  * fixup_free is called when:
471  * - an active object is freed
472  */
473 static int timer_fixup_free(void *addr, enum debug_obj_state state)
474 {
475         struct timer_list *timer = addr;
476
477         switch (state) {
478         case ODEBUG_STATE_ACTIVE:
479                 del_timer_sync(timer);
480                 debug_object_free(timer, &timer_debug_descr);
481                 return 1;
482         default:
483                 return 0;
484         }
485 }
486
487 static struct debug_obj_descr timer_debug_descr = {
488         .name           = "timer_list",
489         .fixup_init     = timer_fixup_init,
490         .fixup_activate = timer_fixup_activate,
491         .fixup_free     = timer_fixup_free,
492 };
493
494 static inline void debug_timer_init(struct timer_list *timer)
495 {
496         debug_object_init(timer, &timer_debug_descr);
497 }
498
499 static inline void debug_timer_activate(struct timer_list *timer)
500 {
501         debug_object_activate(timer, &timer_debug_descr);
502 }
503
504 static inline void debug_timer_deactivate(struct timer_list *timer)
505 {
506         debug_object_deactivate(timer, &timer_debug_descr);
507 }
508
509 static inline void debug_timer_free(struct timer_list *timer)
510 {
511         debug_object_free(timer, &timer_debug_descr);
512 }
513
514 static void __init_timer(struct timer_list *timer,
515                          const char *name,
516                          struct lock_class_key *key);
517
518 void init_timer_on_stack_key(struct timer_list *timer,
519                              const char *name,
520                              struct lock_class_key *key)
521 {
522         debug_object_init_on_stack(timer, &timer_debug_descr);
523         __init_timer(timer, name, key);
524 }
525 EXPORT_SYMBOL_GPL(init_timer_on_stack_key);
526
527 void destroy_timer_on_stack(struct timer_list *timer)
528 {
529         debug_object_free(timer, &timer_debug_descr);
530 }
531 EXPORT_SYMBOL_GPL(destroy_timer_on_stack);
532
533 #else
534 static inline void debug_timer_init(struct timer_list *timer) { }
535 static inline void debug_timer_activate(struct timer_list *timer) { }
536 static inline void debug_timer_deactivate(struct timer_list *timer) { }
537 #endif
538
539 static inline void debug_init(struct timer_list *timer)
540 {
541         debug_timer_init(timer);
542         trace_timer_init(timer);
543 }
544
545 static inline void
546 debug_activate(struct timer_list *timer, unsigned long expires)
547 {
548         debug_timer_activate(timer);
549         trace_timer_start(timer, expires);
550 }
551
552 static inline void debug_deactivate(struct timer_list *timer)
553 {
554         debug_timer_deactivate(timer);
555         trace_timer_cancel(timer);
556 }
557
558 static void __init_timer(struct timer_list *timer,
559                          const char *name,
560                          struct lock_class_key *key)
561 {
562         timer->entry.next = NULL;
563         timer->base = __raw_get_cpu_var(tvec_bases);
564         timer->slack = -1;
565 #ifdef CONFIG_TIMER_STATS
566         timer->start_site = NULL;
567         timer->start_pid = -1;
568         memset(timer->start_comm, 0, TASK_COMM_LEN);
569 #endif
570         lockdep_init_map(&timer->lockdep_map, name, key, 0);
571 }
572
573 void setup_deferrable_timer_on_stack_key(struct timer_list *timer,
574                                          const char *name,
575                                          struct lock_class_key *key,
576                                          void (*function)(unsigned long),
577                                          unsigned long data)
578 {
579         timer->function = function;
580         timer->data = data;
581         init_timer_on_stack_key(timer, name, key);
582         timer_set_deferrable(timer);
583 }
584 EXPORT_SYMBOL_GPL(setup_deferrable_timer_on_stack_key);
585
586 /**
587  * init_timer_key - initialize a timer
588  * @timer: the timer to be initialized
589  * @name: name of the timer
590  * @key: lockdep class key of the fake lock used for tracking timer
591  *       sync lock dependencies
592  *
593  * init_timer_key() must be done to a timer prior calling *any* of the
594  * other timer functions.
595  */
596 void init_timer_key(struct timer_list *timer,
597                     const char *name,
598                     struct lock_class_key *key)
599 {
600         debug_init(timer);
601         __init_timer(timer, name, key);
602 }
603 EXPORT_SYMBOL(init_timer_key);
604
605 void init_timer_deferrable_key(struct timer_list *timer,
606                                const char *name,
607                                struct lock_class_key *key)
608 {
609         init_timer_key(timer, name, key);
610         timer_set_deferrable(timer);
611 }
612 EXPORT_SYMBOL(init_timer_deferrable_key);
613
614 static inline void detach_timer(struct timer_list *timer,
615                                 int clear_pending)
616 {
617         struct list_head *entry = &timer->entry;
618
619         debug_deactivate(timer);
620
621         __list_del(entry->prev, entry->next);
622         if (clear_pending)
623                 entry->next = NULL;
624         entry->prev = LIST_POISON2;
625 }
626
627 /*
628  * We are using hashed locking: holding per_cpu(tvec_bases).lock
629  * means that all timers which are tied to this base via timer->base are
630  * locked, and the base itself is locked too.
631  *
632  * So __run_timers/migrate_timers can safely modify all timers which could
633  * be found on ->tvX lists.
634  *
635  * When the timer's base is locked, and the timer removed from list, it is
636  * possible to set timer->base = NULL and drop the lock: the timer remains
637  * locked.
638  */
639 static struct tvec_base *lock_timer_base(struct timer_list *timer,
640                                         unsigned long *flags)
641         __acquires(timer->base->lock)
642 {
643         struct tvec_base *base;
644
645         for (;;) {
646                 struct tvec_base *prelock_base = timer->base;
647                 base = tbase_get_base(prelock_base);
648                 if (likely(base != NULL)) {
649                         spin_lock_irqsave(&base->lock, *flags);
650                         if (likely(prelock_base == timer->base))
651                                 return base;
652                         /* The timer has migrated to another CPU */
653                         spin_unlock_irqrestore(&base->lock, *flags);
654                 }
655                 cpu_relax();
656         }
657 }
658
659 static inline int
660 __mod_timer(struct timer_list *timer, unsigned long expires,
661                                                 bool pending_only, int pinned)
662 {
663         struct tvec_base *base, *new_base;
664         unsigned long flags;
665         int ret = 0 , cpu;
666
667         timer_stats_timer_set_start_info(timer);
668         BUG_ON(!timer->function);
669
670         base = lock_timer_base(timer, &flags);
671
672         if (timer_pending(timer)) {
673                 detach_timer(timer, 0);
674                 if (timer->expires == base->next_timer &&
675                     !tbase_get_deferrable(timer->base))
676                         base->next_timer = base->timer_jiffies;
677                 ret = 1;
678         } else {
679                 if (pending_only)
680                         goto out_unlock;
681         }
682
683         debug_activate(timer, expires);
684
685         cpu = smp_processor_id();
686
687 #if defined(CONFIG_NO_HZ) && defined(CONFIG_SMP)
688         if (!pinned && get_sysctl_timer_migration() && idle_cpu(cpu))
689                 cpu = get_nohz_timer_target();
690 #endif
691         new_base = per_cpu(tvec_bases, cpu);
692
693         if (base != new_base) {
694                 /*
695                  * We are trying to schedule the timer on the local CPU.
696                  * However we can't change timer's base while it is running,
697                  * otherwise del_timer_sync() can't detect that the timer's
698                  * handler yet has not finished. This also guarantees that
699                  * the timer is serialized wrt itself.
700                  */
701                 if (likely(base->running_timer != timer)) {
702                         /* See the comment in lock_timer_base() */
703                         timer_set_base(timer, NULL);
704                         spin_unlock(&base->lock);
705                         base = new_base;
706                         spin_lock(&base->lock);
707                         timer_set_base(timer, base);
708                 }
709         }
710
711         timer->expires = expires;
712         if (time_before(timer->expires, base->next_timer) &&
713             !tbase_get_deferrable(timer->base))
714                 base->next_timer = timer->expires;
715         internal_add_timer(base, timer);
716
717 out_unlock:
718         spin_unlock_irqrestore(&base->lock, flags);
719
720         return ret;
721 }
722
723 /**
724  * mod_timer_pending - modify a pending timer's timeout
725  * @timer: the pending timer to be modified
726  * @expires: new timeout in jiffies
727  *
728  * mod_timer_pending() is the same for pending timers as mod_timer(),
729  * but will not re-activate and modify already deleted timers.
730  *
731  * It is useful for unserialized use of timers.
732  */
733 int mod_timer_pending(struct timer_list *timer, unsigned long expires)
734 {
735         return __mod_timer(timer, expires, true, TIMER_NOT_PINNED);
736 }
737 EXPORT_SYMBOL(mod_timer_pending);
738
739 /*
740  * Decide where to put the timer while taking the slack into account
741  *
742  * Algorithm:
743  *   1) calculate the maximum (absolute) time
744  *   2) calculate the highest bit where the expires and new max are different
745  *   3) use this bit to make a mask
746  *   4) use the bitmask to round down the maximum time, so that all last
747  *      bits are zeros
748  */
749 static inline
750 unsigned long apply_slack(struct timer_list *timer, unsigned long expires)
751 {
752         unsigned long expires_limit, mask;
753         int bit;
754
755         expires_limit = expires;
756
757         if (timer->slack >= 0) {
758                 expires_limit = expires + timer->slack;
759         } else {
760                 unsigned long now = jiffies;
761
762                 /* No slack, if already expired else auto slack 0.4% */
763                 if (time_after(expires, now))
764                         expires_limit = expires + (expires - now)/256;
765         }
766         mask = expires ^ expires_limit;
767         if (mask == 0)
768                 return expires;
769
770         bit = find_last_bit(&mask, BITS_PER_LONG);
771
772         mask = (1 << bit) - 1;
773
774         expires_limit = expires_limit & ~(mask);
775
776         return expires_limit;
777 }
778
779 /**
780  * mod_timer - modify a timer's timeout
781  * @timer: the timer to be modified
782  * @expires: new timeout in jiffies
783  *
784  * mod_timer() is a more efficient way to update the expire field of an
785  * active timer (if the timer is inactive it will be activated)
786  *
787  * mod_timer(timer, expires) is equivalent to:
788  *
789  *     del_timer(timer); timer->expires = expires; add_timer(timer);
790  *
791  * Note that if there are multiple unserialized concurrent users of the
792  * same timer, then mod_timer() is the only safe way to modify the timeout,
793  * since add_timer() cannot modify an already running timer.
794  *
795  * The function returns whether it has modified a pending timer or not.
796  * (ie. mod_timer() of an inactive timer returns 0, mod_timer() of an
797  * active timer returns 1.)
798  */
799 int mod_timer(struct timer_list *timer, unsigned long expires)
800 {
801         /*
802          * This is a common optimization triggered by the
803          * networking code - if the timer is re-modified
804          * to be the same thing then just return:
805          */
806         if (timer_pending(timer) && timer->expires == expires)
807                 return 1;
808
809         expires = apply_slack(timer, expires);
810
811         return __mod_timer(timer, expires, false, TIMER_NOT_PINNED);
812 }
813 EXPORT_SYMBOL(mod_timer);
814
815 /**
816  * mod_timer_pinned - modify a timer's timeout
817  * @timer: the timer to be modified
818  * @expires: new timeout in jiffies
819  *
820  * mod_timer_pinned() is a way to update the expire field of an
821  * active timer (if the timer is inactive it will be activated)
822  * and not allow the timer to be migrated to a different CPU.
823  *
824  * mod_timer_pinned(timer, expires) is equivalent to:
825  *
826  *     del_timer(timer); timer->expires = expires; add_timer(timer);
827  */
828 int mod_timer_pinned(struct timer_list *timer, unsigned long expires)
829 {
830         if (timer->expires == expires && timer_pending(timer))
831                 return 1;
832
833         return __mod_timer(timer, expires, false, TIMER_PINNED);
834 }
835 EXPORT_SYMBOL(mod_timer_pinned);
836
837 /**
838  * add_timer - start a timer
839  * @timer: the timer to be added
840  *
841  * The kernel will do a ->function(->data) callback from the
842  * timer interrupt at the ->expires point in the future. The
843  * current time is 'jiffies'.
844  *
845  * The timer's ->expires, ->function (and if the handler uses it, ->data)
846  * fields must be set prior calling this function.
847  *
848  * Timers with an ->expires field in the past will be executed in the next
849  * timer tick.
850  */
851 void add_timer(struct timer_list *timer)
852 {
853         BUG_ON(timer_pending(timer));
854         mod_timer(timer, timer->expires);
855 }
856 EXPORT_SYMBOL(add_timer);
857
858 /**
859  * add_timer_on - start a timer on a particular CPU
860  * @timer: the timer to be added
861  * @cpu: the CPU to start it on
862  *
863  * This is not very scalable on SMP. Double adds are not possible.
864  */
865 void add_timer_on(struct timer_list *timer, int cpu)
866 {
867         struct tvec_base *base = per_cpu(tvec_bases, cpu);
868         unsigned long flags;
869
870         timer_stats_timer_set_start_info(timer);
871         BUG_ON(timer_pending(timer) || !timer->function);
872         spin_lock_irqsave(&base->lock, flags);
873         timer_set_base(timer, base);
874         debug_activate(timer, timer->expires);
875         if (time_before(timer->expires, base->next_timer) &&
876             !tbase_get_deferrable(timer->base))
877                 base->next_timer = timer->expires;
878         internal_add_timer(base, timer);
879         /*
880          * Check whether the other CPU is idle and needs to be
881          * triggered to reevaluate the timer wheel when nohz is
882          * active. We are protected against the other CPU fiddling
883          * with the timer by holding the timer base lock. This also
884          * makes sure that a CPU on the way to idle can not evaluate
885          * the timer wheel.
886          */
887         wake_up_idle_cpu(cpu);
888         spin_unlock_irqrestore(&base->lock, flags);
889 }
890 EXPORT_SYMBOL_GPL(add_timer_on);
891
892 /**
893  * del_timer - deactive a timer.
894  * @timer: the timer to be deactivated
895  *
896  * del_timer() deactivates a timer - this works on both active and inactive
897  * timers.
898  *
899  * The function returns whether it has deactivated a pending timer or not.
900  * (ie. del_timer() of an inactive timer returns 0, del_timer() of an
901  * active timer returns 1.)
902  */
903 int del_timer(struct timer_list *timer)
904 {
905         struct tvec_base *base;
906         unsigned long flags;
907         int ret = 0;
908
909         timer_stats_timer_clear_start_info(timer);
910         if (timer_pending(timer)) {
911                 base = lock_timer_base(timer, &flags);
912                 if (timer_pending(timer)) {
913                         detach_timer(timer, 1);
914                         if (timer->expires == base->next_timer &&
915                             !tbase_get_deferrable(timer->base))
916                                 base->next_timer = base->timer_jiffies;
917                         ret = 1;
918                 }
919                 spin_unlock_irqrestore(&base->lock, flags);
920         }
921
922         return ret;
923 }
924 EXPORT_SYMBOL(del_timer);
925
926 /**
927  * try_to_del_timer_sync - Try to deactivate a timer
928  * @timer: timer do del
929  *
930  * This function tries to deactivate a timer. Upon successful (ret >= 0)
931  * exit the timer is not queued and the handler is not running on any CPU.
932  */
933 int try_to_del_timer_sync(struct timer_list *timer)
934 {
935         struct tvec_base *base;
936         unsigned long flags;
937         int ret = -1;
938
939         base = lock_timer_base(timer, &flags);
940
941         if (base->running_timer == timer)
942                 goto out;
943
944         timer_stats_timer_clear_start_info(timer);
945         ret = 0;
946         if (timer_pending(timer)) {
947                 detach_timer(timer, 1);
948                 if (timer->expires == base->next_timer &&
949                     !tbase_get_deferrable(timer->base))
950                         base->next_timer = base->timer_jiffies;
951                 ret = 1;
952         }
953 out:
954         spin_unlock_irqrestore(&base->lock, flags);
955
956         return ret;
957 }
958 EXPORT_SYMBOL(try_to_del_timer_sync);
959
960 #ifdef CONFIG_SMP
961 /**
962  * del_timer_sync - deactivate a timer and wait for the handler to finish.
963  * @timer: the timer to be deactivated
964  *
965  * This function only differs from del_timer() on SMP: besides deactivating
966  * the timer it also makes sure the handler has finished executing on other
967  * CPUs.
968  *
969  * Synchronization rules: Callers must prevent restarting of the timer,
970  * otherwise this function is meaningless. It must not be called from
971  * interrupt contexts. The caller must not hold locks which would prevent
972  * completion of the timer's handler. The timer's handler must not call
973  * add_timer_on(). Upon exit the timer is not queued and the handler is
974  * not running on any CPU.
975  *
976  * The function returns whether it has deactivated a pending timer or not.
977  */
978 int del_timer_sync(struct timer_list *timer)
979 {
980 #ifdef CONFIG_LOCKDEP
981         unsigned long flags;
982
983         local_irq_save(flags);
984         lock_map_acquire(&timer->lockdep_map);
985         lock_map_release(&timer->lockdep_map);
986         local_irq_restore(flags);
987 #endif
988         /*
989          * don't use it in hardirq context, because it
990          * could lead to deadlock.
991          */
992         WARN_ON(in_irq());
993         for (;;) {
994                 int ret = try_to_del_timer_sync(timer);
995                 if (ret >= 0)
996                         return ret;
997                 cpu_relax();
998         }
999 }
1000 EXPORT_SYMBOL(del_timer_sync);
1001 #endif
1002
1003 static int cascade(struct tvec_base *base, struct tvec *tv, int index)
1004 {
1005         /* cascade all the timers from tv up one level */
1006         struct timer_list *timer, *tmp;
1007         struct list_head tv_list;
1008
1009         list_replace_init(tv->vec + index, &tv_list);
1010
1011         /*
1012          * We are removing _all_ timers from the list, so we
1013          * don't have to detach them individually.
1014          */
1015         list_for_each_entry_safe(timer, tmp, &tv_list, entry) {
1016                 BUG_ON(tbase_get_base(timer->base) != base);
1017                 internal_add_timer(base, timer);
1018         }
1019
1020         return index;
1021 }
1022
1023 static void call_timer_fn(struct timer_list *timer, void (*fn)(unsigned long),
1024                           unsigned long data)
1025 {
1026         int preempt_count = preempt_count();
1027
1028 #ifdef CONFIG_LOCKDEP
1029         /*
1030          * It is permissible to free the timer from inside the
1031          * function that is called from it, this we need to take into
1032          * account for lockdep too. To avoid bogus "held lock freed"
1033          * warnings as well as problems when looking into
1034          * timer->lockdep_map, make a copy and use that here.
1035          */
1036         struct lockdep_map lockdep_map = timer->lockdep_map;
1037 #endif
1038         /*
1039          * Couple the lock chain with the lock chain at
1040          * del_timer_sync() by acquiring the lock_map around the fn()
1041          * call here and in del_timer_sync().
1042          */
1043         lock_map_acquire(&lockdep_map);
1044
1045         trace_timer_expire_entry(timer);
1046         fn(data);
1047         trace_timer_expire_exit(timer);
1048
1049         lock_map_release(&lockdep_map);
1050
1051         if (preempt_count != preempt_count()) {
1052                 WARN_ONCE(1, "timer: %pF preempt leak: %08x -> %08x\n",
1053                           fn, preempt_count, preempt_count());
1054                 /*
1055                  * Restore the preempt count. That gives us a decent
1056                  * chance to survive and extract information. If the
1057                  * callback kept a lock held, bad luck, but not worse
1058                  * than the BUG() we had.
1059                  */
1060                 preempt_count() = preempt_count;
1061         }
1062 }
1063
1064 #define INDEX(N) ((base->timer_jiffies >> (TVR_BITS + (N) * TVN_BITS)) & TVN_MASK)
1065
1066 /**
1067  * __run_timers - run all expired timers (if any) on this CPU.
1068  * @base: the timer vector to be processed.
1069  *
1070  * This function cascades all vectors and executes all expired timer
1071  * vectors.
1072  */
1073 static inline void __run_timers(struct tvec_base *base)
1074 {
1075         struct timer_list *timer;
1076
1077         spin_lock_irq(&base->lock);
1078         while (time_after_eq(jiffies, base->timer_jiffies)) {
1079                 struct list_head work_list;
1080                 struct list_head *head = &work_list;
1081                 int index = base->timer_jiffies & TVR_MASK;
1082
1083                 /*
1084                  * Cascade timers:
1085                  */
1086                 if (!index &&
1087                         (!cascade(base, &base->tv2, INDEX(0))) &&
1088                                 (!cascade(base, &base->tv3, INDEX(1))) &&
1089                                         !cascade(base, &base->tv4, INDEX(2)))
1090                         cascade(base, &base->tv5, INDEX(3));
1091                 ++base->timer_jiffies;
1092                 list_replace_init(base->tv1.vec + index, &work_list);
1093                 while (!list_empty(head)) {
1094                         void (*fn)(unsigned long);
1095                         unsigned long data;
1096
1097                         timer = list_first_entry(head, struct timer_list,entry);
1098                         fn = timer->function;
1099                         data = timer->data;
1100
1101                         timer_stats_account_timer(timer);
1102
1103                         base->running_timer = timer;
1104                         detach_timer(timer, 1);
1105
1106                         spin_unlock_irq(&base->lock);
1107                         call_timer_fn(timer, fn, data);
1108                         spin_lock_irq(&base->lock);
1109                 }
1110         }
1111         base->running_timer = NULL;
1112         spin_unlock_irq(&base->lock);
1113 }
1114
1115 #ifdef CONFIG_NO_HZ
1116 /*
1117  * Find out when the next timer event is due to happen. This
1118  * is used on S/390 to stop all activity when a CPU is idle.
1119  * This function needs to be called with interrupts disabled.
1120  */
1121 static unsigned long __next_timer_interrupt(struct tvec_base *base)
1122 {
1123         unsigned long timer_jiffies = base->timer_jiffies;
1124         unsigned long expires = timer_jiffies + NEXT_TIMER_MAX_DELTA;
1125         int index, slot, array, found = 0;
1126         struct timer_list *nte;
1127         struct tvec *varray[4];
1128
1129         /* Look for timer events in tv1. */
1130         index = slot = timer_jiffies & TVR_MASK;
1131         do {
1132                 list_for_each_entry(nte, base->tv1.vec + slot, entry) {
1133                         if (tbase_get_deferrable(nte->base))
1134                                 continue;
1135
1136                         found = 1;
1137                         expires = nte->expires;
1138                         /* Look at the cascade bucket(s)? */
1139                         if (!index || slot < index)
1140                                 goto cascade;
1141                         return expires;
1142                 }
1143                 slot = (slot + 1) & TVR_MASK;
1144         } while (slot != index);
1145
1146 cascade:
1147         /* Calculate the next cascade event */
1148         if (index)
1149                 timer_jiffies += TVR_SIZE - index;
1150         timer_jiffies >>= TVR_BITS;
1151
1152         /* Check tv2-tv5. */
1153         varray[0] = &base->tv2;
1154         varray[1] = &base->tv3;
1155         varray[2] = &base->tv4;
1156         varray[3] = &base->tv5;
1157
1158         for (array = 0; array < 4; array++) {
1159                 struct tvec *varp = varray[array];
1160
1161                 index = slot = timer_jiffies & TVN_MASK;
1162                 do {
1163                         list_for_each_entry(nte, varp->vec + slot, entry) {
1164                                 if (tbase_get_deferrable(nte->base))
1165                                         continue;
1166
1167                                 found = 1;
1168                                 if (time_before(nte->expires, expires))
1169                                         expires = nte->expires;
1170                         }
1171                         /*
1172                          * Do we still search for the first timer or are
1173                          * we looking up the cascade buckets ?
1174                          */
1175                         if (found) {
1176                                 /* Look at the cascade bucket(s)? */
1177                                 if (!index || slot < index)
1178                                         break;
1179                                 return expires;
1180                         }
1181                         slot = (slot + 1) & TVN_MASK;
1182                 } while (slot != index);
1183
1184                 if (index)
1185                         timer_jiffies += TVN_SIZE - index;
1186                 timer_jiffies >>= TVN_BITS;
1187         }
1188         return expires;
1189 }
1190
1191 /*
1192  * Check, if the next hrtimer event is before the next timer wheel
1193  * event:
1194  */
1195 static unsigned long cmp_next_hrtimer_event(unsigned long now,
1196                                             unsigned long expires)
1197 {
1198         ktime_t hr_delta = hrtimer_get_next_event();
1199         struct timespec tsdelta;
1200         unsigned long delta;
1201
1202         if (hr_delta.tv64 == KTIME_MAX)
1203                 return expires;
1204
1205         /*
1206          * Expired timer available, let it expire in the next tick
1207          */
1208         if (hr_delta.tv64 <= 0)
1209                 return now + 1;
1210
1211         tsdelta = ktime_to_timespec(hr_delta);
1212         delta = timespec_to_jiffies(&tsdelta);
1213
1214         /*
1215          * Limit the delta to the max value, which is checked in
1216          * tick_nohz_stop_sched_tick():
1217          */
1218         if (delta > NEXT_TIMER_MAX_DELTA)
1219                 delta = NEXT_TIMER_MAX_DELTA;
1220
1221         /*
1222          * Take rounding errors in to account and make sure, that it
1223          * expires in the next tick. Otherwise we go into an endless
1224          * ping pong due to tick_nohz_stop_sched_tick() retriggering
1225          * the timer softirq
1226          */
1227         if (delta < 1)
1228                 delta = 1;
1229         now += delta;
1230         if (time_before(now, expires))
1231                 return now;
1232         return expires;
1233 }
1234
1235 /**
1236  * get_next_timer_interrupt - return the jiffy of the next pending timer
1237  * @now: current time (in jiffies)
1238  */
1239 unsigned long get_next_timer_interrupt(unsigned long now)
1240 {
1241         struct tvec_base *base = __this_cpu_read(tvec_bases);
1242         unsigned long expires;
1243
1244         /*
1245          * Pretend that there is no timer pending if the cpu is offline.
1246          * Possible pending timers will be migrated later to an active cpu.
1247          */
1248         if (cpu_is_offline(smp_processor_id()))
1249                 return now + NEXT_TIMER_MAX_DELTA;
1250         spin_lock(&base->lock);
1251         if (time_before_eq(base->next_timer, base->timer_jiffies))
1252                 base->next_timer = __next_timer_interrupt(base);
1253         expires = base->next_timer;
1254         spin_unlock(&base->lock);
1255
1256         if (time_before_eq(expires, now))
1257                 return now;
1258
1259         return cmp_next_hrtimer_event(now, expires);
1260 }
1261 #endif
1262
1263 /*
1264  * Called from the timer interrupt handler to charge one tick to the current
1265  * process.  user_tick is 1 if the tick is user time, 0 for system.
1266  */
1267 void update_process_times(int user_tick)
1268 {
1269         struct task_struct *p = current;
1270         int cpu = smp_processor_id();
1271
1272         /* Note: this timer irq context must be accounted for as well. */
1273         account_process_tick(p, user_tick);
1274         run_local_timers();
1275         rcu_check_callbacks(cpu, user_tick);
1276         printk_tick();
1277 #ifdef CONFIG_IRQ_WORK
1278         if (in_irq())
1279                 irq_work_run();
1280 #endif
1281         scheduler_tick();
1282         run_posix_cpu_timers(p);
1283 }
1284
1285 /*
1286  * This function runs timers and the timer-tq in bottom half context.
1287  */
1288 static void run_timer_softirq(struct softirq_action *h)
1289 {
1290         struct tvec_base *base = __this_cpu_read(tvec_bases);
1291
1292         hrtimer_run_pending();
1293
1294         if (time_after_eq(jiffies, base->timer_jiffies))
1295                 __run_timers(base);
1296 }
1297
1298 /*
1299  * Called by the local, per-CPU timer interrupt on SMP.
1300  */
1301 void run_local_timers(void)
1302 {
1303         hrtimer_run_queues();
1304         raise_softirq(TIMER_SOFTIRQ);
1305 }
1306
1307 /*
1308  * The 64-bit jiffies value is not atomic - you MUST NOT read it
1309  * without sampling the sequence number in xtime_lock.
1310  * jiffies is defined in the linker script...
1311  */
1312
1313 void do_timer(unsigned long ticks)
1314 {
1315         jiffies_64 += ticks;
1316         update_wall_time();
1317         calc_global_load(ticks);
1318 }
1319
1320 #ifdef __ARCH_WANT_SYS_ALARM
1321
1322 /*
1323  * For backwards compatibility?  This can be done in libc so Alpha
1324  * and all newer ports shouldn't need it.
1325  */
1326 SYSCALL_DEFINE1(alarm, unsigned int, seconds)
1327 {
1328         return alarm_setitimer(seconds);
1329 }
1330
1331 #endif
1332
1333 #ifndef __alpha__
1334
1335 /*
1336  * The Alpha uses getxpid, getxuid, and getxgid instead.  Maybe this
1337  * should be moved into arch/i386 instead?
1338  */
1339
1340 /**
1341  * sys_getpid - return the thread group id of the current process
1342  *
1343  * Note, despite the name, this returns the tgid not the pid.  The tgid and
1344  * the pid are identical unless CLONE_THREAD was specified on clone() in
1345  * which case the tgid is the same in all threads of the same group.
1346  *
1347  * This is SMP safe as current->tgid does not change.
1348  */
1349 SYSCALL_DEFINE0(getpid)
1350 {
1351         return task_tgid_vnr(current);
1352 }
1353
1354 /*
1355  * Accessing ->real_parent is not SMP-safe, it could
1356  * change from under us. However, we can use a stale
1357  * value of ->real_parent under rcu_read_lock(), see
1358  * release_task()->call_rcu(delayed_put_task_struct).
1359  */
1360 SYSCALL_DEFINE0(getppid)
1361 {
1362         int pid;
1363
1364         rcu_read_lock();
1365         pid = task_tgid_vnr(current->real_parent);
1366         rcu_read_unlock();
1367
1368         return pid;
1369 }
1370
1371 SYSCALL_DEFINE0(getuid)
1372 {
1373         /* Only we change this so SMP safe */
1374         return current_uid();
1375 }
1376
1377 SYSCALL_DEFINE0(geteuid)
1378 {
1379         /* Only we change this so SMP safe */
1380         return current_euid();
1381 }
1382
1383 SYSCALL_DEFINE0(getgid)
1384 {
1385         /* Only we change this so SMP safe */
1386         return current_gid();
1387 }
1388
1389 SYSCALL_DEFINE0(getegid)
1390 {
1391         /* Only we change this so SMP safe */
1392         return  current_egid();
1393 }
1394
1395 #endif
1396
1397 static void process_timeout(unsigned long __data)
1398 {
1399         wake_up_process((struct task_struct *)__data);
1400 }
1401
1402 /**
1403  * schedule_timeout - sleep until timeout
1404  * @timeout: timeout value in jiffies
1405  *
1406  * Make the current task sleep until @timeout jiffies have
1407  * elapsed. The routine will return immediately unless
1408  * the current task state has been set (see set_current_state()).
1409  *
1410  * You can set the task state as follows -
1411  *
1412  * %TASK_UNINTERRUPTIBLE - at least @timeout jiffies are guaranteed to
1413  * pass before the routine returns. The routine will return 0
1414  *
1415  * %TASK_INTERRUPTIBLE - the routine may return early if a signal is
1416  * delivered to the current task. In this case the remaining time
1417  * in jiffies will be returned, or 0 if the timer expired in time
1418  *
1419  * The current task state is guaranteed to be TASK_RUNNING when this
1420  * routine returns.
1421  *
1422  * Specifying a @timeout value of %MAX_SCHEDULE_TIMEOUT will schedule
1423  * the CPU away without a bound on the timeout. In this case the return
1424  * value will be %MAX_SCHEDULE_TIMEOUT.
1425  *
1426  * In all cases the return value is guaranteed to be non-negative.
1427  */
1428 signed long __sched schedule_timeout(signed long timeout)
1429 {
1430         struct timer_list timer;
1431         unsigned long expire;
1432
1433         switch (timeout)
1434         {
1435         case MAX_SCHEDULE_TIMEOUT:
1436                 /*
1437                  * These two special cases are useful to be comfortable
1438                  * in the caller. Nothing more. We could take
1439                  * MAX_SCHEDULE_TIMEOUT from one of the negative value
1440                  * but I' d like to return a valid offset (>=0) to allow
1441                  * the caller to do everything it want with the retval.
1442                  */
1443                 schedule();
1444                 goto out;
1445         default:
1446                 /*
1447                  * Another bit of PARANOID. Note that the retval will be
1448                  * 0 since no piece of kernel is supposed to do a check
1449                  * for a negative retval of schedule_timeout() (since it
1450                  * should never happens anyway). You just have the printk()
1451                  * that will tell you if something is gone wrong and where.
1452                  */
1453                 if (timeout < 0) {
1454                         printk(KERN_ERR "schedule_timeout: wrong timeout "
1455                                 "value %lx\n", timeout);
1456                         dump_stack();
1457                         current->state = TASK_RUNNING;
1458                         goto out;
1459                 }
1460         }
1461
1462         expire = timeout + jiffies;
1463
1464         setup_timer_on_stack(&timer, process_timeout, (unsigned long)current);
1465         __mod_timer(&timer, expire, false, TIMER_NOT_PINNED);
1466         schedule();
1467         del_singleshot_timer_sync(&timer);
1468
1469         /* Remove the timer from the object tracker */
1470         destroy_timer_on_stack(&timer);
1471
1472         timeout = expire - jiffies;
1473
1474  out:
1475         return timeout < 0 ? 0 : timeout;
1476 }
1477 EXPORT_SYMBOL(schedule_timeout);
1478
1479 /*
1480  * We can use __set_current_state() here because schedule_timeout() calls
1481  * schedule() unconditionally.
1482  */
1483 signed long __sched schedule_timeout_interruptible(signed long timeout)
1484 {
1485         __set_current_state(TASK_INTERRUPTIBLE);
1486         return schedule_timeout(timeout);
1487 }
1488 EXPORT_SYMBOL(schedule_timeout_interruptible);
1489
1490 signed long __sched schedule_timeout_killable(signed long timeout)
1491 {
1492         __set_current_state(TASK_KILLABLE);
1493         return schedule_timeout(timeout);
1494 }
1495 EXPORT_SYMBOL(schedule_timeout_killable);
1496
1497 signed long __sched schedule_timeout_uninterruptible(signed long timeout)
1498 {
1499         __set_current_state(TASK_UNINTERRUPTIBLE);
1500         return schedule_timeout(timeout);
1501 }
1502 EXPORT_SYMBOL(schedule_timeout_uninterruptible);
1503
1504 /* Thread ID - the internal kernel "pid" */
1505 SYSCALL_DEFINE0(gettid)
1506 {
1507         return task_pid_vnr(current);
1508 }
1509
1510 /**
1511  * do_sysinfo - fill in sysinfo struct
1512  * @info: pointer to buffer to fill
1513  */
1514 int do_sysinfo(struct sysinfo *info)
1515 {
1516         unsigned long mem_total, sav_total;
1517         unsigned int mem_unit, bitcount;
1518         struct timespec tp;
1519
1520         memset(info, 0, sizeof(struct sysinfo));
1521
1522         ktime_get_ts(&tp);
1523         monotonic_to_bootbased(&tp);
1524         info->uptime = tp.tv_sec + (tp.tv_nsec ? 1 : 0);
1525
1526         get_avenrun(info->loads, 0, SI_LOAD_SHIFT - FSHIFT);
1527
1528         info->procs = nr_threads;
1529
1530         si_meminfo(info);
1531         si_swapinfo(info);
1532
1533         /*
1534          * If the sum of all the available memory (i.e. ram + swap)
1535          * is less than can be stored in a 32 bit unsigned long then
1536          * we can be binary compatible with 2.2.x kernels.  If not,
1537          * well, in that case 2.2.x was broken anyways...
1538          *
1539          *  -Erik Andersen <andersee@debian.org>
1540          */
1541
1542         mem_total = info->totalram + info->totalswap;
1543         if (mem_total < info->totalram || mem_total < info->totalswap)
1544                 goto out;
1545         bitcount = 0;
1546         mem_unit = info->mem_unit;
1547         while (mem_unit > 1) {
1548                 bitcount++;
1549                 mem_unit >>= 1;
1550                 sav_total = mem_total;
1551                 mem_total <<= 1;
1552                 if (mem_total < sav_total)
1553                         goto out;
1554         }
1555
1556         /*
1557          * If mem_total did not overflow, multiply all memory values by
1558          * info->mem_unit and set it to 1.  This leaves things compatible
1559          * with 2.2.x, and also retains compatibility with earlier 2.4.x
1560          * kernels...
1561          */
1562
1563         info->mem_unit = 1;
1564         info->totalram <<= bitcount;
1565         info->freeram <<= bitcount;
1566         info->sharedram <<= bitcount;
1567         info->bufferram <<= bitcount;
1568         info->totalswap <<= bitcount;
1569         info->freeswap <<= bitcount;
1570         info->totalhigh <<= bitcount;
1571         info->freehigh <<= bitcount;
1572
1573 out:
1574         return 0;
1575 }
1576
1577 SYSCALL_DEFINE1(sysinfo, struct sysinfo __user *, info)
1578 {
1579         struct sysinfo val;
1580
1581         do_sysinfo(&val);
1582
1583         if (copy_to_user(info, &val, sizeof(struct sysinfo)))
1584                 return -EFAULT;
1585
1586         return 0;
1587 }
1588
1589 static int __cpuinit init_timers_cpu(int cpu)
1590 {
1591         int j;
1592         struct tvec_base *base;
1593         static char __cpuinitdata tvec_base_done[NR_CPUS];
1594
1595         if (!tvec_base_done[cpu]) {
1596                 static char boot_done;
1597
1598                 if (boot_done) {
1599                         /*
1600                          * The APs use this path later in boot
1601                          */
1602                         base = kmalloc_node(sizeof(*base),
1603                                                 GFP_KERNEL | __GFP_ZERO,
1604                                                 cpu_to_node(cpu));
1605                         if (!base)
1606                                 return -ENOMEM;
1607
1608                         /* Make sure that tvec_base is 2 byte aligned */
1609                         if (tbase_get_deferrable(base)) {
1610                                 WARN_ON(1);
1611                                 kfree(base);
1612                                 return -ENOMEM;
1613                         }
1614                         per_cpu(tvec_bases, cpu) = base;
1615                 } else {
1616                         /*
1617                          * This is for the boot CPU - we use compile-time
1618                          * static initialisation because per-cpu memory isn't
1619                          * ready yet and because the memory allocators are not
1620                          * initialised either.
1621                          */
1622                         boot_done = 1;
1623                         base = &boot_tvec_bases;
1624                 }
1625                 tvec_base_done[cpu] = 1;
1626         } else {
1627                 base = per_cpu(tvec_bases, cpu);
1628         }
1629
1630         spin_lock_init(&base->lock);
1631
1632         for (j = 0; j < TVN_SIZE; j++) {
1633                 INIT_LIST_HEAD(base->tv5.vec + j);
1634                 INIT_LIST_HEAD(base->tv4.vec + j);
1635                 INIT_LIST_HEAD(base->tv3.vec + j);
1636                 INIT_LIST_HEAD(base->tv2.vec + j);
1637         }
1638         for (j = 0; j < TVR_SIZE; j++)
1639                 INIT_LIST_HEAD(base->tv1.vec + j);
1640
1641         base->timer_jiffies = jiffies;
1642         base->next_timer = base->timer_jiffies;
1643         return 0;
1644 }
1645
1646 #ifdef CONFIG_HOTPLUG_CPU
1647 static void migrate_timer_list(struct tvec_base *new_base, struct list_head *head)
1648 {
1649         struct timer_list *timer;
1650
1651         while (!list_empty(head)) {
1652                 timer = list_first_entry(head, struct timer_list, entry);
1653                 detach_timer(timer, 0);
1654                 timer_set_base(timer, new_base);
1655                 if (time_before(timer->expires, new_base->next_timer) &&
1656                     !tbase_get_deferrable(timer->base))
1657                         new_base->next_timer = timer->expires;
1658                 internal_add_timer(new_base, timer);
1659         }
1660 }
1661
1662 static void __cpuinit migrate_timers(int cpu)
1663 {
1664         struct tvec_base *old_base;
1665         struct tvec_base *new_base;
1666         int i;
1667
1668         BUG_ON(cpu_online(cpu));
1669         old_base = per_cpu(tvec_bases, cpu);
1670         new_base = get_cpu_var(tvec_bases);
1671         /*
1672          * The caller is globally serialized and nobody else
1673          * takes two locks at once, deadlock is not possible.
1674          */
1675         spin_lock_irq(&new_base->lock);
1676         spin_lock_nested(&old_base->lock, SINGLE_DEPTH_NESTING);
1677
1678         BUG_ON(old_base->running_timer);
1679
1680         for (i = 0; i < TVR_SIZE; i++)
1681                 migrate_timer_list(new_base, old_base->tv1.vec + i);
1682         for (i = 0; i < TVN_SIZE; i++) {
1683                 migrate_timer_list(new_base, old_base->tv2.vec + i);
1684                 migrate_timer_list(new_base, old_base->tv3.vec + i);
1685                 migrate_timer_list(new_base, old_base->tv4.vec + i);
1686                 migrate_timer_list(new_base, old_base->tv5.vec + i);
1687         }
1688
1689         spin_unlock(&old_base->lock);
1690         spin_unlock_irq(&new_base->lock);
1691         put_cpu_var(tvec_bases);
1692 }
1693 #endif /* CONFIG_HOTPLUG_CPU */
1694
1695 static int __cpuinit timer_cpu_notify(struct notifier_block *self,
1696                                 unsigned long action, void *hcpu)
1697 {
1698         long cpu = (long)hcpu;
1699         int err;
1700
1701         switch(action) {
1702         case CPU_UP_PREPARE:
1703         case CPU_UP_PREPARE_FROZEN:
1704                 err = init_timers_cpu(cpu);
1705                 if (err < 0)
1706                         return notifier_from_errno(err);
1707                 break;
1708 #ifdef CONFIG_HOTPLUG_CPU
1709         case CPU_DEAD:
1710         case CPU_DEAD_FROZEN:
1711                 migrate_timers(cpu);
1712                 break;
1713 #endif
1714         default:
1715                 break;
1716         }
1717         return NOTIFY_OK;
1718 }
1719
1720 static struct notifier_block __cpuinitdata timers_nb = {
1721         .notifier_call  = timer_cpu_notify,
1722 };
1723
1724
1725 void __init init_timers(void)
1726 {
1727         int err = timer_cpu_notify(&timers_nb, (unsigned long)CPU_UP_PREPARE,
1728                                 (void *)(long)smp_processor_id());
1729
1730         init_timer_stats();
1731
1732         BUG_ON(err != NOTIFY_OK);
1733         register_cpu_notifier(&timers_nb);
1734         open_softirq(TIMER_SOFTIRQ, run_timer_softirq);
1735 }
1736
1737 /**
1738  * msleep - sleep safely even with waitqueue interruptions
1739  * @msecs: Time in milliseconds to sleep for
1740  */
1741 void msleep(unsigned int msecs)
1742 {
1743         unsigned long timeout = msecs_to_jiffies(msecs) + 1;
1744
1745         while (timeout)
1746                 timeout = schedule_timeout_uninterruptible(timeout);
1747 }
1748
1749 EXPORT_SYMBOL(msleep);
1750
1751 /**
1752  * msleep_interruptible - sleep waiting for signals
1753  * @msecs: Time in milliseconds to sleep for
1754  */
1755 unsigned long msleep_interruptible(unsigned int msecs)
1756 {
1757         unsigned long timeout = msecs_to_jiffies(msecs) + 1;
1758
1759         while (timeout && !signal_pending(current))
1760                 timeout = schedule_timeout_interruptible(timeout);
1761         return jiffies_to_msecs(timeout);
1762 }
1763
1764 EXPORT_SYMBOL(msleep_interruptible);
1765
1766 static int __sched do_usleep_range(unsigned long min, unsigned long max)
1767 {
1768         ktime_t kmin;
1769         unsigned long delta;
1770
1771         kmin = ktime_set(0, min * NSEC_PER_USEC);
1772         delta = (max - min) * NSEC_PER_USEC;
1773         return schedule_hrtimeout_range(&kmin, delta, HRTIMER_MODE_REL);
1774 }
1775
1776 /**
1777  * usleep_range - Drop in replacement for udelay where wakeup is flexible
1778  * @min: Minimum time in usecs to sleep
1779  * @max: Maximum time in usecs to sleep
1780  */
1781 void usleep_range(unsigned long min, unsigned long max)
1782 {
1783         __set_current_state(TASK_UNINTERRUPTIBLE);
1784         do_usleep_range(min, max);
1785 }
1786 EXPORT_SYMBOL(usleep_range);