From patchwork Mon Mar 18 12:37:33 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yann Droneaud X-Patchwork-Id: 31880 Received: (qmail 121047 invoked by alias); 18 Mar 2019 12:37:47 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 120047 invoked by uid 89); 18 Mar 2019 12:37:46 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_LOW, SPF_SOFTFAIL autolearn=ham version=3.3.1 spammy=Open, SEM, sem, HContent-Transfer-Encoding:8bit X-HELO: smtp1-g21.free.fr From: Yann Droneaud To: libc-alpha@sourceware.org Cc: Yann Droneaud Subject: [PATCH] : Add nonnull attributes Date: Mon, 18 Mar 2019 13:37:33 +0100 Message-Id: <20190318123733.1365787-1-ydroneaud@opteya.com> MIME-Version: 1.0 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. --- sysdeps/pthread/semaphore.h | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h index 41ff92765e32..87c054392c58 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