mirror of
https://github.com/torvalds/linux.git
synced 2025-04-09 14:45:27 +00:00
tools/nolibc: make signature of ioctl() more flexible
POSIX defines the signature of ioctl() as follows, to allow passing a pointer or integer without casting: int ioctl(int fildes, int request, ... /* arg */); Nolibc ioctl() expects a pointer, forcing the user to manually cast. Using va_arg to make the signature more flexible would work but seems to prevent inlining of the function. Instead use a macro. "fd" and "req" will still be typechecked through sys_ioctl(). Acked-by: Willy Tarreau <w@1wt.eu> Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
This commit is contained in:
parent
4da4e35e9d
commit
cfb1bfe953
@ -532,20 +532,16 @@ uid_t getuid(void)
|
||||
|
||||
|
||||
/*
|
||||
* int ioctl(int fd, unsigned long req, void *value);
|
||||
* int ioctl(int fd, unsigned long cmd, ... arg);
|
||||
*/
|
||||
|
||||
static __attribute__((unused))
|
||||
int sys_ioctl(int fd, unsigned long req, void *value)
|
||||
long sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
return my_syscall3(__NR_ioctl, fd, req, value);
|
||||
return my_syscall3(__NR_ioctl, fd, cmd, arg);
|
||||
}
|
||||
|
||||
static __attribute__((unused))
|
||||
int ioctl(int fd, unsigned long req, void *value)
|
||||
{
|
||||
return __sysret(sys_ioctl(fd, req, value));
|
||||
}
|
||||
#define ioctl(fd, cmd, arg) __sysret(sys_ioctl(fd, cmd, (unsigned long)(arg)))
|
||||
|
||||
/*
|
||||
* int kill(pid_t pid, int signal);
|
||||
|
Loading…
x
Reference in New Issue
Block a user