summaryrefslogtreecommitdiffstats
path: root/sys/powerpc
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2008-04-25 05:18:50 +0000
committerjeff <jeff@FreeBSD.org>2008-04-25 05:18:50 +0000
commit14b586bf964970197e12228d127a713b7db7abcb (patch)
treeae275695b8c2f48f9a96c11fe4405ef85fe1bc79 /sys/powerpc
parent3cd35a205135ce8a15349a035286650c3452cafd (diff)
downloadFreeBSD-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.c9
-rw-r--r--sys/powerpc/booke/machdep.c9
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)
{
OpenPOWER on IntegriCloud