diff options
author | jeff <jeff@FreeBSD.org> | 2008-04-25 05:18:50 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2008-04-25 05:18:50 +0000 |
commit | 14b586bf964970197e12228d127a713b7db7abcb (patch) | |
tree | ae275695b8c2f48f9a96c11fe4405ef85fe1bc79 /sys/powerpc | |
parent | 3cd35a205135ce8a15349a035286650c3452cafd (diff) | |
download | FreeBSD-src-14b586bf964970197e12228d127a713b7db7abcb.zip FreeBSD-src-14b586bf964970197e12228d127a713b7db7abcb.tar.gz |
- Add an integer argument to idle to indicate how likely we are to wake
from idle over the next tick.
- Add a new MD routine, cpu_wake_idle() to wakeup idle threads who are
suspended in cpu specific states. This function can fail and cause the
scheduler to fall back to another mechanism (ipi).
- Implement support for mwait in cpu_idle() on i386/amd64 machines that
support it. mwait is a higher performance way to synchronize cpus
as compared to hlt & ipis.
- Allow selecting the idle routine by name via sysctl machdep.idle. This
replaces machdep.cpu_idle_hlt. Only idle routines supported by the
current machine are permitted.
Sponsored by: Nokia
Diffstat (limited to 'sys/powerpc')
-rw-r--r-- | sys/powerpc/aim/machdep.c | 9 | ||||
-rw-r--r-- | sys/powerpc/booke/machdep.c | 9 |
2 files changed, 16 insertions, 2 deletions
diff --git a/sys/powerpc/aim/machdep.c b/sys/powerpc/aim/machdep.c index d407314..15decb7 100644 --- a/sys/powerpc/aim/machdep.c +++ b/sys/powerpc/aim/machdep.c @@ -730,7 +730,7 @@ cpu_halt(void) } void -cpu_idle(void) +cpu_idle(int busy) { uint32_t msr; @@ -750,6 +750,13 @@ cpu_idle(void) } } +int +cpu_idle_wakeup(int cpu) +{ + + return (0); +} + /* * Set set up registers on exec. */ diff --git a/sys/powerpc/booke/machdep.c b/sys/powerpc/booke/machdep.c index 75e5cb6..132ce9c 100644 --- a/sys/powerpc/booke/machdep.c +++ b/sys/powerpc/booke/machdep.c @@ -696,7 +696,7 @@ freebsd4_sigreturn(struct thread *td, struct freebsd4_sigreturn_args *uap) * Set Wait state enable. */ void -cpu_idle (void) +cpu_idle (int busy) { register_t msr; @@ -723,6 +723,13 @@ cpu_idle (void) #endif } +int +cpu_idle_wakeup(int cpu) +{ + + return (0); +} + void spinlock_enter(void) { |