haiku/headers
Jérôme Duval 7065a89fc6 POSIX: ioctl(fd, op, arg) equals ioctl(fd, op, arg, 0)
The ioctl call cannot know the expected number of arguments
because it depends on the specific ioctl being used, and the
same value could be used to do different things by different
devices. Without knowing that, it is not safe to use va_arg
(at best a random value will be read from the stack, at worst,
it will just crash).

This changes the implementation of ioctl in two ways:
- For C++ code: a 4 argument function with default values
  for arguments 3 and 4.
- For C code: wrap arguments 3 and 4 in a struct with the
  help of a macro, providing something that behaves like the
  C++ version.

So, with this new code:
- Calling ioctl with only 3 arguments sets the 4th one to 0
- Calling ioctl with only 2 arguments sets the 3rd and 4th to 0
- Calling with 1 or 5+ arguments is a compile time error

The existing ioctl symbol is preserved for ABI compatibility.

Change-Id: I6d4d1d38fccd8cc9bd94203d3e11aeac6da8efc3
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3360
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2021-05-04 19:21:48 +00:00
..
build build: follow-up for hrev54993 2021-04-30 10:42:21 +00:00
compatibility features.h: enable ISOC11 definitions for _GNU_SOURCE and C++17 2021-05-04 05:25:52 +00:00
config ARM64: Initial changes so we can compile GCC toolchain 2019-08-30 19:05:16 +00:00
cpp
glibc
libs agg: fix build. 2020-01-22 19:25:16 +01:00
os Decorator: Introduce Scroll bar size call 2021-05-03 16:42:32 +00:00
posix POSIX: ioctl(fd, op, arg) equals ioctl(fd, op, arg, 0) 2021-05-04 19:21:48 +00:00
private Implement stack protection support 2021-05-03 17:52:31 +00:00
tools