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.
This commit is contained in:
Chris Metcalf 2016-11-14 11:41:38 -05:00
parent 8885f97909
commit 6933f28a64
4 changed files with 18 additions and 40 deletions

View File

@ -1,3 +1,12 @@
2016-11-18 Chris Metcalf <cmetcalf@mellanox.com>
* sysdeps/unix/sysv/linux/tile/set_dataplane.c
(__old_set_dataplane): Rename from set_dataplane and make a
compatibility symbol.
* sysdeps/unix/sysv/linux/tile/sys/dataplane.h: Remove file.
* sysdeps/unix/sysv/linux/tile/Makefile (sysdep_headers): Remove
sys/dataplane.h.
2016-11-18 Joseph Myers <joseph@codesourcery.com>
* scripts/build-many-glibcs.py (Context.write_files): Make wrapper

View File

@ -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

View File

@ -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

View File

@ -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 */