diff options
Diffstat (limited to 'arch/i386')
-rw-r--r-- | arch/i386/defconfig | 7 | ||||
-rw-r--r-- | arch/i386/kernel/apic.c | 2 | ||||
-rw-r--r-- | arch/i386/kernel/entry.S | 4 | ||||
-rw-r--r-- | arch/i386/kernel/process.c | 2 | ||||
-rw-r--r-- | arch/i386/kernel/time.c | 16 |
5 files changed, 14 insertions, 17 deletions
diff --git a/arch/i386/defconfig b/arch/i386/defconfig index 068aceaf2..35444fef3 100644 --- a/arch/i386/defconfig +++ b/arch/i386/defconfig @@ -45,6 +45,7 @@ CONFIG_NOHIGHMEM=y # CONFIG_MATH_EMULATION is not set # CONFIG_MTRR is not set CONFIG_SMP=y +CONFIG_HAVE_DEC_LOCK=y # # Loadable module support @@ -141,14 +142,10 @@ CONFIG_INET=y # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE is not set # CONFIG_IP_ALIAS is not set +# CONFIG_INET_ECN is not set # CONFIG_SYN_COOKIES is not set # -# (it is safe to leave these untouched) -# -CONFIG_SKB_LARGE=y - -# # # # CONFIG_IPX is not set diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c index 88d571654..0600d91a9 100644 --- a/arch/i386/kernel/apic.c +++ b/arch/i386/kernel/apic.c @@ -589,7 +589,7 @@ static inline void handle_smp_time (int user, int cpu) p->counter = 0; p->need_resched = 1; } - if (p->priority < DEF_PRIORITY) { + if (p->nice > 0) { kstat.cpu_nice += user; kstat.per_cpu_nice[cpu] += user; } else { diff --git a/arch/i386/kernel/entry.S b/arch/i386/kernel/entry.S index 660a9e1fb..da7fd047d 100644 --- a/arch/i386/kernel/entry.S +++ b/arch/i386/kernel/entry.S @@ -77,8 +77,8 @@ sigpending = 8 addr_limit = 12 exec_domain = 16 need_resched = 20 -processor = 48 -tsk_ptrace = 56 +tsk_ptrace = 24 +processor = 52 ENOSYS = 38 diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c index e240cc79a..83ec9d192 100644 --- a/arch/i386/kernel/process.c +++ b/arch/i386/kernel/process.c @@ -123,7 +123,7 @@ void cpu_idle (void) { /* endless idle loop with no priority at all */ init_idle(); - current->priority = 0; + current->nice = 20; current->counter = -100; while (1) { diff --git a/arch/i386/kernel/time.c b/arch/i386/kernel/time.c index a009a428b..4bb184112 100644 --- a/arch/i386/kernel/time.c +++ b/arch/i386/kernel/time.c @@ -79,7 +79,7 @@ static unsigned long last_tsc_low; /* lsb 32 bits of Time Stamp Counter */ unsigned long fast_gettimeoffset_quotient=0; extern rwlock_t xtime_lock; -extern volatile unsigned long lost_ticks; +extern unsigned long wall_jiffies; spinlock_t rtc_lock = SPIN_LOCK_UNLOCKED; @@ -262,7 +262,7 @@ void do_gettimeofday(struct timeval *tv) read_lock_irqsave(&xtime_lock, flags); usec = do_gettimeoffset(); { - unsigned long lost = lost_ticks; + unsigned long lost = jiffies - wall_jiffies; if (lost) usec += lost * (1000000 / HZ); } @@ -282,14 +282,14 @@ void do_gettimeofday(struct timeval *tv) void do_settimeofday(struct timeval *tv) { write_lock_irq(&xtime_lock); - /* This is revolting. We need to set the xtime.tv_usec - * correctly. However, the value in this location is - * is value at the last tick. - * Discover what correction gettimeofday - * would have done, and then undo it! + /* + * This is revolting. We need to set "xtime" correctly. However, the + * value in this location is the value at the most recent update of + * wall time. Discover what correction gettimeofday() would have + * made, and then undo it! */ tv->tv_usec -= do_gettimeoffset(); - tv->tv_usec -= lost_ticks * (1000000 / HZ); + tv->tv_usec -= (jiffies - wall_jiffies) * (1000000 / HZ); while (tv->tv_usec < 0) { tv->tv_usec += 1000000; |