This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] libc/posix: Add mkfifo, sleep, and usleep


Checked in.

-- Jeff J.

Igor Peshansky wrote:
Jeff,

You seem to have forgotten to "cvs add" sleep.c and usleep.c.  This breaks
the Cygwin cvs build.  Could you please check those files in as well?
Thanks,
	Igor

On Mon, 5 Jun 2006, Jeff Johnston wrote:


I have checked in this patch, sans the configure.host changes.  It is
not correct to set the flag on generally for these platforms.  You must
have a local fix in your configure.host to be using the libc/posix
directory so I think it more appropriate for the time-being that you
should also have the -DHAVE_NANOSLEEP change locally as well or specify
it with your build flags.

-- Jeff J.

Shaun Jackman wrote:

On 6/1/06, Jeff Johnston wrote:


If we protect the sleep functions with a check for HAVE_NANOSLEEP, then
this would be fine.  The three users of the libc/posix dir right now are


I've defined -DHAVE_NANOSLEEP for arm/thumb/xscale. ARM
(-lgloss-linux) is the only configuration that provides nanosleep. It
shouldn't harm the others though.

Cheers,
Shaun

2006-06-02 Shaun Jackman <sjackman@gmail.com>

   * configure.host (newlib_cflags) [arm, thumb, xscale]: Add
   -DHAVE_NANOSLEEP.
   * libc/posix/Makefile.am (GENERAL_SOURCES): Add sleep.c and
   usleep.c.
   * libc/posix/Makefile.in: Regenerate.
   * libc/posix/sleep.c: New file.
   * libc/posix/usleep.c: Ditto.

Index: configure.host
===================================================================
RCS file: /cvs/src/src/newlib/configure.host,v
retrieving revision 1.81
diff -u -r1.81 configure.host
--- configure.host    13 Apr 2006 19:56:23 -0000    1.81
+++ configure.host    2 Jun 2006 15:17:55 -0000
@@ -514,7 +514,7 @@
   ;;
 arm-*-*)
    syscall_dir=syscalls
-    newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY"
+    newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY
-DHAVE_NANOSLEEP"
# If newlib is supplying syscalls, select which debug protocol is being
used.
# ARM_RDP_MONITOR selects the Demon monitor.
# ARM_RDI_MONITOR selects the Angel monitor.
@@ -669,7 +669,7 @@
   ;;
 thumb-*-*)
    syscall_dir=syscalls
-    newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY"
+    newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY
-DHAVE_NANOSLEEP"
# If newlib is supplying syscalls, select which debug protocol is being
used.
# ARM_RDP_MONITOR selects the Demon monitor.
# ARM_RDI_MONITOR selects the Angel monitor.
@@ -700,7 +700,7 @@
   ;;     xscale-*-*)
    syscall_dir=syscalls
-    newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY"
+    newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY
-DHAVE_NANOSLEEP"
   newlib_cflags="${newlib_cflags} -DHAVE_SYSTEM -DHAVE_RENAME"
    if [ "x${newlib_may_supply_syscalls}" = "xyes" ] ; then
     newlib_cflags="${newlib_cflags} -DARM_RDI_MONITOR"
Index: libc/posix/Makefile.am
===================================================================
RCS file: /cvs/src/src/newlib/libc/posix/Makefile.am,v
retrieving revision 1.6
diff -u -r1.6 Makefile.am
--- libc/posix/Makefile.am    1 May 2006 22:01:02 -0000    1.6
+++ libc/posix/Makefile.am    2 Jun 2006 15:19:22 -0000
@@ -7,7 +7,8 @@
GENERAL_SOURCES = \
    closedir.c creat.c isatty.c \
    opendir.c readdir.c \
-    readdir_r.c rewinddir.c telldir.c
+    readdir_r.c rewinddir.c sleep.c usleep.c \
+    telldir.c

ELIX_2_SOURCES = \
       scandir.c seekdir.c
--- /dev/null    2006-05-29 10:11:53.893844952 -0600
+++ libc/posix/sleep.c    2006-06-02 09:14:18.000000000 -0600
@@ -0,0 +1,22 @@
+/* libc/posix/sleep.c - sleep function */
+
+/* Written 2000 by Werner Almesberger */
+
+#ifdef HAVE_NANOSLEEP
+
+#include <errno.h>
+#include <time.h>
+#include <unistd.h>
+
+unsigned sleep(unsigned seconds)
+{
+    struct timespec ts;
+
+    ts.tv_sec = seconds;
+    ts.tv_nsec = 0;
+    if (!nanosleep(&ts,&ts)) return 0;
+    if (errno == EINTR) return ts.tv_sec;
+    return -1;
+}
+
+#endif
--- /dev/null    2006-05-29 10:11:53.893844952 -0600
+++ libc/posix/usleep.c    2006-06-02 09:14:30.000000000 -0600
@@ -0,0 +1,22 @@
+/* libc/posix/usleep.c - usleep function */
+
+/* Written 2002 by Jeff Johnston */
+
+#ifdef HAVE_NANOSLEEP
+
+#include <errno.h>
+#include <time.h>
+#include <unistd.h>
+
+int usleep(useconds_t useconds)
+{
+    struct timespec ts;
+
+    ts.tv_sec = (long int)useconds / 1000000;
+    ts.tv_nsec = ((long int)useconds % 1000000) * 1000;
+    if (!nanosleep(&ts,&ts)) return 0;
+    if (errno == EINTR) return ts.tv_sec;
+    return -1;
+}
+
+#endif


------------------------------------------------------------------------


2006-06-02 Shaun Jackman <sjackman@gmail.com>

	* configure.host (newlib_cflags) [arm, thumb, xscale]: Add
	-DHAVE_NANOSLEEP.
	* libc/posix/Makefile.am (GENERAL_SOURCES): Add sleep.c and
	usleep.c.
	* libc/posix/Makefile.in: Regenerate.
	* libc/posix/sleep.c: New file.
	* libc/posix/usleep.c: Ditto.

Index: configure.host
===================================================================
RCS file: /cvs/src/src/newlib/configure.host,v
retrieving revision 1.81
diff -u -r1.81 configure.host
--- configure.host	13 Apr 2006 19:56:23 -0000	1.81
+++ configure.host	2 Jun 2006 15:17:55 -0000
@@ -514,7 +514,7 @@
	;;
  arm-*-*)
	syscall_dir=syscalls
-	newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY"
+	newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY
-DHAVE_NANOSLEEP"
# If newlib is supplying syscalls, select which debug protocol is being
used.
# ARM_RDP_MONITOR selects the Demon monitor.
# ARM_RDI_MONITOR selects the Angel monitor.
@@ -669,7 +669,7 @@
	;;
  thumb-*-*)
	syscall_dir=syscalls
-	newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY"
+	newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY
-DHAVE_NANOSLEEP"
# If newlib is supplying syscalls, select which debug protocol is being
used.
# ARM_RDP_MONITOR selects the Demon monitor.
# ARM_RDI_MONITOR selects the Angel monitor.
@@ -700,7 +700,7 @@
	;;	   xscale-*-*)
	syscall_dir=syscalls
-	newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY"
+	newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY
-DHAVE_NANOSLEEP"
	newlib_cflags="${newlib_cflags} -DHAVE_SYSTEM -DHAVE_RENAME"
	if [ "x${newlib_may_supply_syscalls}" = "xyes" ] ; then
	  newlib_cflags="${newlib_cflags} -DARM_RDI_MONITOR"
Index: libc/posix/Makefile.am
===================================================================
RCS file: /cvs/src/src/newlib/libc/posix/Makefile.am,v
retrieving revision 1.6
diff -u -r1.6 Makefile.am
--- libc/posix/Makefile.am	1 May 2006 22:01:02 -0000	1.6
+++ libc/posix/Makefile.am	2 Jun 2006 15:19:22 -0000
@@ -7,7 +7,8 @@
GENERAL_SOURCES = \
	closedir.c creat.c isatty.c \
	opendir.c readdir.c \
-	readdir_r.c rewinddir.c telldir.c
+	readdir_r.c rewinddir.c sleep.c usleep.c \
+	telldir.c
 ELIX_2_SOURCES = \
        scandir.c seekdir.c
--- /dev/null	2006-05-29 10:11:53.893844952 -0600
+++ libc/posix/sleep.c	2006-06-02 09:14:18.000000000 -0600
@@ -0,0 +1,22 @@
+/* libc/posix/sleep.c - sleep function */
+
+/* Written 2000 by Werner Almesberger */
+
+#ifdef HAVE_NANOSLEEP
+
+#include <errno.h>
+#include <time.h>
+#include <unistd.h>
+
+unsigned sleep(unsigned seconds)
+{
+    struct timespec ts;
+
+    ts.tv_sec = seconds;
+    ts.tv_nsec = 0;
+    if (!nanosleep(&ts,&ts)) return 0;
+    if (errno == EINTR) return ts.tv_sec;
+    return -1;
+}
+
+#endif
--- /dev/null	2006-05-29 10:11:53.893844952 -0600
+++ libc/posix/usleep.c	2006-06-02 09:14:30.000000000 -0600
@@ -0,0 +1,22 @@
+/* libc/posix/usleep.c - usleep function */
+
+/* Written 2002 by Jeff Johnston */
+
+#ifdef HAVE_NANOSLEEP
+
+#include <errno.h>
+#include <time.h>
+#include <unistd.h>
+
+int usleep(useconds_t useconds)
+{
+    struct timespec ts;
+
+    ts.tv_sec = (long int)useconds / 1000000;
+    ts.tv_nsec = ((long int)useconds % 1000000) * 1000;
+    if (!nanosleep(&ts,&ts)) return 0;
+    if (errno == EINTR) return ts.tv_sec;
+    return -1;
+}
+
+#endif





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]