diff options
Diffstat (limited to 'htl')
-rw-r--r-- | htl/Makefile | 4 | ||||
-rw-r--r-- | htl/semaphoreP.h | 49 |
2 files changed, 51 insertions, 2 deletions
diff --git a/htl/Makefile b/htl/Makefile index 901deae5f9..7eccd7acf0 100644 --- a/htl/Makefile +++ b/htl/Makefile @@ -128,8 +128,8 @@ libpthread-routines := pt-attr pt-attr-destroy pt-attr-getdetachstate \ pt-getschedparam pt-setschedparam pt-setschedprio \ pt-yield \ \ - sem-close sem-destroy sem-getvalue sem-init sem-open \ - sem-post sem-timedwait sem-trywait sem-unlink \ + sem_close sem-destroy sem-getvalue sem-init sem_open \ + sem-post sem-timedwait sem-trywait sem_unlink \ sem-wait sem-waitfast \ \ shm-directory \ diff --git a/htl/semaphoreP.h b/htl/semaphoreP.h new file mode 100644 index 0000000000..22732122b0 --- /dev/null +++ b/htl/semaphoreP.h @@ -0,0 +1,49 @@ +/* Copyright (C) 2002-2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#include <semaphore.h> +#include "pt-internal.h" + +#define SEM_SHM_PREFIX "sem." + +/* Keeping track of currently used mappings. */ +struct inuse_sem +{ + dev_t dev; + ino_t ino; + int refcnt; + sem_t *sem; + char name[0]; +}; + + +/* The search tree for existing mappings. */ +extern void *__sem_mappings attribute_hidden; + +/* Lock to protect the search tree. */ +extern int __sem_mappings_lock attribute_hidden; + + +/* Comparison function for search in tree with existing mappings. */ +extern int __sem_search (const void *a, const void *b) attribute_hidden; + +static inline void __new_sem_open_init (struct new_sem *sem, unsigned value) +{ + /* This always is a shared semaphore. */ + *sem = (struct new_sem) __SEMAPHORE_INITIALIZER (1, value); +} |