提交 4a0fd5bf 编写于 作者: A Al Viro

teach SYSCALL_DEFINE<n> how to deal with long long/unsigned long long

... and convert a bunch of SYSCALL_DEFINE ones to SYSCALL_DEFINE<n>,
killing the boilerplate crap around them.
Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
上级 07fe6e00
...@@ -132,19 +132,9 @@ SYSCALL_DEFINE1(s390_fadvise64_64, struct fadvise64_64_args __user *, args) ...@@ -132,19 +132,9 @@ SYSCALL_DEFINE1(s390_fadvise64_64, struct fadvise64_64_args __user *, args)
* to * to
* %r2: fd, %r3: mode, %r4/%r5: offset, 96(%r15)-103(%r15): len * %r2: fd, %r3: mode, %r4/%r5: offset, 96(%r15)-103(%r15): len
*/ */
SYSCALL_DEFINE(s390_fallocate)(int fd, int mode, loff_t offset, SYSCALL_DEFINE5(s390_fallocate, int, fd, int, mode, loff_t, offset,
u32 len_high, u32 len_low) u32, len_high, u32, len_low)
{ {
return sys_fallocate(fd, mode, offset, ((u64)len_high << 32) | len_low); return sys_fallocate(fd, mode, offset, ((u64)len_high << 32) | len_low);
} }
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
asmlinkage long SyS_s390_fallocate(long fd, long mode, loff_t offset,
long len_high, long len_low)
{
return SYSC_s390_fallocate((int) fd, (int) mode, offset,
(u32) len_high, (u32) len_low);
}
SYSCALL_ALIAS(sys_s390_fallocate, SyS_s390_fallocate);
#endif
#endif #endif
...@@ -145,7 +145,7 @@ int get_dcookie(struct path *path, unsigned long *cookie) ...@@ -145,7 +145,7 @@ int get_dcookie(struct path *path, unsigned long *cookie)
/* And here is where the userspace process can look up the cookie value /* And here is where the userspace process can look up the cookie value
* to retrieve the path. * to retrieve the path.
*/ */
SYSCALL_DEFINE(lookup_dcookie)(u64 cookie64, char __user * buf, size_t len) SYSCALL_DEFINE3(lookup_dcookie, u64, cookie64, char __user *, buf, size_t, len)
{ {
unsigned long cookie = (unsigned long)cookie64; unsigned long cookie = (unsigned long)cookie64;
int err = -EINVAL; int err = -EINVAL;
...@@ -201,13 +201,6 @@ SYSCALL_DEFINE(lookup_dcookie)(u64 cookie64, char __user * buf, size_t len) ...@@ -201,13 +201,6 @@ SYSCALL_DEFINE(lookup_dcookie)(u64 cookie64, char __user * buf, size_t len)
mutex_unlock(&dcookie_mutex); mutex_unlock(&dcookie_mutex);
return err; return err;
} }
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
asmlinkage long SyS_lookup_dcookie(u64 cookie64, long buf, long len)
{
return SYSC_lookup_dcookie(cookie64, (char __user *) buf, (size_t) len);
}
SYSCALL_ALIAS(sys_lookup_dcookie, SyS_lookup_dcookie);
#endif
static int dcookie_init(void) static int dcookie_init(void)
{ {
......
...@@ -755,9 +755,9 @@ SYSCALL_DEFINE2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags) ...@@ -755,9 +755,9 @@ SYSCALL_DEFINE2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags)
return fd; return fd;
} }
SYSCALL_DEFINE(fanotify_mark)(int fanotify_fd, unsigned int flags, SYSCALL_DEFINE5(fanotify_mark, int, fanotify_fd, unsigned int, flags,
__u64 mask, int dfd, __u64, mask, int, dfd,
const char __user * pathname) const char __user *, pathname)
{ {
struct inode *inode = NULL; struct inode *inode = NULL;
struct vfsmount *mnt = NULL; struct vfsmount *mnt = NULL;
...@@ -857,17 +857,6 @@ SYSCALL_DEFINE(fanotify_mark)(int fanotify_fd, unsigned int flags, ...@@ -857,17 +857,6 @@ SYSCALL_DEFINE(fanotify_mark)(int fanotify_fd, unsigned int flags,
return ret; return ret;
} }
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
asmlinkage long SyS_fanotify_mark(long fanotify_fd, long flags, __u64 mask,
long dfd, long pathname)
{
return SYSC_fanotify_mark((int) fanotify_fd, (unsigned int) flags,
mask, (int) dfd,
(const char __user *) pathname);
}
SYSCALL_ALIAS(sys_fanotify_mark, SyS_fanotify_mark);
#endif
/* /*
* fanotify_user_setup - Our initialization function. Note that we cannot return * fanotify_user_setup - Our initialization function. Note that we cannot return
* error because we have compiled-in VFS hooks. So an (unlikely) failure here * error because we have compiled-in VFS hooks. So an (unlikely) failure here
......
...@@ -212,32 +212,18 @@ COMPAT_SYSCALL_DEFINE2(ftruncate, unsigned int, fd, compat_ulong_t, length) ...@@ -212,32 +212,18 @@ COMPAT_SYSCALL_DEFINE2(ftruncate, unsigned int, fd, compat_ulong_t, length)
/* LFS versions of truncate are only needed on 32 bit machines */ /* LFS versions of truncate are only needed on 32 bit machines */
#if BITS_PER_LONG == 32 #if BITS_PER_LONG == 32
SYSCALL_DEFINE(truncate64)(const char __user * path, loff_t length) SYSCALL_DEFINE2(truncate64, const char __user *, path, loff_t, length)
{ {
return do_sys_truncate(path, length); return do_sys_truncate(path, length);
} }
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
asmlinkage long SyS_truncate64(long path, loff_t length)
{
return SYSC_truncate64((const char __user *) path, length);
}
SYSCALL_ALIAS(sys_truncate64, SyS_truncate64);
#endif
SYSCALL_DEFINE(ftruncate64)(unsigned int fd, loff_t length) SYSCALL_DEFINE2(ftruncate64, unsigned int, fd, loff_t, length)
{ {
long ret = do_sys_ftruncate(fd, length, 0); long ret = do_sys_ftruncate(fd, length, 0);
/* avoid REGPARM breakage on x86: */ /* avoid REGPARM breakage on x86: */
asmlinkage_protect(2, ret, fd, length); asmlinkage_protect(2, ret, fd, length);
return ret; return ret;
} }
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
asmlinkage long SyS_ftruncate64(long fd, loff_t length)
{
return SYSC_ftruncate64((unsigned int) fd, length);
}
SYSCALL_ALIAS(sys_ftruncate64, SyS_ftruncate64);
#endif
#endif /* BITS_PER_LONG == 32 */ #endif /* BITS_PER_LONG == 32 */
...@@ -299,7 +285,7 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len) ...@@ -299,7 +285,7 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len)
return ret; return ret;
} }
SYSCALL_DEFINE(fallocate)(int fd, int mode, loff_t offset, loff_t len) SYSCALL_DEFINE4(fallocate, int, fd, int, mode, loff_t, offset, loff_t, len)
{ {
struct fd f = fdget(fd); struct fd f = fdget(fd);
int error = -EBADF; int error = -EBADF;
...@@ -311,14 +297,6 @@ SYSCALL_DEFINE(fallocate)(int fd, int mode, loff_t offset, loff_t len) ...@@ -311,14 +297,6 @@ SYSCALL_DEFINE(fallocate)(int fd, int mode, loff_t offset, loff_t len)
return error; return error;
} }
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
asmlinkage long SyS_fallocate(long fd, long mode, loff_t offset, loff_t len)
{
return SYSC_fallocate((int)fd, (int)mode, offset, len);
}
SYSCALL_ALIAS(sys_fallocate, SyS_fallocate);
#endif
/* /*
* access() needs to use the real uid/gid, not the effective uid/gid. * access() needs to use the real uid/gid, not the effective uid/gid.
* We do this by temporarily clearing all FS-related capabilities and * We do this by temporarily clearing all FS-related capabilities and
......
...@@ -487,8 +487,8 @@ SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf, ...@@ -487,8 +487,8 @@ SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf,
return ret; return ret;
} }
SYSCALL_DEFINE(pread64)(unsigned int fd, char __user *buf, SYSCALL_DEFINE4(pread64, unsigned int, fd, char __user *, buf,
size_t count, loff_t pos) size_t, count, loff_t, pos)
{ {
struct fd f; struct fd f;
ssize_t ret = -EBADF; ssize_t ret = -EBADF;
...@@ -506,17 +506,9 @@ SYSCALL_DEFINE(pread64)(unsigned int fd, char __user *buf, ...@@ -506,17 +506,9 @@ SYSCALL_DEFINE(pread64)(unsigned int fd, char __user *buf,
return ret; return ret;
} }
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
asmlinkage long SyS_pread64(long fd, long buf, long count, loff_t pos)
{
return SYSC_pread64((unsigned int) fd, (char __user *) buf,
(size_t) count, pos);
}
SYSCALL_ALIAS(sys_pread64, SyS_pread64);
#endif
SYSCALL_DEFINE(pwrite64)(unsigned int fd, const char __user *buf, SYSCALL_DEFINE4(pwrite64, unsigned int, fd, const char __user *, buf,
size_t count, loff_t pos) size_t, count, loff_t, pos)
{ {
struct fd f; struct fd f;
ssize_t ret = -EBADF; ssize_t ret = -EBADF;
...@@ -534,14 +526,6 @@ SYSCALL_DEFINE(pwrite64)(unsigned int fd, const char __user *buf, ...@@ -534,14 +526,6 @@ SYSCALL_DEFINE(pwrite64)(unsigned int fd, const char __user *buf,
return ret; return ret;
} }
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
asmlinkage long SyS_pwrite64(long fd, long buf, long count, loff_t pos)
{
return SYSC_pwrite64((unsigned int) fd, (const char __user *) buf,
(size_t) count, pos);
}
SYSCALL_ALIAS(sys_pwrite64, SyS_pwrite64);
#endif
/* /*
* Reduce an iovec's length in-place. Return the resulting number of segments * Reduce an iovec's length in-place. Return the resulting number of segments
......
...@@ -283,8 +283,8 @@ EXPORT_SYMBOL(generic_write_sync); ...@@ -283,8 +283,8 @@ EXPORT_SYMBOL(generic_write_sync);
* already-instantiated disk blocks, there are no guarantees here that the data * already-instantiated disk blocks, there are no guarantees here that the data
* will be available after a crash. * will be available after a crash.
*/ */
SYSCALL_DEFINE(sync_file_range)(int fd, loff_t offset, loff_t nbytes, SYSCALL_DEFINE4(sync_file_range, int, fd, loff_t, offset, loff_t, nbytes,
unsigned int flags) unsigned int, flags)
{ {
int ret; int ret;
struct fd f; struct fd f;
...@@ -365,29 +365,11 @@ SYSCALL_DEFINE(sync_file_range)(int fd, loff_t offset, loff_t nbytes, ...@@ -365,29 +365,11 @@ SYSCALL_DEFINE(sync_file_range)(int fd, loff_t offset, loff_t nbytes,
out: out:
return ret; return ret;
} }
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
asmlinkage long SyS_sync_file_range(long fd, loff_t offset, loff_t nbytes,
long flags)
{
return SYSC_sync_file_range((int) fd, offset, nbytes,
(unsigned int) flags);
}
SYSCALL_ALIAS(sys_sync_file_range, SyS_sync_file_range);
#endif
/* It would be nice if people remember that not all the world's an i386 /* It would be nice if people remember that not all the world's an i386
when they introduce new system calls */ when they introduce new system calls */
SYSCALL_DEFINE(sync_file_range2)(int fd, unsigned int flags, SYSCALL_DEFINE4(sync_file_range2, int, fd, unsigned int, flags,
loff_t offset, loff_t nbytes) loff_t, offset, loff_t, nbytes)
{ {
return sys_sync_file_range(fd, offset, nbytes, flags); return sys_sync_file_range(fd, offset, nbytes, flags);
} }
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
asmlinkage long SyS_sync_file_range2(long fd, long flags,
loff_t offset, loff_t nbytes)
{
return SYSC_sync_file_range2((int) fd, (unsigned int) flags,
offset, nbytes);
}
SYSCALL_ALIAS(sys_sync_file_range2, SyS_sync_file_range2);
#endif
...@@ -96,9 +96,10 @@ struct sigaltstack; ...@@ -96,9 +96,10 @@ struct sigaltstack;
#define __MAP(n,...) __MAP##n(__VA_ARGS__) #define __MAP(n,...) __MAP##n(__VA_ARGS__)
#define __SC_DECL(t, a) t a #define __SC_DECL(t, a) t a
#define __SC_LONG(t, a) long a #define __TYPE_IS_LL(t) (__same_type((t)0, 0LL) || __same_type((t)0, 0ULL))
#define __SC_LONG(t, a) __typeof(__builtin_choose_expr(__TYPE_IS_LL(t), 0LL, 0L)) a
#define __SC_CAST(t, a) (t) a #define __SC_CAST(t, a) (t) a
#define __SC_TEST(t, a) (void)BUILD_BUG_ON_ZERO(sizeof(type) > sizeof(long)) #define __SC_TEST(t, a) (void)BUILD_BUG_ON_ZERO(!__TYPE_IS_LL(t) && sizeof(t) > sizeof(long))
#ifdef CONFIG_FTRACE_SYSCALLS #ifdef CONFIG_FTRACE_SYSCALLS
#define __SC_STR_ADECL(t, a) #a #define __SC_STR_ADECL(t, a) #a
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
* POSIX_FADV_WILLNEED could set PG_Referenced, and POSIX_FADV_NOREUSE could * POSIX_FADV_WILLNEED could set PG_Referenced, and POSIX_FADV_NOREUSE could
* deactivate the pages and clear PG_Referenced. * deactivate the pages and clear PG_Referenced.
*/ */
SYSCALL_DEFINE(fadvise64_64)(int fd, loff_t offset, loff_t len, int advice) SYSCALL_DEFINE4(fadvise64_64, int, fd, loff_t, offset, loff_t, len, int, advice)
{ {
struct fd f = fdget(fd); struct fd f = fdget(fd);
struct address_space *mapping; struct address_space *mapping;
...@@ -145,26 +145,12 @@ SYSCALL_DEFINE(fadvise64_64)(int fd, loff_t offset, loff_t len, int advice) ...@@ -145,26 +145,12 @@ SYSCALL_DEFINE(fadvise64_64)(int fd, loff_t offset, loff_t len, int advice)
fdput(f); fdput(f);
return ret; return ret;
} }
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
asmlinkage long SyS_fadvise64_64(long fd, loff_t offset, loff_t len, long advice)
{
return SYSC_fadvise64_64((int) fd, offset, len, (int) advice);
}
SYSCALL_ALIAS(sys_fadvise64_64, SyS_fadvise64_64);
#endif
#ifdef __ARCH_WANT_SYS_FADVISE64 #ifdef __ARCH_WANT_SYS_FADVISE64
SYSCALL_DEFINE(fadvise64)(int fd, loff_t offset, size_t len, int advice) SYSCALL_DEFINE4(fadvise64, int, fd, loff_t, offset, size_t, len, int, advice)
{ {
return sys_fadvise64_64(fd, offset, len, advice); return sys_fadvise64_64(fd, offset, len, advice);
} }
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
asmlinkage long SyS_fadvise64(long fd, loff_t offset, long len, long advice)
{
return SYSC_fadvise64((int) fd, offset, (size_t)len, (int)advice);
}
SYSCALL_ALIAS(sys_fadvise64, SyS_fadvise64);
#endif
#endif #endif
...@@ -576,7 +576,7 @@ do_readahead(struct address_space *mapping, struct file *filp, ...@@ -576,7 +576,7 @@ do_readahead(struct address_space *mapping, struct file *filp,
return 0; return 0;
} }
SYSCALL_DEFINE(readahead)(int fd, loff_t offset, size_t count) SYSCALL_DEFINE3(readahead, int, fd, loff_t, offset, size_t, count)
{ {
ssize_t ret; ssize_t ret;
struct fd f; struct fd f;
...@@ -595,10 +595,3 @@ SYSCALL_DEFINE(readahead)(int fd, loff_t offset, size_t count) ...@@ -595,10 +595,3 @@ SYSCALL_DEFINE(readahead)(int fd, loff_t offset, size_t count)
} }
return ret; return ret;
} }
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
asmlinkage long SyS_readahead(long fd, loff_t offset, long count)
{
return SYSC_readahead((int) fd, offset, (size_t) count);
}
SYSCALL_ALIAS(sys_readahead, SyS_readahead);
#endif
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册