On Wednesday 13 June 2007, Karel Zak wrote: > On Wed, Jun 13, 2007 at 04:37:14AM -0400, Mike Frysinger wrote: > > On Wednesday 13 June 2007, Karel Zak wrote: > > > On Tue, Jun 12, 2007 at 11:25:24PM -0400, Mike Frysinger wrote: > > > > patch fixes this ... not that i can even guess why asm/page.h is > > > > needed in the first place since swapon doesnt use any of the PAGE_* > > > > defines ... > > > > > > I think we needn't asm/page.h anymore. > > > > that works for me as well ;) > > Well, you need to re-submit a new version of your patch ;-)) fooie ! glancing through swapon.c, looks like i'll just clean it up ... this patch scrubs anything related to SWAPON_NEEDS_TWO_ARGS as this is only relevant for <linux-1.3.2 and i say it's about time we let it go. i also cleaned up the system call fallback logic as the _syscall#() macros are the deprecated interface in favor of the real syscall() function. asm/page.h gets the boot as nothing in swapon.c utilizes defines from it while unistd.h gets always included as defines/functions are used from it other than just swapon(). Signed-off-by: Mike Frysinger <vapier@xxxxxxxxxx> --- diff --git a/mount/swapon.c b/mount/swapon.c index a8e5cc1..e5f945e 100644 --- a/mount/swapon.c +++ b/mount/swapon.c @@ -11,24 +11,29 @@ #include <mntent.h> #include <errno.h> #include <sys/stat.h> +#include <unistd.h> #include "xmalloc.h" #include "swap_constants.h" #include "nls.h" #include "fsprobe.h" #include "realpath.h" +#ifdef HAVE_SYS_SWAP_H +# include <sys/swap.h> +#endif + +#ifndef SWAPON_HAS_TWO_ARGS +/* libc is insane, let's call the kernel */ +# include <sys/syscall.h> +# define swapon(path, flags) syscall(SYS_swapon, path, flags) +# define swapoff(path) syscall(SYS_swapoff, path) +#endif + #define streq(s, t) (strcmp ((s), (t)) == 0) #define _PATH_FSTAB "/etc/fstab" #define PROC_SWAPS "/proc/swaps" -#ifdef SWAPON_HAS_TWO_ARGS -# include <asm/page.h> -# include <sys/swap.h> -#endif - -#define SWAPON_NEEDS_TWO_ARGS - #define QUIET 1 int all = 0; @@ -75,24 +80,6 @@ swapoff_usage(FILE *fp, int n) { exit(n); } -#ifdef SWAPON_HAS_TWO_ARGS -#define SWAPON_NEEDS_TWO_ARGS -#endif - -#if defined(SWAPON_NEEDS_TWO_ARGS) && !defined(SWAPON_HAS_TWO_ARGS) -/* 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); -#else -/* just do as libc says */ -#include <unistd.h> -#endif - - /* * contents of /proc/swaps */ @@ -219,7 +206,6 @@ do_swapon(const char *orig_special, int prio) { } } -#ifdef SWAPON_NEEDS_TWO_ARGS { int flags = 0; @@ -234,9 +220,7 @@ do_swapon(const char *orig_special, int prio) { #endif status = swapon(special, flags); } -#else - status = swapon(special); -#endif + if (status < 0) { int errsv = errno; fprintf(stderr, "%s: %s: %s\n", - To unsubscribe from this list: send the line "unsubscribe util-linux-ng" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html