|
|
|
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
|
|
|
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
|
|
|
#
|
|
|
|
# Filename: package/.../devfsd/linux-2.6.patch
|
|
|
|
# Copyright (C) 2004 - 2006 The T2 SDE Project
|
|
|
|
#
|
|
|
|
# More information can be found in the files COPYING and README.
|
|
|
|
#
|
|
|
|
# This patch file is dual-licensed. It is available under the license the
|
|
|
|
# patched project is licensed under, as long as it is an OpenSource license
|
|
|
|
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
|
|
|
|
# of the GNU General Public License as published by the Free Software
|
|
|
|
# Foundation; either version 2 of the License, or (at your option) any later
|
|
|
|
# version.
|
|
|
|
# --- SDE-COPYRIGHT-NOTE-END ---
|
|
|
|
--- devfsd/check_kernel.c.kernel25 2003-06-02 22:17:21.000000000 +0400
|
|
|
|
+++ devfsd/check_kernel.c 2003-06-02 22:17:43.000000000 +0400
|
|
|
|
@@ -0,0 +1,30 @@
|
|
|
|
+#include <sys/types.h>
|
|
|
|
+#include <stdio.h>
|
|
|
|
+#include <unistd.h>
|
|
|
|
+#include <errno.h>
|
|
|
|
+#include <asm/unistd.h>
|
|
|
|
+
|
|
|
|
+extern char *modules_devfs;
|
|
|
|
+
|
|
|
|
+/* copied over from module-init-tools backward_compat.c */
|
|
|
|
+#ifndef __ia64 /* breaks ia64. */
|
|
|
|
+static _syscall2(long, create_module, const char *, name, size_t, size);
|
|
|
|
+#else
|
|
|
|
+#define create_module(name, size) \
|
|
|
|
+ syscall(__NR_create_module, (name), (size))
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+void check_kernel_version (int verbose)
|
|
|
|
+{
|
|
|
|
+ int k26 = 1;
|
|
|
|
+
|
|
|
|
+ errno = 0;
|
|
|
|
+ if (create_module(NULL, 0) >= 0 | errno != ENOSYS) {
|
|
|
|
+ modules_devfs = "/etc/modules.devfs";
|
|
|
|
+ k26 = 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (verbose)
|
|
|
|
+ fprintf (stderr, "devfsd: kernel %s detected, using %s for MODLOAD\n",
|
|
|
|
+ k26 ? "2.6" : "2.4", modules_devfs);
|
|
|
|
+}
|
|
|
|
--- devfsd/devfsd.c.kernel25 2003-06-02 22:17:21.000000000 +0400
|
|
|
|
+++ devfsd/devfsd.c 2003-06-02 22:17:21.000000000 +0400
|
|
|
|
@@ -396,10 +396,14 @@ EXTERN_FUNCTION (flag st_expr_expand,
|
|
|
|
EXTERN_FUNCTION (const char *get_old_name,
|
|
|
|
(const char *devname, unsigned int namelen,
|
|
|
|
char *buffer, unsigned int major, unsigned int minor) );
|
|
|
|
-
|
|
|
|
+EXTERN_FUNCTION (void check_kernel_version,
|
|
|
|
+ (int) );
|
|
|
|
|
|
|
|
/* Public data */
|
|
|
|
flag syslog_is_open = FALSE;
|
|
|
|
+/* set to new style, runtime test might override it later */
|
|
|
|
+char *modules_devfs = "/etc/modprobe.devfs";
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
/* Public functions */
|
|
|
|
@@ -508,7 +512,6 @@ static struct event_type
|
|
|
|
{0xffffffff, NULL, NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
-
|
|
|
|
/* Public functions follow */
|
|
|
|
|
|
|
|
int main (int argc, char **argv)
|
|
|
|
@@ -652,6 +655,7 @@ int main (int argc, char **argv)
|
|
|
|
/* Set umask so that mknod(2), open(2) and mkdir(2) have complete control
|
|
|
|
over permissions */
|
|
|
|
umask (0);
|
|
|
|
+ check_kernel_version (trace_level);
|
|
|
|
read_config (CONFIG_FILE, FALSE, &event_mask);
|
|
|
|
/* Do the scan before forking, so that boot scripts see the finished
|
|
|
|
product */
|
|
|
|
@@ -1243,7 +1247,7 @@ static void action_modload (const struct
|
|
|
|
argv[0] = "/sbin/modprobe";
|
|
|
|
argv[1] = "-k";
|
|
|
|
argv[2] = "-C";
|
|
|
|
- argv[3] = "/etc/modules.devfs";
|
|
|
|
+ argv[3] = modules_devfs;
|
|
|
|
argv[4] = device;
|
|
|
|
argv[5] = NULL;
|
|
|
|
snprintf (device, sizeof (device), "/dev/%s", info->devname);
|
|
|
|
--- devfsd/GNUmakefile.kernel25 2002-02-19 09:06:43.000000000 +0300
|
|
|
|
+++ devfsd/GNUmakefile 2003-06-02 22:17:21.000000000 +0400
|
|
|
|
@@ -18,13 +18,16 @@ endif
|
|
|
|
all: devfsd rpm.spec
|
|
|
|
|
|
|
|
|
|
|
|
-OBJECTS = devfsd.o expression.o compat_name.o
|
|
|
|
+OBJECTS = devfsd.o expression.o compat_name.o check_kernel.o
|
|
|
|
|
|
|
|
CFLAGS = -O2 -I. -I$(KERNEL_DIR)/include -Wall $(CEXTRAS) $(DEFINES)
|
|
|
|
|
|
|
|
devfsd: $(OBJECTS)
|
|
|
|
$(CC) -O2 -o devfsd $(OBJECTS) $(LDFLAGS) -export-dynamic -ldl
|
|
|
|
|
|
|
|
+check_kernel.o: check_kernel.c
|
|
|
|
+ $(CC) -O2 -c $<
|
|
|
|
+
|
|
|
|
install: devfsd
|
|
|
|
@if fgrep -q "Generic section: do not change" /etc/modules.conf ; then\
|
|
|
|
echo "First remove the generic devfs entries from /etc/modules.conf"; exit 1; \
|