diff options
| author | Len Brown <len.brown@intel.com> | 2004-12-21 12:07:45 -0500 |
|---|---|---|
| committer | Len Brown <len.brown@intel.com> | 2004-12-21 12:07:45 -0500 |
| commit | 91c4625dc3ff79740d46b1726c098ae0c50645fa (patch) | |
| tree | d229e093bf03b223620c461f9b87a09d15051a7e | |
| parent | 1c5e7c210e6212e7b9c74b8f3605bae4eabd1dde (diff) | |
| parent | 87f3243f8739f229fb38847b4fb84ca0d312efbe (diff) | |
Merge intel.com:/home/lenb/bk/26-latest-ref
into intel.com:/home/lenb/src/26-latest-dev
| -rw-r--r-- | drivers/usb/host/ehci-hub.c | 2 | ||||
| -rw-r--r-- | kernel/posix-timers.c | 119 | ||||
| -rw-r--r-- | mm/rmap.c | 3 | ||||
| -rw-r--r-- | mm/thrash.c | 5 |
4 files changed, 16 insertions, 113 deletions
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c index a9695086304f..6affe7d373ed 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c @@ -122,7 +122,7 @@ static int ehci_hub_resume (struct usb_hcd *hcd) writel (temp, &ehci->regs->port_status [i]); } i = HCS_N_PORTS (ehci->hcs_params); - msleep (20); + mdelay (20); while (i--) { temp = readl (&ehci->regs->port_status [i]); if ((temp & PORT_SUSPEND) == 0) diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c index f85765b9ba74..33a67e7ad826 100644 --- a/kernel/posix-timers.c +++ b/kernel/posix-timers.c @@ -10,10 +10,6 @@ * 2004-06-01 Fix CLOCK_REALTIME clock/timer TIMER_ABSTIME bug. * Copyright (C) 2004 Boris Hu * - * 2004-07-27 Provide POSIX compliant clocks - * CLOCK_PROCESS_CPUTIME_ID and CLOCK_THREAD_CPUTIME_ID. - * by Christoph Lameter - * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at @@ -193,8 +189,6 @@ static int do_posix_gettime(struct k_clock *clock, struct timespec *tp); static u64 do_posix_clock_monotonic_gettime_parts( struct timespec *tp, struct timespec *mo); int do_posix_clock_monotonic_gettime(struct timespec *tp); -static int do_posix_clock_process_gettime(struct timespec *tp); -static int do_posix_clock_thread_gettime(struct timespec *tp); static struct k_itimer *lock_timer(timer_t timer_id, unsigned long *flags); static inline void unlock_timer(struct k_itimer *timr, unsigned long flags) @@ -215,25 +209,9 @@ static __init int init_posix_timers(void) .clock_get = do_posix_clock_monotonic_gettime, .clock_set = do_posix_clock_nosettime }; - struct k_clock clock_thread = {.res = CLOCK_REALTIME_RES, - .abs_struct = NULL, - .clock_get = do_posix_clock_thread_gettime, - .clock_set = do_posix_clock_nosettime, - .timer_create = do_posix_clock_notimer_create, - .nsleep = do_posix_clock_nonanosleep - }; - struct k_clock clock_process = {.res = CLOCK_REALTIME_RES, - .abs_struct = NULL, - .clock_get = do_posix_clock_process_gettime, - .clock_set = do_posix_clock_nosettime, - .timer_create = do_posix_clock_notimer_create, - .nsleep = do_posix_clock_nonanosleep - }; register_posix_clock(CLOCK_REALTIME, &clock_realtime); register_posix_clock(CLOCK_MONOTONIC, &clock_monotonic); - register_posix_clock(CLOCK_PROCESS_CPUTIME_ID, &clock_process); - register_posix_clock(CLOCK_THREAD_CPUTIME_ID, &clock_thread); posix_timers_cache = kmem_cache_create("posix_timers_cache", sizeof (struct k_itimer), 0, 0, NULL, NULL); @@ -1220,69 +1198,18 @@ int do_posix_clock_nosettime(struct timespec *tp) return -EINVAL; } -int do_posix_clock_notimer_create(struct k_itimer *timer) { - return -EINVAL; -} - -int do_posix_clock_nonanosleep(int which_lock, int flags,struct timespec * t) { -/* Single Unix specficiation says to return ENOTSUP but we do not have that */ - return -EINVAL; -} - -static unsigned long process_ticks(task_t *p) { - unsigned long ticks; - task_t *t; - - spin_lock(&p->sighand->siglock); - /* The signal structure is shared between all threads */ - ticks = p->signal->utime + p->signal->stime; - - /* Add up the cpu time for all the still running threads of this process */ - t = p; - do { - ticks += t->utime + t->stime; - t = next_thread(t); - } while (t != p); - - spin_unlock(&p->sighand->siglock); - return ticks; -} - -static inline unsigned long thread_ticks(task_t *p) { - return p->utime + current->stime; -} - -/* - * Single Unix Specification V3: - * - * Implementations shall also support the special clockid_t value - * CLOCK_THREAD_CPUTIME_ID, which represents the CPU-time clock of the calling - * thread when invoking one of the clock_*() or timer_*() functions. For these - * clock IDs, the values returned by clock_gettime() and specified by - * clock_settime() shall represent the amount of execution time of the thread - * associated with the clock. - */ -static int do_posix_clock_thread_gettime(struct timespec *tp) +int do_posix_clock_notimer_create(struct k_itimer *timer) { - jiffies_to_timespec(thread_ticks(current), tp); - return 0; + return -EINVAL; } -/* - * Single Unix Specification V3: - * - * Implementations shall also support the special clockid_t value - * CLOCK_PROCESS_CPUTIME_ID, which represents the CPU-time clock of the - * calling process when invoking one of the clock_*() or timer_*() functions. - * For these clock IDs, the values returned by clock_gettime() and specified - * by clock_settime() represent the amount of execution time of the process - * associated with the clock. - */ - -static int do_posix_clock_process_gettime(struct timespec *tp) +int do_posix_clock_nonanosleep(int which_clock, int flags, struct timespec *t) { - jiffies_to_timespec(process_ticks(current), tp); - return 0; +#ifndef ENOTSUP + return -EOPNOTSUPP; /* aka ENOTSUP in userland for POSIX */ +#else /* parisc does define it separately. */ + return -ENOTSUP; +#endif } asmlinkage long @@ -1290,10 +1217,6 @@ sys_clock_settime(clockid_t which_clock, const struct timespec __user *tp) { struct timespec new_tp; - /* Cannot set process specific clocks */ - if (which_clock<0) - return -EINVAL; - if ((unsigned) which_clock >= MAX_CLOCKS || !posix_clocks[which_clock].res) return -EINVAL; @@ -1307,29 +1230,6 @@ sys_clock_settime(clockid_t which_clock, const struct timespec __user *tp) static int do_clock_gettime(clockid_t which_clock, struct timespec *tp) { - /* Process process specific clocks */ - if (which_clock < 0) { - task_t *t; - int pid = -which_clock; - - if (pid < PID_MAX_LIMIT) { - if ((t = find_task_by_pid(pid))) { - jiffies_to_timespec(process_ticks(t), tp); - return 0; - } - return -EINVAL; - } - if (pid < 2*PID_MAX_LIMIT) { - if ((t = find_task_by_pid(pid - PID_MAX_LIMIT))) { - jiffies_to_timespec(thread_ticks(t), tp); - return 0; - } - return -EINVAL; - } - /* More process specific clocks could follow here */ - return -EINVAL; - } - if ((unsigned) which_clock >= MAX_CLOCKS || !posix_clocks[which_clock].res) return -EINVAL; @@ -1356,9 +1256,6 @@ sys_clock_getres(clockid_t which_clock, struct timespec __user *tp) { struct timespec rtn_tp; - /* All process clocks have the resolution of CLOCK_PROCESS_CPUTIME_ID */ - if (which_clock < 0 ) which_clock = CLOCK_PROCESS_CPUTIME_ID; - if ((unsigned) which_clock >= MAX_CLOCKS || !posix_clocks[which_clock].res) return -EINVAL; diff --git a/mm/rmap.c b/mm/rmap.c index 83c86c2de4e5..a30ebc47127b 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -395,6 +395,9 @@ int page_referenced(struct page *page, int is_locked, int ignore_token) { int referenced = 0; + if (!swap_token_default_timeout) + ignore_token = 1; + if (page_test_and_clear_young(page)) referenced++; diff --git a/mm/thrash.c b/mm/thrash.c index b6b7360a8b34..985b6bbe964d 100644 --- a/mm/thrash.c +++ b/mm/thrash.c @@ -19,7 +19,10 @@ unsigned long swap_token_check; struct mm_struct * swap_token_mm = &init_mm; #define SWAP_TOKEN_CHECK_INTERVAL (HZ * 2) -#define SWAP_TOKEN_TIMEOUT (HZ * 300) +#define SWAP_TOKEN_TIMEOUT 0 +/* + * Currently disabled; Needs further code to work at HZ * 300. + */ unsigned long swap_token_default_timeout = SWAP_TOKEN_TIMEOUT; /* |
