You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.6 KiB
111 lines
3.6 KiB
# --- 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; \
|
|
|