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
[
syscalls-long-2565.patch 4K ]
patch_name: syscalls-long-2560.patch
patch_version: 2003-02-13.22:58:43
description: convert arch-independent syscalls to long return values;
product: Linux
product_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(-)
diff -Naur ./arch/x86_64/ia32/sys_ia32.c%LONG ./arch/x86_64/ia32/sys_ia32.c
--- ./arch/x86_64/ia32/sys_ia32.c%LONG Mon Feb 10 10:38:29 2003
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,
diff -Naur ./fs/dcookies.c%LONG ./fs/dcookies.c
--- ./fs/dcookies.c%LONG Mon Feb 10 10:37:55 2003
/* 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;
diff -Naur ./fs/readdir.c%LONG ./fs/readdir.c
--- ./fs/readdir.c%LONG Mon Feb 10 10:38:31 2003
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;
diff -Naur ./kernel/fork.c%LONG ./kernel/fork.c
--- ./kernel/fork.c%LONG Mon Feb 10 10:37:58 2003
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;
diff -Naur ./kernel/sched.c%LONG ./kernel/sched.c
--- ./kernel/sched.c%LONG Mon Feb 10 10:38:49 2003
*/
-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)
{
*/
-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;
diff -Naur ./kernel/signal.c%LONG ./kernel/signal.c
--- ./kernel/signal.c%LONG Mon Feb 10 10:38:26 2003
#ifndef HAVE_ARCH_SYS_PAUSE
-asmlinkage int
+asmlinkage long
sys_pause(void)
{
current->state = TASK_INTERRUPTIBLE;
diff -Naur ./mm/fremap.c%LONG ./mm/fremap.c
--- ./mm/fremap.c%LONG Mon Feb 10 10:37:56 2003
* 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%LONG Mon Mar 17 13:43:39 2003
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,