r1738 - in glibc-package: branches/glibc-2.4/debian/patches/any trunk/debian/patches/any
Author: aurel32
Date: 2006-08-15 17:45:24 +0000 (Tue, 15 Aug 2006)
New Revision: 1738
Modified:
glibc-package/branches/glibc-2.4/debian/patches/any/local-sysctl.diff
glibc-package/trunk/debian/patches/any/local-sysctl.diff
Log:
Update any/local-sysctl.diff to not use sysctl() in ioperm() on arm.
Modified: glibc-package/branches/glibc-2.4/debian/patches/any/local-sysctl.diff
===================================================================
--- glibc-package/branches/glibc-2.4/debian/patches/any/local-sysctl.diff 2006-08-15 16:48:04 UTC (rev 1737)
+++ glibc-package/branches/glibc-2.4/debian/patches/any/local-sysctl.diff 2006-08-15 17:45:24 UTC (rev 1738)
@@ -76,3 +76,56 @@
libc_hidden_def (__sysctl)
weak_alias (__sysctl, sysctl)
+link_warning (__sysctl, "the `sysctl' syscall has been removed from 2.6.18+ kernels, direct access to `/proc/sys' should be used instead.")
+diff -Nurd glibc-2.3.6.orig/sysdeps/unix/sysv/linux/arm/ioperm.c glibc-2.3.6/sysdeps/unix/sysv/linux/arm/ioperm.c
+--- glibc-2.3.6.orig/sysdeps/unix/sysv/linux/arm/ioperm.c.orig 2006-08-15 18:23:08.715868260 +0200
++++ glibc-2.3.6/sysdeps/unix/sysv/linux/arm/ioperm.c 2006-08-15 19:30:07.215439365 +0200
+@@ -49,6 +49,8 @@
+
+ #define PATH_ARM_SYSTYPE "/etc/arm_systype"
+ #define PATH_CPUINFO "/proc/cpuinfo"
++#define PATH_PORTBASE "/proc/bus/isa/portbase"
++#define PATH_PORTSHIFT "/proc/bus/isa/portshift"
+
+ #define MAX_PORT 0x10000
+
+@@ -100,15 +102,25 @@
+ {
+ char systype[256];
+ int i, n;
+- static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE };
+- static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT };
++ FILE * fp;
++
+ size_t len = sizeof(io.base);
+
+- if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0)
+- && ! sysctl (ioshift_name, 3, &io.shift, &len, NULL, 0))
++ if (fp = fopen (PATH_PORTBASE, "r"))
+ {
+- io.initdone = 1;
+- return 0;
++ n = fscanf (fp, "%li", &io.io_base);
++ fclose(fp);
++
++ if (n == 1 && (fp = fopen(PATH_PORTSHIFT, "r")))
++ {
++ n = fscanf (fp, "%i", &io.io_shift);
++ fclose(fp);
++ if (n == 1)
++ {
++ io.initdone = 1;
++ return 0;
++ }
++ }
+ }
+
+ n = readlink (PATH_ARM_SYSTYPE, systype, sizeof (systype) - 1);
+@@ -127,8 +139,6 @@
+ }
+ else
+ {
+- FILE * fp;
+-
+ fp = fopen (PATH_CPUINFO, "r");
+ if (! fp)
+ return -1;
Modified: glibc-package/trunk/debian/patches/any/local-sysctl.diff
===================================================================
--- glibc-package/trunk/debian/patches/any/local-sysctl.diff 2006-08-15 16:48:04 UTC (rev 1737)
+++ glibc-package/trunk/debian/patches/any/local-sysctl.diff 2006-08-15 17:45:24 UTC (rev 1738)
@@ -76,3 +76,56 @@
libc_hidden_def (__sysctl)
weak_alias (__sysctl, sysctl)
+link_warning (__sysctl, "the `sysctl' syscall has been removed from 2.6.18+ kernels, direct access to `/proc/sys' should be used instead.")
+diff -Nurd glibc-2.3.6.orig/sysdeps/unix/sysv/linux/arm/ioperm.c glibc-2.3.6/sysdeps/unix/sysv/linux/arm/ioperm.c
+--- glibc-2.3.6.orig/sysdeps/unix/sysv/linux/arm/ioperm.c.orig 2006-08-15 18:23:08.715868260 +0200
++++ glibc-2.3.6/sysdeps/unix/sysv/linux/arm/ioperm.c 2006-08-15 19:30:07.215439365 +0200
+@@ -49,6 +49,8 @@
+
+ #define PATH_ARM_SYSTYPE "/etc/arm_systype"
+ #define PATH_CPUINFO "/proc/cpuinfo"
++#define PATH_PORTBASE "/proc/bus/isa/portbase"
++#define PATH_PORTSHIFT "/proc/bus/isa/portshift"
+
+ #define MAX_PORT 0x10000
+
+@@ -100,15 +102,25 @@
+ {
+ char systype[256];
+ int i, n;
+- static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE };
+- static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT };
++ FILE * fp;
++
+ size_t len = sizeof(io.base);
+
+- if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0)
+- && ! sysctl (ioshift_name, 3, &io.shift, &len, NULL, 0))
++ if (fp = fopen (PATH_PORTBASE, "r"))
+ {
+- io.initdone = 1;
+- return 0;
++ n = fscanf (fp, "%li", &io.io_base);
++ fclose(fp);
++
++ if (n == 1 && (fp = fopen(PATH_PORTSHIFT, "r")))
++ {
++ n = fscanf (fp, "%i", &io.io_shift);
++ fclose(fp);
++ if (n == 1)
++ {
++ io.initdone = 1;
++ return 0;
++ }
++ }
+ }
+
+ n = readlink (PATH_ARM_SYSTYPE, systype, sizeof (systype) - 1);
+@@ -127,8 +139,6 @@
+ }
+ else
+ {
+- FILE * fp;
+-
+ fp = fopen (PATH_CPUINFO, "r");
+ if (! fp)
+ return -1;
Reply to: