diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-12-13 15:20:32 +0000 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-12-16 14:27:25 +0100 |
commit | 749cd2ca7893702f762de9d9852a39973eb044a0 (patch) | |
tree | b49f025bb86f10220b87f3832cfefed404740b45 /htl | |
parent | a28296e778ad464d2ba6289446668c3d0dcf1236 (diff) | |
download | glibc-749cd2ca7893702f762de9d9852a39973eb044a0.tar.gz glibc-749cd2ca7893702f762de9d9852a39973eb044a0.tar.xz glibc-749cd2ca7893702f762de9d9852a39973eb044a0.zip |
htl: Get sem_open/sem_close/sem_unlink support [BZ #25524]
This just moves the existing nptl implementation to reuse as it is in htl.
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); +} |