tags 392236 patch stop I have attached a patch that replaces all the _syscall*() macros I found with calls to syscall() as required when building with Linux headers >= 2.6.18.
I trust you will check the changes carefully :) -Ted
diff -ru util-linux-2.12r/fdisk/llseek.c util-linux-2.12r-new/fdisk/llseek.c --- util-linux-2.12r/fdisk/llseek.c 2003-07-14 07:13:33.000000000 +1000 +++ util-linux-2.12r-new/fdisk/llseek.c 2006-10-13 15:50:09.000000000 +1000 @@ -14,30 +14,23 @@ #ifdef __linux__ -#ifdef HAVE_LLSEEK -#include <syscall.h> - -#else /* HAVE_LLSEEK */ +#include <sys/syscall.h> +#ifndef HAVE_LLSEEK #if defined(__alpha__) || defined(__ia64__) || defined(__s390x__) #define my_llseek lseek #else -#include <linux/unistd.h> /* for __NR__llseek */ - -static int _llseek (unsigned int, unsigned long, - unsigned long, long long *, unsigned int); -#ifdef __NR__llseek +#ifdef SYS__llseek -static _syscall5(int,_llseek,unsigned int,fd,unsigned long,offset_high, - unsigned long, offset_low,long long *,result, - unsigned int, origin) +#define _llseek(fd, offset_high, offset_low, result, origin) \ + syscall(SYS__llseek, fd, offset_high, offset_low, result, origin) #else -/* no __NR__llseek on compilation machine - might give it explicitly */ +/* no SYS__llseek on compilation machine - might give it explicitly */ static int _llseek (unsigned int fd, unsigned long oh, unsigned long ol, long long *result, unsigned int origin) { diff -ru util-linux-2.12r/fdisk/sfdisk.c util-linux-2.12r-new/fdisk/sfdisk.c --- util-linux-2.12r/fdisk/sfdisk.c 2005-01-05 08:31:57.000000000 +1000 +++ util-linux-2.12r-new/fdisk/sfdisk.c 2006-10-13 15:48:42.000000000 +1000 @@ -48,7 +48,7 @@ #include <sys/ioctl.h> #include <sys/stat.h> #include <sys/utsname.h> -#include <linux/unistd.h> /* _syscall */ +#include <sys/syscall.h> #include "nls.h" #include "common.h" @@ -177,9 +177,8 @@ #endif #ifndef use_lseek -static __attribute__used -_syscall5(int, _llseek, unsigned int, fd, ulong, hi, ulong, lo, - loff_t *, res, unsigned int, wh); +#define _llseek(fd, hi, lo, res, wh) \ + syscall(SYS__llseek, fd, hi, lo, res, wh) #endif static int diff -ru util-linux-2.12r/lib/my_reboot.c util-linux-2.12r-new/lib/my_reboot.c --- util-linux-2.12r/lib/my_reboot.c 1999-07-09 12:56:36.000000000 +1000 +++ util-linux-2.12r-new/lib/my_reboot.c 2006-10-13 20:46:42.000000000 +1000 @@ -23,10 +23,11 @@ #else /* no USE_LIBC */ /* direct syscall version */ -#include <linux/unistd.h> +#include <sys/syscall.h> -#ifdef _syscall3 -_syscall3(int, reboot, int, magic, int, magic_too, int, cmd); +#ifdef SYS_reboot +#define reboot(magic, magic2, cmd) \ + syscall(SYS_reboot, magic, magic2, cmd) #else /* Let us hope we have a 3-argument reboot here */ extern int reboot(int, int, int); diff -ru util-linux-2.12r/misc-utils/setterm.c util-linux-2.12r-new/misc-utils/setterm.c --- util-linux-2.12r/misc-utils/setterm.c 2003-10-18 02:17:51.000000000 +1000 +++ util-linux-2.12r-new/misc-utils/setterm.c 2006-10-13 20:54:06.000000000 +1000 @@ -119,14 +119,13 @@ #if __GNU_LIBRARY__ < 5 #ifndef __alpha__ -# include <linux/unistd.h> -#define __NR_klogctl __NR_syslog -_syscall3(int, klogctl, int, type, char*, buf, int, len); +# include <sys/syscall.h> +#define klogctl(type, buf, len) \ + syscall(SYS_syslog, type, buf, len) #else /* __alpha__ */ #define klogctl syslog #endif #endif -extern int klogctl(int type, char *buf, int len); /* Constants. */ diff -ru util-linux-2.12r/mount/swapon.c util-linux-2.12r-new/mount/swapon.c --- util-linux-2.12r/mount/swapon.c 2004-12-22 19:50:19.000000000 +1000 +++ util-linux-2.12r-new/mount/swapon.c 2006-10-13 16:08:19.000000000 +1000 @@ -82,11 +82,11 @@ #else /* We want a swapon with two args, but have an old libc. Build the kernel call by hand. */ -#include <linux/unistd.h> -static -_syscall2(int, swapon, const char *, path, int, flags); -static -_syscall1(int, swapoff, const char *, path); +#include <sys/syscall.h> +#define swapon(path, flags) \ + syscall(SYS_swapon, path, flags) +#define swapoff(path) \ + syscall(SYS_swapoff, path) #endif #else /* just do as libc says */ diff -ru util-linux-2.12r/mount/umount.c util-linux-2.12r-new/mount/umount.c --- util-linux-2.12r/mount/umount.c 2005-09-11 04:07:38.000000000 +1000 +++ util-linux-2.12r-new/mount/umount.c 2006-10-13 20:43:22.000000000 +1000 @@ -37,14 +37,13 @@ #else /* MNT_FORCE */ /* Does the present kernel source know about umount2? */ -#include <linux/unistd.h> -#ifdef __NR_umount2 +#include <sys/syscall.h> +#ifdef SYS_umount2 -static int umount2(const char *path, int flags); +#define umount2(path, flags) \ + syscall(SYS_umount2, path, flags) -_syscall2(int, umount2, const char *, path, int, flags); - -#else /* __NR_umount2 */ +#else /* SYS_umount2 */ static int umount2(const char *path, int flags) { @@ -52,7 +51,7 @@ errno = ENOSYS; return -1; } -#endif /* __NR_umount2 */ +#endif /* SYS_umount2 */ #if !defined(MNT_FORCE) /* dare not try to include <linux/mount.h> -- lots of errors */ diff -ru util-linux-2.12r/partx/partx.c util-linux-2.12r-new/partx/partx.c --- util-linux-2.12r/partx/partx.c 2004-08-24 06:13:27.000000000 +1000 +++ util-linux-2.12r-new/partx/partx.c 2006-10-13 21:01:34.000000000 +1000 @@ -338,10 +338,9 @@ #endif #ifdef NEED__llseek -#include <linux/unistd.h> /* _syscall */ -static -_syscall5(int, _llseek, uint, fd, ulong, hi, ulong, lo, - long long *, res, uint, wh); +#include <sys/syscall.h> +#define _llseek(fd, hi, lo, res, wh) \ + syscall(SYS__llseek, fd, hi, lo, res, wh) #endif static int diff -ru util-linux-2.12r/sys-utils/dmesg.c util-linux-2.12r-new/sys-utils/dmesg.c --- util-linux-2.12r/sys-utils/dmesg.c 2004-05-05 02:38:12.000000000 +1000 +++ util-linux-2.12r-new/sys-utils/dmesg.c 2006-10-13 21:05:10.000000000 +1000 @@ -29,7 +29,7 @@ * Only function 3 is allowed to non-root processes. */ -#include <linux/unistd.h> +#include <sys/syscall.h> #include <stdio.h> #include <getopt.h> #include <stdlib.h> @@ -38,8 +38,8 @@ #if __GNU_LIBRARY__ < 5 #ifndef __alpha__ -# define __NR_klogctl __NR_syslog - static inline _syscall3(int, klogctl, int, type, char *, b, int, len); +# define klogctl(type, b, len) \ + syscall(SYS_syslog, type, b, len) #else /* __alpha__ */ #define klogctl syslog #endif
signature.asc
Description: OpenPGP digital signature