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

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to