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

Igor Peshansky pechtcha@cs.nyu.edu
Tue Jun 6 23:23:00 GMT 2006


Thank you!
	Igor

On Tue, 6 Jun 2006, Jeff Johnston wrote:

> 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

-- 
				http://cs.nyu.edu/~pechtcha/
      |\      _,,,---,,_	    pechtcha@cs.nyu.edu | igor@watson.ibm.com
ZZZzz /,`.-'`'    -.  ;-;;,_		Igor Peshansky, Ph.D. (name changed!)
     |,4-  ) )-,_. ,\ (  `'-'		old name: Igor Pechtchanski
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

"Las! je suis sot... -Mais non, tu ne l'es pas, puisque tu t'en rends compte."
"But no -- you are no fool; you call yourself a fool, there's proof enough in
that!" -- Rostand, "Cyrano de Bergerac"



More information about the Newlib mailing list