linux: Add generic ioctl implementation
Checks
Context |
Check |
Description |
dj/TryBot-apply_patch |
success
|
Patch applied to master at the time it was sent
|
dj/TryBot-32bit |
success
|
Build for i686
|
Commit Message
The powerpc is refactor to use the default implementation.
---
sysdeps/unix/sysv/linux/internal-ioctl.h | 23 +++++++
sysdeps/unix/sysv/linux/ioctl.c | 49 +++++++++++++
.../unix/sysv/linux/powerpc/internal-ioctl.h | 46 +++++++++++++
sysdeps/unix/sysv/linux/powerpc/ioctl.c | 68 -------------------
4 files changed, 118 insertions(+), 68 deletions(-)
create mode 100644 sysdeps/unix/sysv/linux/internal-ioctl.h
create mode 100644 sysdeps/unix/sysv/linux/ioctl.c
create mode 100644 sysdeps/unix/sysv/linux/powerpc/internal-ioctl.h
delete mode 100644 sysdeps/unix/sysv/linux/powerpc/ioctl.c
Comments
On Fri, Nov 19, 2021 at 04:58:52PM -0300, Adhemerval Zanella wrote:
> The powerpc is refactor to use the default implementation.
> ---
> sysdeps/unix/sysv/linux/internal-ioctl.h | 23 +++++++
> sysdeps/unix/sysv/linux/ioctl.c | 49 +++++++++++++
> .../unix/sysv/linux/powerpc/internal-ioctl.h | 46 +++++++++++++
> sysdeps/unix/sysv/linux/powerpc/ioctl.c | 68 -------------------
> 4 files changed, 118 insertions(+), 68 deletions(-)
> create mode 100644 sysdeps/unix/sysv/linux/internal-ioctl.h
> create mode 100644 sysdeps/unix/sysv/linux/ioctl.c
> create mode 100644 sysdeps/unix/sysv/linux/powerpc/internal-ioctl.h
> delete mode 100644 sysdeps/unix/sysv/linux/powerpc/ioctl.c
>
> diff --git a/sysdeps/unix/sysv/linux/internal-ioctl.h b/sysdeps/unix/sysv/linux/internal-ioctl.h
> new file mode 100644
> index 0000000000..697b086703
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/internal-ioctl.h
> @@ -0,0 +1,23 @@
> +/* Linux internal definitions for ioctl.
> + Copyright (C) 2021 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/>. */
> +
Should we have a comment here explaining why this is needed.
Something like:
/* Architecture ports may choose to override this default implementation
to provide architecture specific ioctl support. For example see powerpc. */
> +static inline bool
> +__ioctl_arch (int *r, int fd, unsigned long request, void *arg)
> +{
> + return false;
> +}
> diff --git a/sysdeps/unix/sysv/linux/ioctl.c b/sysdeps/unix/sysv/linux/ioctl.c
> new file mode 100644
> index 0000000000..c4855d6302
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/ioctl.c
> @@ -0,0 +1,49 @@
> +/* Control device. Linux generic implementation.
> + Copyright (C) 2021 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 <stdarg.h>
> +#include <sys/ioctl.h>
> +#include <sysdep.h>
> +#include <internal-ioctl.h>
> +
> +int
> +__ioctl (int fd, unsigned long int request, ...)
> +{
> + va_list args;
> + va_start (args, request);
> + void *arg = va_arg (args, void *);
> + va_end (args);
> +
> + int r;
> + if (!__ioctl_arch (&r, fd, request, arg))
> + {
> + r = INTERNAL_SYSCALL_CALL (ioctl, fd, request, arg);
> + if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (r)))
> + {
> + __set_errno (-r);
> + return -1;
> + }
> + }
> + return r;
> +}
> +libc_hidden_def (__ioctl)
> +weak_alias (__ioctl, ioctl)
> +
> +#if __TIMESIZE != 64
> +strong_alias (__ioctl, __ioctl_time64)
> +#endif
For what its worth this looks good to me.
> diff --git a/sysdeps/unix/sysv/linux/powerpc/internal-ioctl.h b/sysdeps/unix/sysv/linux/powerpc/internal-ioctl.h
> new file mode 100644
> index 0000000000..3a2adce7c3
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/powerpc/internal-ioctl.h
> @@ -0,0 +1,46 @@
> +/* Linux internal definitions for ioctl.
> + Copyright (C) 2021 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 <termios.h>
> +
> +static inline bool
> +__ioctl_arch (int *r, int fd, unsigned long request, void *arg)
> +{
> + switch (request)
> + {
> + case TCGETS:
> + *r = __tcgetattr (fd, (struct termios *) arg);
> + break;
> +
> + case TCSETS:
> + *r = __tcsetattr (fd, TCSANOW, (struct termios *) arg);
> + break;
> +
> + case TCSETSW:
> + *r = __tcsetattr (fd, TCSADRAIN, (struct termios *) arg);
> + break;
> +
> + case TCSETSF:
> + *r = __tcsetattr (fd, TCSAFLUSH, (struct termios *) arg);
> + break;
> +
> + default:
> + return false;
> + }
> + return true;
> +}
> diff --git a/sysdeps/unix/sysv/linux/powerpc/ioctl.c b/sysdeps/unix/sysv/linux/powerpc/ioctl.c
> deleted file mode 100644
> index a81c7ba54c..0000000000
> --- a/sysdeps/unix/sysv/linux/powerpc/ioctl.c
> +++ /dev/null
> @@ -1,68 +0,0 @@
> -/* Copyright (C) 1998-2021 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 <stdarg.h>
> -#include <termios.h>
> -#include <unistd.h>
> -#include <sys/ioctl.h>
> -#include <sysdep.h>
> -
> -/* The user-visible size of struct termios has changed. Catch ioctl calls
> - using the new-style struct termios, and translate them to old-style. */
> -
> -int
> -__ioctl (int fd, unsigned long int request, ...)
> -{
> - void *arg;
> - va_list ap;
> - int result;
> -
> - va_start (ap, request);
> - arg = va_arg (ap, void *);
> -
> - switch (request)
> - {
> - case TCGETS:
> - result = __tcgetattr (fd, (struct termios *) arg);
> - break;
> -
> - case TCSETS:
> - result = __tcsetattr (fd, TCSANOW, (struct termios *) arg);
> - break;
> -
> - case TCSETSW:
> - result = __tcsetattr (fd, TCSADRAIN, (struct termios *) arg);
> - break;
> -
> - case TCSETSF:
> - result = __tcsetattr (fd, TCSAFLUSH, (struct termios *) arg);
> - break;
> -
> - default:
> - result = INLINE_SYSCALL (ioctl, 3, fd, request, arg);
> - break;
> - }
> -
> - va_end (ap);
> -
> - return result;
> -}
> -libc_hidden_def (__ioctl)
> -weak_alias (__ioctl, ioctl)
> -#if __TIMESIZE != 64
> -weak_alias (__ioctl, __ioctl_time64)
> -#endif
The powerpc bit look fine too.
-Stafford
On 19/11/2021 21:11, Stafford Horne wrote:
> On Fri, Nov 19, 2021 at 04:58:52PM -0300, Adhemerval Zanella wrote:
>> The powerpc is refactor to use the default implementation.
>> ---
>> sysdeps/unix/sysv/linux/internal-ioctl.h | 23 +++++++
>> sysdeps/unix/sysv/linux/ioctl.c | 49 +++++++++++++
>> .../unix/sysv/linux/powerpc/internal-ioctl.h | 46 +++++++++++++
>> sysdeps/unix/sysv/linux/powerpc/ioctl.c | 68 -------------------
>> 4 files changed, 118 insertions(+), 68 deletions(-)
>> create mode 100644 sysdeps/unix/sysv/linux/internal-ioctl.h
>> create mode 100644 sysdeps/unix/sysv/linux/ioctl.c
>> create mode 100644 sysdeps/unix/sysv/linux/powerpc/internal-ioctl.h
>> delete mode 100644 sysdeps/unix/sysv/linux/powerpc/ioctl.c
>>
>> diff --git a/sysdeps/unix/sysv/linux/internal-ioctl.h b/sysdeps/unix/sysv/linux/internal-ioctl.h
>> new file mode 100644
>> index 0000000000..697b086703
>> --- /dev/null
>> +++ b/sysdeps/unix/sysv/linux/internal-ioctl.h
>> @@ -0,0 +1,23 @@
>> +/* Linux internal definitions for ioctl.
>> + Copyright (C) 2021 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/>. */
>> +
>
> Should we have a comment here explaining why this is needed.
>
> Something like:
>
> /* Architecture ports may choose to override this default implementation
> to provide architecture specific ioctl support. For example see powerpc. */
Sounds reasonable, I will update the patch.
On Fri, Nov 19, 2021 at 04:58:52PM -0300, Adhemerval Zanella via Libc-alpha wrote:
> The powerpc is refactor to use the default implementation.
> ---
[snip]
> diff --git a/sysdeps/unix/sysv/linux/powerpc/internal-ioctl.h b/sysdeps/unix/sysv/linux/powerpc/internal-ioctl.h
> new file mode 100644
> index 0000000000..3a2adce7c3
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/powerpc/internal-ioctl.h
> @@ -0,0 +1,46 @@
> +/* Linux internal definitions for ioctl.
> + Copyright (C) 2021 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 <termios.h>
> +
> +static inline bool
> +__ioctl_arch (int *r, int fd, unsigned long request, void *arg)
> +{
> + switch (request)
> + {
> + case TCGETS:
> + *r = __tcgetattr (fd, (struct termios *) arg);
> + break;
> +
> + case TCSETS:
> + *r = __tcsetattr (fd, TCSANOW, (struct termios *) arg);
> + break;
> +
> + case TCSETSW:
> + *r = __tcsetattr (fd, TCSADRAIN, (struct termios *) arg);
> + break;
> +
> + case TCSETSF:
> + *r = __tcsetattr (fd, TCSAFLUSH, (struct termios *) arg);
> + break;
> +
> + default:
> + return false;
> + }
> + return true;
> +}
> diff --git a/sysdeps/unix/sysv/linux/powerpc/ioctl.c b/sysdeps/unix/sysv/linux/powerpc/ioctl.c
> deleted file mode 100644
> index a81c7ba54c..0000000000
> --- a/sysdeps/unix/sysv/linux/powerpc/ioctl.c
> +++ /dev/null
> @@ -1,68 +0,0 @@
> -/* Copyright (C) 1998-2021 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 <stdarg.h>
> -#include <termios.h>
> -#include <unistd.h>
> -#include <sys/ioctl.h>
> -#include <sysdep.h>
> -
> -/* The user-visible size of struct termios has changed. Catch ioctl calls
> - using the new-style struct termios, and translate them to old-style. */
I don't know the history here, but the above comment did not move
to the new location. Should it be preserved?
PC
> -int
> -__ioctl (int fd, unsigned long int request, ...)
> -{
> - void *arg;
> - va_list ap;
> - int result;
> -
> - va_start (ap, request);
> - arg = va_arg (ap, void *);
> -
> - switch (request)
> - {
> - case TCGETS:
> - result = __tcgetattr (fd, (struct termios *) arg);
> - break;
> -
> - case TCSETS:
> - result = __tcsetattr (fd, TCSANOW, (struct termios *) arg);
> - break;
> -
> - case TCSETSW:
> - result = __tcsetattr (fd, TCSADRAIN, (struct termios *) arg);
> - break;
> -
> - case TCSETSF:
> - result = __tcsetattr (fd, TCSAFLUSH, (struct termios *) arg);
> - break;
> -
> - default:
> - result = INLINE_SYSCALL (ioctl, 3, fd, request, arg);
> - break;
> - }
> -
> - va_end (ap);
> -
> - return result;
> -}
> -libc_hidden_def (__ioctl)
> -weak_alias (__ioctl, ioctl)
> -#if __TIMESIZE != 64
> -weak_alias (__ioctl, __ioctl_time64)
> -#endif
> --
On 29/11/2021 12:23, Paul A. Clarke wrote:
> On Fri, Nov 19, 2021 at 04:58:52PM -0300, Adhemerval Zanella via Libc-alpha wrote:
>> The powerpc is refactor to use the default implementation.
>> ---
> [snip]
>> diff --git a/sysdeps/unix/sysv/linux/powerpc/internal-ioctl.h b/sysdeps/unix/sysv/linux/powerpc/internal-ioctl.h
>> new file mode 100644
>> index 0000000000..3a2adce7c3
>> --- /dev/null
>> +++ b/sysdeps/unix/sysv/linux/powerpc/internal-ioctl.h
>> @@ -0,0 +1,46 @@
>> +/* Linux internal definitions for ioctl.
>> + Copyright (C) 2021 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 <termios.h>
>> +
>> +static inline bool
>> +__ioctl_arch (int *r, int fd, unsigned long request, void *arg)
>> +{
>> + switch (request)
>> + {
>> + case TCGETS:
>> + *r = __tcgetattr (fd, (struct termios *) arg);
>> + break;
>> +
>> + case TCSETS:
>> + *r = __tcsetattr (fd, TCSANOW, (struct termios *) arg);
>> + break;
>> +
>> + case TCSETSW:
>> + *r = __tcsetattr (fd, TCSADRAIN, (struct termios *) arg);
>> + break;
>> +
>> + case TCSETSF:
>> + *r = __tcsetattr (fd, TCSAFLUSH, (struct termios *) arg);
>> + break;
>> +
>> + default:
>> + return false;
>> + }
>> + return true;
>> +}
>> diff --git a/sysdeps/unix/sysv/linux/powerpc/ioctl.c b/sysdeps/unix/sysv/linux/powerpc/ioctl.c
>> deleted file mode 100644
>> index a81c7ba54c..0000000000
>> --- a/sysdeps/unix/sysv/linux/powerpc/ioctl.c
>> +++ /dev/null
>> @@ -1,68 +0,0 @@
>> -/* Copyright (C) 1998-2021 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 <stdarg.h>
>> -#include <termios.h>
>> -#include <unistd.h>
>> -#include <sys/ioctl.h>
>> -#include <sysdep.h>
>> -
>> -/* The user-visible size of struct termios has changed. Catch ioctl calls
>> - using the new-style struct termios, and translate them to old-style. */
>
> I don't know the history here, but the above comment did not move
> to the new location. Should it be preserved?
Agreed, I have adjusted locally.
new file mode 100644
@@ -0,0 +1,23 @@
+/* Linux internal definitions for ioctl.
+ Copyright (C) 2021 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/>. */
+
+static inline bool
+__ioctl_arch (int *r, int fd, unsigned long request, void *arg)
+{
+ return false;
+}
new file mode 100644
@@ -0,0 +1,49 @@
+/* Control device. Linux generic implementation.
+ Copyright (C) 2021 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 <stdarg.h>
+#include <sys/ioctl.h>
+#include <sysdep.h>
+#include <internal-ioctl.h>
+
+int
+__ioctl (int fd, unsigned long int request, ...)
+{
+ va_list args;
+ va_start (args, request);
+ void *arg = va_arg (args, void *);
+ va_end (args);
+
+ int r;
+ if (!__ioctl_arch (&r, fd, request, arg))
+ {
+ r = INTERNAL_SYSCALL_CALL (ioctl, fd, request, arg);
+ if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (r)))
+ {
+ __set_errno (-r);
+ return -1;
+ }
+ }
+ return r;
+}
+libc_hidden_def (__ioctl)
+weak_alias (__ioctl, ioctl)
+
+#if __TIMESIZE != 64
+strong_alias (__ioctl, __ioctl_time64)
+#endif
new file mode 100644
@@ -0,0 +1,46 @@
+/* Linux internal definitions for ioctl.
+ Copyright (C) 2021 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 <termios.h>
+
+static inline bool
+__ioctl_arch (int *r, int fd, unsigned long request, void *arg)
+{
+ switch (request)
+ {
+ case TCGETS:
+ *r = __tcgetattr (fd, (struct termios *) arg);
+ break;
+
+ case TCSETS:
+ *r = __tcsetattr (fd, TCSANOW, (struct termios *) arg);
+ break;
+
+ case TCSETSW:
+ *r = __tcsetattr (fd, TCSADRAIN, (struct termios *) arg);
+ break;
+
+ case TCSETSF:
+ *r = __tcsetattr (fd, TCSAFLUSH, (struct termios *) arg);
+ break;
+
+ default:
+ return false;
+ }
+ return true;
+}
deleted file mode 100644
@@ -1,68 +0,0 @@
-/* Copyright (C) 1998-2021 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 <stdarg.h>
-#include <termios.h>
-#include <unistd.h>
-#include <sys/ioctl.h>
-#include <sysdep.h>
-
-/* The user-visible size of struct termios has changed. Catch ioctl calls
- using the new-style struct termios, and translate them to old-style. */
-
-int
-__ioctl (int fd, unsigned long int request, ...)
-{
- void *arg;
- va_list ap;
- int result;
-
- va_start (ap, request);
- arg = va_arg (ap, void *);
-
- switch (request)
- {
- case TCGETS:
- result = __tcgetattr (fd, (struct termios *) arg);
- break;
-
- case TCSETS:
- result = __tcsetattr (fd, TCSANOW, (struct termios *) arg);
- break;
-
- case TCSETSW:
- result = __tcsetattr (fd, TCSADRAIN, (struct termios *) arg);
- break;
-
- case TCSETSF:
- result = __tcsetattr (fd, TCSAFLUSH, (struct termios *) arg);
- break;
-
- default:
- result = INLINE_SYSCALL (ioctl, 3, fd, request, arg);
- break;
- }
-
- va_end (ap);
-
- return result;
-}
-libc_hidden_def (__ioctl)
-weak_alias (__ioctl, ioctl)
-#if __TIMESIZE != 64
-weak_alias (__ioctl, __ioctl_time64)
-#endif