diff options
author | Chris Metcalf <cmetcalf@mellanox.com> | 2016-11-14 11:41:38 -0500 |
---|---|---|
committer | Chris Metcalf <cmetcalf@mellanox.com> | 2016-11-18 13:34:01 -0500 |
commit | 6933f28a64090760a1c1a731d89714265497ba83 (patch) | |
tree | bbb186b7d44ea26a063eb8a83f500be991d44ad9 /sysdeps/unix | |
parent | 8885f979096f46afd30188e92cefd492c3620787 (diff) | |
download | glibc-6933f28a64090760a1c1a731d89714265497ba83.tar.gz glibc-6933f28a64090760a1c1a731d89714265497ba83.tar.xz glibc-6933f28a64090760a1c1a731d89714265497ba83.zip |
Make tile's set_dataplane API compatibility-only
The set_dataplane() API in <sys/dataplane.h> originally supported the Tilera version of Linux as shipped to our customers. Once we started upstreaming the dataplane support in the kernel, the API changed to use fcntl() as part of the current task-isolation patch series. It doesn't seem like continuing to support the old API is useful for newly-compiled code, and even supporting the old glibc binary API on an upstream kernel that supports the new task isolation mode isn't straightforward, since the semantics have changed in ways that make it hard to map the old semantics precisely to the new ones, so just return ENOSYS.
Diffstat (limited to 'sysdeps/unix')
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/Makefile | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/set_dataplane.c | 13 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/sys/dataplane.h | 33 |
3 files changed, 9 insertions, 40 deletions
diff --git a/sysdeps/unix/sysv/linux/tile/Makefile b/sysdeps/unix/sysv/linux/tile/Makefile index 43acea3633..04605a69ac 100644 --- a/sysdeps/unix/sysv/linux/tile/Makefile +++ b/sysdeps/unix/sysv/linux/tile/Makefile @@ -8,8 +8,7 @@ sysdep_headers += sys/reg.h sysdep_headers += sys/cachectl.h sysdep_routines += cacheflush -# Control dataplane properties of current thread. -sysdep_headers += sys/dataplane.h +# Control dataplane properties of current thread (compatibility only). sysdep_routines += set_dataplane endif diff --git a/sysdeps/unix/sysv/linux/tile/set_dataplane.c b/sysdeps/unix/sysv/linux/tile/set_dataplane.c index 5a4bffe4f3..552716b60d 100644 --- a/sysdeps/unix/sysv/linux/tile/set_dataplane.c +++ b/sysdeps/unix/sysv/linux/tile/set_dataplane.c @@ -19,13 +19,13 @@ #include <errno.h> #include <stddef.h> #include <unistd.h> -#ifdef __NR_set_dataplane -#include <sys/dataplane.h> -#endif +#include <shlib-compat.h> -/* Request dataplane modes from the kernel. */ +/* Request dataplane modes from the kernel (compatibility only). */ +#if SHLIB_COMPAT (libc, GLIBC_2_12, GLIBC_2_25) int -set_dataplane (int flags) +attribute_compat_text_section +__old_set_dataplane (int flags) { #ifdef __NR_set_dataplane return INLINE_SYSCALL (set_dataplane, 1, flags); @@ -34,3 +34,6 @@ set_dataplane (int flags) return -1; #endif } + +compat_symbol (libc, __old_set_dataplane, set_dataplane, GLIBC_2_12); +#endif diff --git a/sysdeps/unix/sysv/linux/tile/sys/dataplane.h b/sysdeps/unix/sysv/linux/tile/sys/dataplane.h deleted file mode 100644 index 82677f1f5f..0000000000 --- a/sysdeps/unix/sysv/linux/tile/sys/dataplane.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 2011-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011. - - 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 - <http://www.gnu.org/licenses/>. */ - -#ifndef _SYS_DATAPLANE_H -#define _SYS_DATAPLANE_H 1 - -#include <features.h> - -/* Get the kernel definition for the flag bits. */ -#include <asm/dataplane.h> - -__BEGIN_DECLS - -extern int set_dataplane (int flags); - -__END_DECLS - -#endif /* sys/dataplane.h */ |