diff options
author | Yann Droneaud <ydroneaud@opteya.com> | 2019-04-29 10:11:35 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2019-04-29 10:11:35 +0200 |
commit | f492fc99f48e1a4fe99d9014f92b91fd3fc18fb0 (patch) | |
tree | d82a56561675845f7643f909f68169b43d89aa11 | |
parent | c57afec0a9b318bb691e0f5fa4e9681cf30df7a4 (diff) | |
download | glibc-f492fc99f48e1a4fe99d9014f92b91fd3fc18fb0.tar.gz glibc-f492fc99f48e1a4fe99d9014f92b91fd3fc18fb0.tar.xz glibc-f492fc99f48e1a4fe99d9014f92b91fd3fc18fb0.zip |
<semaphore.h>: Add nonnull attributes
Except the following functions, NPTL implementation assume sem_t argument (or other arguments) are not NULL, so they would benefit from having the nonnull attribute. - sem_close(): can cope with a NULL sem_t and return -1 with error EINVAL; - sem_destroy(): does nothing at all * sysdeps/pthread/semaphore.h (sem_init): Add __nonnull attribute. (sem_destroy, sem_open, sem_close, sem_unlink): Likewise. (sem_wait, sem_timedwait, sem_trywait, sem_post): Likewise. (sem_getvalue): Likewise.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | sysdeps/pthread/semaphore.h | 23 |
2 files changed, 20 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog index aac356bb69..639538dd4e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2019-04-29 Yann Droneaud <ydroneaud@opteya.com> + + * sysdeps/pthread/semaphore.h (sem_init): Add __nonnull attribute. + (sem_destroy, sem_open, sem_close, sem_unlink): Likewise. + (sem_wait, sem_timedwait, sem_trywait, sem_post): Likewise. + (sem_getvalue): Likewise. + 2019-04-26 Florian Weimer <fweimer@redhat.com> elf: Link sotruss-lib.so with BIND_NOW for --enable-bind-now. diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h index 41ff92765e..87c054392c 100644 --- a/sysdeps/pthread/semaphore.h +++ b/sysdeps/pthread/semaphore.h @@ -33,24 +33,26 @@ __BEGIN_DECLS /* Initialize semaphore object SEM to VALUE. If PSHARED then share it with other processes. */ extern int sem_init (sem_t *__sem, int __pshared, unsigned int __value) - __THROW; + __THROW __nonnull ((1)); + /* Free resources associated with semaphore object SEM. */ -extern int sem_destroy (sem_t *__sem) __THROW; +extern int sem_destroy (sem_t *__sem) __THROW __nonnull ((1)); /* Open a named semaphore NAME with open flags OFLAG. */ -extern sem_t *sem_open (const char *__name, int __oflag, ...) __THROW; +extern sem_t *sem_open (const char *__name, int __oflag, ...) + __THROW __nonnull ((1)); /* Close descriptor for named semaphore SEM. */ -extern int sem_close (sem_t *__sem) __THROW; +extern int sem_close (sem_t *__sem) __THROW __nonnull ((1)); /* Remove named semaphore NAME. */ -extern int sem_unlink (const char *__name) __THROW; +extern int sem_unlink (const char *__name) __THROW __nonnull ((1)); /* Wait for SEM being posted. This function is a cancellation point and therefore not marked with __THROW. */ -extern int sem_wait (sem_t *__sem); +extern int sem_wait (sem_t *__sem) __nonnull ((1)); #ifdef __USE_XOPEN2K /* Similar to `sem_wait' but wait only until ABSTIME. @@ -58,18 +60,19 @@ extern int sem_wait (sem_t *__sem); This function is a cancellation point and therefore not marked with __THROW. */ extern int sem_timedwait (sem_t *__restrict __sem, - const struct timespec *__restrict __abstime); + const struct timespec *__restrict __abstime) + __nonnull ((1, 2)); #endif /* Test whether SEM is posted. */ -extern int sem_trywait (sem_t *__sem) __THROWNL; +extern int sem_trywait (sem_t *__sem) __THROWNL __nonnull ((1)); /* Post SEM. */ -extern int sem_post (sem_t *__sem) __THROWNL; +extern int sem_post (sem_t *__sem) __THROWNL __nonnull ((1)); /* Get current value of SEM and store it in *SVAL. */ extern int sem_getvalue (sem_t *__restrict __sem, int *__restrict __sval) - __THROW; + __THROW __nonnull ((1, 2)); __END_DECLS |