mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-08 14:20:07 +00:00
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-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 \
|
||||
|
49
htl/semaphoreP.h
Normal file
49
htl/semaphoreP.h
Normal file
@ -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-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
|
||||
# (robust support against dead threads)
|
||||
test-xfail-tst-robust1 = yes
|
||||
|
Loading…
Reference in New Issue
Block a user