summaryrefslogtreecommitdiff
path: root/digital/ucoolib/ucoolib/arch/arch.host.cc
diff options
context:
space:
mode:
authorNicolas Schodet2013-03-02 02:11:48 +0100
committerNicolas Schodet2013-03-02 02:11:48 +0100
commitbf2856a0e14daed33e1055ab5f24393d53e40250 (patch)
tree7db8c1f3d97c4b5bd478f54fe5f3f4705f80c83e /digital/ucoolib/ucoolib/arch/arch.host.cc
parent65a16247612b2508deaaad6870a3919d96f8a67a (diff)
digital/ucoolib/ucoolib/arch: add yield to save CPU cycles on host
Diffstat (limited to 'digital/ucoolib/ucoolib/arch/arch.host.cc')
-rw-r--r--digital/ucoolib/ucoolib/arch/arch.host.cc13
1 files changed, 13 insertions, 0 deletions
diff --git a/digital/ucoolib/ucoolib/arch/arch.host.cc b/digital/ucoolib/ucoolib/arch/arch.host.cc
index 1e242544..ed8c503e 100644
--- a/digital/ucoolib/ucoolib/arch/arch.host.cc
+++ b/digital/ucoolib/ucoolib/arch/arch.host.cc
@@ -26,6 +26,8 @@
#include <cstdlib>
#include <cstdio>
+#include <time.h>
+#include <errno.h>
namespace ucoo {
@@ -60,4 +62,15 @@ halt_perror ()
abort ();
}
+void
+yield ()
+{
+ // Do a small delay.
+ struct timespec ts;
+ ts.tv_sec = 0;
+ ts.tv_nsec = 100 * 1000 * 1000;
+ while (nanosleep (&ts, &ts) == -1 && errno == EINTR)
+ ;
+}
+
} // namespace ucoo