mirror of git://sourceware.org/git/glibc.git
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.
This commit is contained in:
parent
a28296e778
commit
749cd2ca78
|
@ -128,8 +128,8 @@ libpthread-routines := pt-attr pt-attr-destroy pt-attr-getdetachstate \
|
||||||
pt-getschedparam pt-setschedparam pt-setschedprio \
|
pt-getschedparam pt-setschedparam pt-setschedprio \
|
||||||
pt-yield \
|
pt-yield \
|
||||||
\
|
\
|
||||||
sem-close sem-destroy sem-getvalue sem-init sem-open \
|
sem_close sem-destroy sem-getvalue sem-init sem_open \
|
||||||
sem-post sem-timedwait sem-trywait sem-unlink \
|
sem-post sem-timedwait sem-trywait sem_unlink \
|
||||||
sem-wait sem-waitfast \
|
sem-wait sem-waitfast \
|
||||||
\
|
\
|
||||||
shm-directory \
|
shm-directory \
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
|
@ -1,31 +0,0 @@
|
||||||
/* Close a named semaphore. Generic version.
|
|
||||||
Copyright (C) 2005-2020 Free Software Foundation, Inc.
|
|
||||||
This file is part of the GNU C Library.
|
|
||||||
|
|
||||||
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 <errno.h>
|
|
||||||
|
|
||||||
#include <pt-internal.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
__sem_close (sem_t *sem)
|
|
||||||
{
|
|
||||||
errno = EOPNOTSUPP;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
strong_alias (__sem_close, sem_close);
|
|
|
@ -1,31 +0,0 @@
|
||||||
/* Open a named semaphore. Generic version.
|
|
||||||
Copyright (C) 2005-2020 Free Software Foundation, Inc.
|
|
||||||
This file is part of the GNU C Library.
|
|
||||||
|
|
||||||
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 <errno.h>
|
|
||||||
|
|
||||||
#include <pt-internal.h>
|
|
||||||
|
|
||||||
sem_t *
|
|
||||||
__sem_open (const char *name, int open_flags, ...)
|
|
||||||
{
|
|
||||||
errno = ENOSYS;
|
|
||||||
return SEM_FAILED;
|
|
||||||
}
|
|
||||||
|
|
||||||
strong_alias (__sem_open, sem_open);
|
|
|
@ -1,31 +0,0 @@
|
||||||
/* Unlink a named semaphore. Generic version.
|
|
||||||
Copyright (C) 2005-2020 Free Software Foundation, Inc.
|
|
||||||
This file is part of the GNU C Library.
|
|
||||||
|
|
||||||
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 <errno.h>
|
|
||||||
|
|
||||||
#include <pt-internal.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
__sem_unlink (const char *name)
|
|
||||||
{
|
|
||||||
errno = EOPNOTSUPP;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
strong_alias (__sem_unlink, sem_unlink);
|
|
|
@ -129,13 +129,6 @@ test-xfail-tst-signal2 = yes
|
||||||
test-xfail-tst-cond24 = yes
|
test-xfail-tst-cond24 = yes
|
||||||
test-xfail-tst-cond25 = yes
|
test-xfail-tst-cond25 = yes
|
||||||
|
|
||||||
# For bug 25524
|
|
||||||
# (sem_open support)
|
|
||||||
test-xfail-tst-sem4 = yes
|
|
||||||
test-xfail-tst-sem7 = yes
|
|
||||||
test-xfail-tst-sem8 = yes
|
|
||||||
test-xfail-tst-sem9 = yes
|
|
||||||
|
|
||||||
# For bug 25563
|
# For bug 25563
|
||||||
# (robust support against dead threads)
|
# (robust support against dead threads)
|
||||||
test-xfail-tst-robust1 = yes
|
test-xfail-tst-robust1 = yes
|
||||||
|
|
Loading…
Reference in New Issue