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; \
 | 
						|
 |