1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- /*
- * IA32 Architecture-specific ioctl shim code
- *
- * Copyright (C) 2000 VA Linux Co
- * Copyright (C) 2000 Don Dugger <n0ano@valinux.com>
- * Copyright (C) 2001-2003 Hewlett-Packard Co
- * David Mosberger-Tang <davidm@hpl.hp.com>
- */
- #include <linux/signal.h> /* argh, msdos_fs.h isn't self-contained... */
- #include <linux/syscalls.h>
- #include "ia32priv.h"
-
- #define INCLUDES
- #include "compat_ioctl.c"
- #define IOCTL_NR(a) ((a) & ~(_IOC_SIZEMASK << _IOC_SIZESHIFT))
- #define DO_IOCTL(fd, cmd, arg) ({ \
- int _ret; \
- mm_segment_t _old_fs = get_fs(); \
- \
- set_fs(KERNEL_DS); \
- _ret = sys_ioctl(fd, cmd, (unsigned long)arg); \
- set_fs(_old_fs); \
- _ret; \
- })
- #define CODE
- #include "compat_ioctl.c"
- typedef int (* ioctl32_handler_t)(unsigned int, unsigned int, unsigned long, struct file *);
- #define COMPATIBLE_IOCTL(cmd) HANDLE_IOCTL((cmd),sys_ioctl)
- #define HANDLE_IOCTL(cmd,handler) { (cmd), (ioctl32_handler_t)(handler), NULL },
- #define IOCTL_TABLE_START \
- struct ioctl_trans ioctl_start[] = {
- #define IOCTL_TABLE_END \
- };
- IOCTL_TABLE_START
- #define DECLARES
- #include "compat_ioctl.c"
- #include <linux/compat_ioctl.h>
- IOCTL_TABLE_END
- int ioctl_table_size = ARRAY_SIZE(ioctl_start);
|