[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