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

Jeff Johnston jjohnstn@redhat.com
Tue Jun 6 21:08:00 GMT 2006


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
>>>
>>
> 



More information about the Newlib mailing list