summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-07-21 22:00:56 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-07-21 22:00:56 +0000
commit168660f24dfc46c2702acbe4701a446f42a59578 (patch)
treef431368afbf6b1b71809cf3fd904d800ea126f4d /kernel
parent6420f767924fa73b0ea267864d96820815f4ba5a (diff)
Merge with Linux 2.4.0-test5-pre3.
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sys.c2
-rw-r--r--kernel/timer.c19
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