summaryrefslogtreecommitdiffstats
path: root/cpukit/posix/src/usleep.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2003-08-14 13:08:58 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2003-08-14 13:08:58 +0000
commitb56c1a3ab7c3215b5ca7d3e2a2a5473c35e16529 (patch)
treed0a4873c62a6e1bc417eb2e671d53543a4d81262 /cpukit/posix/src/usleep.c
parent41a530752cc7764eca8ff76cf83ef1e70b0371da (diff)
downloadrtems-b56c1a3ab7c3215b5ca7d3e2a2a5473c35e16529.tar.bz2
2003-08-14 Joel Sherrill <joel@OARcorp.com>
PR 92/rtems * Makefile.am, src/alarm.c, src/psignal.c: Added ualarm() and usleep(). * src/ualarm.c, src/usleep.c: New files.
Diffstat (limited to 'cpukit/posix/src/usleep.c')
-rw-r--r--cpukit/posix/src/usleep.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/cpukit/posix/src/usleep.c b/cpukit/posix/src/usleep.c
new file mode 100644
index 0000000000..6753cfe713
--- /dev/null
+++ b/cpukit/posix/src/usleep.c
@@ -0,0 +1,34 @@
+/*
+ * XXX 3.4.3 Delay Process Execution, P1003.1b-1993, p. 81
+ *
+ * $Id$
+ */
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <time.h>
+#include <unistd.h>
+
+#include <rtems/system.h>
+#include <rtems/score/tod.h>
+
+
+unsigned usleep(
+ unsigned int useconds
+)
+{
+ struct timespec tp;
+ struct timespec tm;
+ unsigned remaining;
+
+ tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;
+ tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;
+
+ nanosleep( &tp, &tm );
+
+ remaining = tm.tv_sec * TOD_MICROSECONDS_PER_SECOND;
+ remaining += tm.tv_nsec / 1000;
+ return remaining; /* seconds remaining */
+}