diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-07-21 22:00:56 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-07-21 22:00:56 +0000 |
commit | 168660f24dfc46c2702acbe4701a446f42a59578 (patch) | |
tree | f431368afbf6b1b71809cf3fd904d800ea126f4d /kernel | |
parent | 6420f767924fa73b0ea267864d96820815f4ba5a (diff) |
Merge with Linux 2.4.0-test5-pre3.
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sys.c | 2 | ||||
-rw-r--r-- | kernel/timer.c | 19 |
2 files changed, 19 insertions, 2 deletions
diff --git a/kernel/sys.c b/kernel/sys.c index eea48d548..86827f285 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -250,7 +250,7 @@ asmlinkage long sys_getpriority(int which, int who) unsigned niceval; if (!proc_sel(p, which, who)) continue; - niceval = p->nice + 20; + niceval = 20 - p->nice; if (niceval < (unsigned)retval) retval = niceval; } diff --git a/kernel/timer.c b/kernel/timer.c index b94df1dc3..7688a56a4 100644 --- a/kernel/timer.c +++ b/kernel/timer.c @@ -162,7 +162,19 @@ static inline void internal_add_timer(struct timer_list *timer) /* Initialize both explicitly - let's try to have them in the same cache line */ spinlock_t timerlist_lock = SPIN_LOCK_UNLOCKED; -volatile struct timer_list *running_timer = NULL; +volatile struct timer_list * volatile running_timer = NULL; + +#ifdef CONFIG_SMP +#define timer_enter(t) do { running_timer = t; mb(); } while (0) +#define timer_exit() do { running_timer = NULL; } while (0) +#define timer_is_running(t) (running_timer == t) +#define timer_synchronize(t) while (timer_is_running(t)) barrier() +#else +#define timer_enter(t) do { } while (0) +#define timer_exit() do { } while (0) +#define timer_is_running(t) (0) +#define timer_synchronize(t) do { (void)(t); barrier(); } while(0) +#endif void add_timer(struct timer_list *timer) { @@ -216,6 +228,11 @@ int del_timer(struct timer_list * timer) } #ifdef CONFIG_SMP +void sync_timers(void) +{ + spin_unlock_wait(&global_bh_lock); +} + /* * SMP specific function to delete periodic timer. * Caller must disable by some means restarting the timer |