arch-independent syscalls to return long
Subsystems (9)
PATCH 1/1 arch-independent syscalls to return long
Hi,
I posted this about 1 month ago (as [RFC]), to no avail. However, tonight Andi needs it for pause() [which is failing on x86_64], and Robert Love mentioned converting the affinity syscalls. I had already done them, so here they are again.
Builds and boots.
Please apply. Patch is to 2.5.65-current.
Thanks,
~Randy
patch_name: syscalls-long-2560.patchpatch_version: 2003-02-13.22:58:43
author: Randy.Dunlap <[email protected]>
description: convert arch-independent syscalls to long return values;
product: Linuxproduct_versions: 2.5.65
diffstat: =
arch/x86_64/ia32/sys_ia32.c | 4 ++-- fs/dcookies.c | 2 +- fs/readdir.c | 2 +- include/linux/mm.h | 2 +- kernel/fork.c | 2 +- kernel/sched.c | 4 ++-- kernel/signal.c | 2 +- mm/fremap.c | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-)
arch/x86_64/ia32/sys_ia32.c renamed from arch/x86_64/ia32/sys_ia32.c%LONG +2 -2
@@ -2071,8 +2071,8 @@return -ENOSYS ; } -int sys_sched_getaffinity (pid_t pid,unsigned int len,unsigned long *new_mask_ptr); -int sys_sched_setaffinity (pid_t pid,unsigned int len,unsigned long *new_mask_ptr); +long sys_sched_getaffinity (pid_t pid,unsigned int len,unsigned long *new_mask_ptr); +long sys_sched_setaffinity (pid_t pid,unsigned int len,unsigned long *new_mask_ptr);/* only works on LE */ long sys32_sched_setaffinity(pid_t pid, unsigned int len,
fs/dcookies.c renamed from fs/dcookies.c%LONG +1 -1
@@ -142,7 +142,7 @@/* And here is where the userspace process can look up the cookie value * to retrieve the path. */ -asmlinkage int sys_lookup_dcookie(u64 cookie64, char * buf, size_t len) +asmlinkage long sys_lookup_dcookie (u64 cookie64,char * buf,size_t len) {unsigned long cookie = (unsigned long )cookie64;int err = -EINVAL ;
fs/readdir.c renamed from fs/readdir.c%LONG +1 -1
@@ -85,7 +85,7 @@return 0 ; } -asmlinkage int old_readdir(unsigned int fd, void * dirent, unsigned int count) +asmlinkage long old_readdir (unsigned int fd,void * dirent,unsigned int count) {int error;struct file * file;
kernel/fork.c renamed from kernel/fork.c%LONG +1 -1
@@ -736,7 +736,7 @@ p->flags = new_flags; } -asmlinkage int sys_set_tid_address(int *tidptr) +asmlinkage long sys_set_tid_address (int *tidptr) { current->clear_child_tid = tidptr;
kernel/sched.c renamed from kernel/sched.c%LONG +2 -2
@@ -1902,7 +1902,7 @@* @len: length in bytes of the bitmask pointed to by user_mask_ptr * @user_mask_ptr: user-space pointer to the new cpu mask */ -asmlinkage int sys_sched_setaffinity(pid_t pid, unsigned int len, +asmlinkage long sys_sched_setaffinity (pid_t pid,unsigned int len,unsigned long *user_mask_ptr) {unsigned long new_mask;
@@ -1954,7 +1954,7 @@* @len: length in bytes of the bitmask pointed to by user_mask_ptr * @user_mask_ptr: user-space pointer to hold the current cpu mask */ -asmlinkage int sys_sched_getaffinity(pid_t pid, unsigned int len, +asmlinkage long sys_sched_getaffinity (pid_t pid,unsigned int len,unsigned long *user_mask_ptr) {unsigned int real_len;
kernel/signal.c renamed from kernel/signal.c%LONG +1 -1
@@ -2254,7 +2254,7 @@#ifndef HAVE_ARCH_SYS_PAUSE -asmlinkage int +asmlinkage long sys_pause (void ) { current->state =TASK_INTERRUPTIBLE ;
mm/fremap.c renamed from mm/fremap.c%LONG +1 -1
@@ -110,7 +110,7 @@* or use PROT_NONE in the original linear mapping and add a special * SIGBUS pagefault handler to reinstall zapped mappings. */ -int sys_remap_file_pages (unsigned long start,unsigned long size, +long sys_remap_file_pages (unsigned long start,unsigned long size,unsigned long prot,unsigned long pgoff,unsigned long flags) {struct mm_struct *mm = current->mm;
include/linux/mm.h renamed from include/linux/mm.h%LONG +1 -1
@@ -421,7 +421,7 @@extern int handle_mm_fault (struct mm_struct *mm,struct vm_area_struct *vma,unsigned long address,int write_access);extern int make_pages_present (unsigned long addr,unsigned long end);extern int access_process_vm (struct task_struct *tsk,unsigned long addr,void *buf,int len,int write); -extern int sys_remap_file_pages (unsigned long start,unsigned long size,unsigned long prot,unsigned long pgoff,unsigned long nonblock); +extern long sys_remap_file_pages (unsigned long start,unsigned long size,unsigned long prot,unsigned long pgoff,unsigned long nonblock); int get_user_pages(struct task_struct *tsk, struct mm_struct *mm, unsigned long start,
Quoted 8 lines · Randy.Dunlap
Hi,
I posted this about 1 month ago (as [RFC]), to no avail. However, tonight Andi needs it for
pause()[which is failing onx86_64], and Robert Love mentioned converting the affinity syscalls. I had already done them, so here they are again.
Thanks. Is that all of them done now?
Quoted 5 lines · Andrew Morton
Quoted 3 lines · Randy.Dunlap
Hi,
Quoted 7 lines
Quoted 5 lines
I posted this about 1 month ago (as [RFC]), to no avail. However, tonight Andi needs it for
pause()[which is failing onx86_64], and Robert Love mentioned converting the affinity syscalls. I had already done them, so here they are again.Thanks. Is that all of them done now?
AFAIK, without guarantees. I used a list from Jamie Lokier and then went thru bunches of source files & syscalls myself and came up with these.
There are still some syscall prototypes that are declared as int instead of long, but I can't fix them tonight (zzz). Examples:
sys_sched_setaffinity arch/sparc64/, arch/ppc64/, arch/s390x/ (FIX PROTO) sys_sched_getaffinity arch/sparc64/, arch/ppc64/, arch/s390x/ (FIX PROTO) sys_remap_file_pages arch/sparc/ (FIX PROTO) sys_lookup_dcookie arch/sparc64/, arch/ppc64/, arch/parisc/ (FIX PROTO)
That's all that I know of.
~Randy
Quoted 1 line · Andrew Morton
Thanks. Is that all of them done now?
I think so, I just grepped the whole tree.
But... Here are some related cleanups that should accompany the original patch.
Against 2.5.65.
Robert Love
Documentation/DocBook/kernel-hacking.tmpl | 2 +- drivers/macintosh/via-pmu.c | 2 +- drivers/message/fusion/mptctl.c | 2 +- include/asm-parisc/unistd.h | 10 +++++----- include/linux/ioctl32.h | 2 +- kernel/suspend.c | 2 +- net/compat.c | 6 +++--- 7 files changed, 13 insertions(+), 13 deletions(-)
Documentation/DocBook/kernel-hacking.tmpl +1 -1
@@ -319,7 +319,7 @@ </para> <programlisting> -asmlinkage int sys_mycall(int arg) +asmlinkage long sys_mycall(int arg) { return 0; }
drivers/macintosh/via-pmu.c +1 -1
@@ -2002,7 +2002,7 @@last_jiffy_stamp (0 ) = tb_last_stamp =get_tbl (); } -extern int sys_sync (void ); +extern long sys_sync (void );#define GRACKLE_PM (1<<7)#define GRACKLE_DOZE (1<<5)
drivers/message/fusion/mptctl.c +1 -1
@@ -2743,7 +2743,7 @@ unsigned long, struct file *));int unregister_ioctl32_conversion (unsigned int cmd); -extern asmlinkage int sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg); +extern long sys_ioctl (unsigned int fd,unsigned int cmd,unsigned long arg);/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /* sparc32_XXX functions are used to provide a conversion between
include/asm-parisc/unistd.h +5 -5
@@ -842,19 +842,19 @@static inline pid_t setsid (void ) { -extern int sys_setsid (void ); +extern long sys_setsid (void );return sys_setsid (); }static inline int write (int fd,const char *buf,off_t count) { -extern int sys_write (int ,const char *,int ); +extern long sys_write (int ,const char *,int );return sys_write (fd, buf, count); }static inline int read (int fd,char *buf,off_t count) { -extern int sys_read (int ,char *,int ); +extern long sys_read (int ,char *,int );return sys_read (fd, buf, count); }
@@ -866,7 +866,7 @@static inline int dup (int fd) { -extern int sys_dup (int ); +extern long sys_dup (int );return sys_dup (fd); }
@@ -891,7 +891,7 @@static inline int _exit (int exitcode) { -extern int sys_exit (int ) __attribute__((noreturn)); +extern long sys_exit (int ) __attribute__((noreturn));return sys_exit (exitcode); }
include/linux/ioctl32.h +1 -1
@@ -3,7 +3,7 @@struct file ; -int sys_ioctl (unsigned int ,unsigned int ,unsigned long ); +extern long sys_ioctl (unsigned int ,unsigned int ,unsigned long );/* * Register an 32bit ioctl translation handler for ioctl cmd.
kernel/suspend.c +1 -1
@@ -65,7 +65,7 @@#include <asm/pgtable.h> #include <asm/io.h> -extern int sys_sync (void ); +extern long sys_sync (void );unsigned char software_suspend_enabled =0 ;
net/compat.c +3 -3
@@ -365,8 +365,8 @@ kmsg->msg_control = (void *) orig_cmsg_uptr; } -extern asmlinkage int sys_setsockopt(int fd, int level, int optname, -char *optval,int optlen); +extern long sys_setsockopt (int fd,int level,int optname, +char *optval,int optlen);static int do_netfilter_replace (int fd,int level,int optname,char *optval,int optlen)
@@ -530,7 +530,7 @@return err; } -asmlinkage int compat_sys_setsockopt(int fd, int level, int optname, +asmlinkage long compat_sys_setsockopt (int fd,int level,int optname,char *optval,int optlen) {if (optname ==IPT_SO_SET_REPLACE )
On 21 Mar 2003 01:51:50 -0500 Robert Love <[email protected]> wrote:
| -extern asmlinkage int sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg); | +extern long sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg);
keep the asmlinkage (or why not?)
| -extern asmlinkage int sys_setsockopt(int fd, int level, int optname, | - char *optval, int optlen); | +extern long sys_setsockopt(int fd, int level, int optname, | + char *optval, int optlen);
ditto
--
~Randy [resending after error on first attempt]
Quoted 6 lines · Randy.Dunlap
On 21 Mar 2003 01:51:50 -0500 Robert Love <[email protected]> wrote:
| -extern asmlinkage int
sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg); | +extern longsys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg);keep the asmlinkage (or why not?)
I always that it did not matter, but Arjan just pointed out otherwise (as you saw). So I guess these need to be reverted.
There are a handful of other such cases around the kernel...
Robert Love
Quoted 2 lines · Robert Love
I always that it did not matter, but Arjan just pointed out otherwise (as you saw). So I guess these need to be reverted.
And here is a patch to do so.
This patch, against 2.5.65 + the previous two, replaces the missing asmlinkage on prototypes.
Robert Love
drivers/message/fusion/mptctl.c | 3 ++- net/compat.c | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-)
drivers/message/fusion/mptctl.c +2 -1
@@ -2743,7 +2743,8 @@ unsigned long, struct file *));int unregister_ioctl32_conversion (unsigned int cmd); -extern long sys_ioctl (unsigned int fd,unsigned int cmd,unsigned long arg); +extern asmlinkage long sys_ioctl (unsigned int fd,unsigned int cmd, +unsigned long arg);/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /* sparc32_XXX functions are used to provide a conversion between
net/compat.c +2 -2
@@ -365,8 +365,8 @@ kmsg->msg_control = (void *) orig_cmsg_uptr; } -extern long sys_setsockopt (int fd,int level,int optname, -char *optval,int optlen); +extern asmlinkage long sys_setsockopt (int fd,int level,int optname, +char *optval,int optlen);static int do_netfilter_replace (int fd,int level,int optname,char *optval,int optlen)