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


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"


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