Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sun, 07 Sep 2014 16:52:07 +0200
From: Jens Gustedt <jens.gustedt@...ia.fr>
To: musl@...ts.openwall.com
Subject: Re: [PATCH 7/9] add the thrd_xxxxxx functions

Am Sonntag, den 07.09.2014, 10:24 -0400 schrieb Rich Felker:
> > diff --git a/src/thread/thrd_current.c b/src/thread/thrd_current.c
> > new file mode 100644
> > index 0000000..d9dabde
> > --- /dev/null
> > +++ b/src/thread/thrd_current.c
> > @@ -0,0 +1,11 @@
> > +#include "pthread_impl.h"
> > +#include <threads.h>
> > +
> > +/* Not all arch have __pthread_self as a symbol. On some this results
> > +   in some magic. So this "call" to __pthread_self is not necessary a
> > +   tail call. In particular, other than the appearance, thrd_current
> > +   can not be implemented as a weak symbol. */
> > +thrd_t thrd_current()
> > +{
> > +	return __pthread_self();
> > +}
> 
> Moved this to an alias.

Did you read the comment? I think that this would be a bug. As the
comment indicates, there is at least one arch variant that hasn't a
symbol __pthread_self so you can't use that as an alias.

> > diff --git a/src/time/thrd_sleep.c b/src/time/thrd_sleep.c
> > index 3dbfe47..d8eaafd 100644
> > --- a/src/time/thrd_sleep.c
> > +++ b/src/time/thrd_sleep.c
> > @@ -5,21 +5,21 @@
> >  #include "threads.h"
> >  
> >  /* Roughly __syscall already returns the right thing: 0 if all went
> > -   well or a negative error indication, otherwise. */
> > + * well or a negative error indication, otherwise. */
> >  int thrd_sleep(const struct timespec *req, struct timespec *rem)
> >  {
> >  	int ret = __syscall(SYS_nanosleep, req, rem);
> >  	switch (ret) {
> >  	case 0:
> >  		return 0;
> > -		/* error described by POSIX:                                    */
> > -		/* EINTR  The nanosleep() function was interrupted by a signal. */
> > -		/* The C11 wording is:                                          */
> > -		/* -1 if it has been interrupted by a signal                    */
> > +		/* error described by POSIX:
> > +		 * EINTR  The nanosleep() function was interrupted by a signal.
> > +		 * The C11 wording is:
> > +		 * -1 if it has been interrupted by a signal */
> >  	case -EINTR:
> >  		return -1;
> > -		/* EINVAL: described by POSIX */
> > -		/* EFAULT: described for linux */
> > +		/* EINVAL: described by POSIX
> > +		 * EFAULT: described for linux */
> >  	default:
> >  		return -2;
> >  	}
> > -- 
> > 1.7.10.4
> 
> This diff didn't apply since I didn't add the original version, but I
> think leaving it as two commits like you did was unintended anyway.
> I'm applying roughly the new version, but with some fixups to include
> directives, and less detail in comments.
> 
> BTW looking at the spec again, I see that C11 does not seem to require
> the negative return value for other errors to be distinct from -1.

oh, yes

> Obviously it's desirable to be distinct though. Perhaps this should be
> filed as another bug against C11, if you don't have it on your list
> already...

what a mess

Jens

-- 
:: INRIA Nancy Grand Est ::: AlGorille ::: ICube/ICPS :::
:: ::::::::::::::: office Strasbourg : +33 368854536   ::
:: :::::::::::::::::::::: gsm France : +33 651400183   ::
:: ::::::::::::::: gsm international : +49 15737185122 ::
:: http://icube-icps.unistra.fr/index.php/Jens_Gustedt ::



Download attachment "signature.asc" of type "application/pgp-signature" (199 bytes)

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.