This is a 2.2.17pre20 refresh of the /proc/config.gz patch originally
created by, well, here are the credits:
Oliver Xymoron <oxymoron@waste.org> Jan 15 1999
Derived from a patch by Nicholas Leon <nicholas@binary9.net> with
suggestions from Michael Chastain <mec@shout.net> and Peter T. Breuer
I've been using it for at least a year and it's great....
Index: Documentation/Configure.help
--- Documentation/Configure.help.prev
+++ Documentation/Configure.help Fri Aug 4 18:52:48 2000
@@ -7816,4 +7816,12 @@
programs depend on this, so everyone should say Y here.
+/proc/config.gz support
+CONFIG_PROC_CONFIG
+ Say Y here if you want a copy of your current kernel configuration
+ saved in the kernel that you build. This is extremely useful if you
+ ever build more than one kernel. The cost is around 1K-4K of running
+ memory. Only say no if you really can't spare this. You can sneeze
+ and lose more on memory than this.
+
NFS filesystem support
CONFIG_NFS_FS
Index: include/linux/proc_fs.h
--- include/linux/proc_fs.h.prev
+++ include/linux/proc_fs.h Fri Aug 4 18:52:48 2000
@@ -52,5 +52,6 @@
PROC_STRAM,
PROC_SOUND,
- PROC_MTRR, /* whether enabled or not */
+ PROC_MTRR, /* whether enabled or not */
+ PROC_CONFIG, /* whether enabled or not */
PROC_FS
};
Index: Makefile
--- Makefile.prev
+++ Makefile Fri Aug 4 18:52:48 2000
@@ -264,4 +264,15 @@
@ touch include/config/MARKER
+cloneconfig: symlinks scripts/split-include
+ @if [ -f "/proc/config.gz" ]; then \
+ mv -f .config .config.bak; \
+ gzip -d < /proc/config.gz > .config; \
+ if [ -r include/linux/autoconf.h ]; then \
+ scripts/split-include include/linux/autoconf.h include/config; \
+ fi; \
+ else \
+ echo "Your current kernel does not support cloning."; \
+ fi
+
linuxsubdirs: $(patsubst %, _dir_%, $(SUBDIRS))
@@ -297,4 +308,7 @@
@mv -f .ver $@
+include/linux/config_data.h: newversion scripts/bin2c
+ gzip -9 < .config | scripts/bin2c kernel_config_data > $@
+
include/linux/version.h: ./Makefile
@echo \#define UTS_RELEASE \"$(KERNELRELEASE)\" > .ver
@@ -303,5 +317,5 @@
@mv -f .ver $@
-init/version.o: init/version.c include/linux/compile.h include/config/MARKER
+init/version.o: init/version.c include/linux/compile.h include/linux/config_data.h include/config/MARKER
$(CC) $(CFLAGS) -DUTS_MACHINE='"$(ARCH)"' -c -o init/version.o init/version.c
@@ -375,5 +389,5 @@
rm -f core `find . -type f -name 'core' -print`
rm -f core `find . -name '.*.flags' -print`
- rm -f vmlinux System.map
+ rm -f vmlinux System.map include/linux/config_data.h
rm -f .tmp*
rm -f drivers/char/consolemap_deftbl.c drivers/video/promcon_tbl.c
@@ -406,5 +420,5 @@
rm -f .depend `find . -name .depend -print`
rm -f core `find . -size 0 -print`
- rm -f .hdepend scripts/mkdep scripts/split-include
+ rm -f .hdepend scripts/mkdep scripts/split-include scripts/bin2c
rm -f $(TOPDIR)/include/linux/modversions.h
rm -rf $(TOPDIR)/include/linux/modules
@@ -488,2 +502,5 @@
scripts/split-include: scripts/split-include.c
$(HOSTCC) $(HOSTCFLAGS) -o scripts/split-include scripts/split-include.c
+
+scripts/bin2c: scripts/bin2c.c
+ $(HOSTCC) $(HOSTCFLAGS) -o scripts/bin2c scripts/bin2c.c
Index: fs/Config.in
--- fs/Config.in.prev
+++ fs/Config.in Fri Aug 4 18:52:48 2000
@@ -35,4 +35,7 @@
tristate 'OS/2 HPFS filesystem support (read only)' CONFIG_HPFS_FS
bool '/proc filesystem support' CONFIG_PROC_FS
+if [ "$CONFIG_PROC_FS" = "y" ] ; then
+ bool ' /proc/config.gz (kernel configuration)' CONFIG_PROC_CONFIG
+fi
if [ "$CONFIG_UNIX98_PTYS" = "y" ]; then
# It compiles as a module for testing only. It should not be used
Index: fs/proc/array.c
--- fs/proc/array.c.prev
+++ fs/proc/array.c Fri Aug 4 18:52:48 2000
@@ -415,4 +415,15 @@ static int get_version(char * buffer)
}
+#ifdef CONFIG_PROC_CONFIG
+static int get_proc_config(char *buffer)
+{
+ extern char *kernel_config_data;
+ extern int kernel_config_data_size;
+
+ memcpy(buffer, kernel_config_data, kernel_config_data_size);
+ return kernel_config_data_size;
+}
+#endif
+
static int get_cmdline(char * buffer)
{
@@ -1461,4 +1472,9 @@ static long get_root_array(char * page,
return get_stram_list(page);
#endif
+#ifdef CONFIG_PROC_CONFIG
+ case PROC_CONFIG:
+ return get_proc_config(page);
+#endif
+
}
return -EBADF;
Index: fs/proc/root.c
--- fs/proc/root.c.prev
+++ fs/proc/root.c Fri Aug 4 18:52:48 2000
@@ -691,4 +691,11 @@ static struct proc_dir_entry proc_root_p
};
#endif
+#ifdef CONFIG_PROC_CONFIG
+static struct proc_dir_entry proc_root_config = {
+ PROC_CONFIG, 9, "config.gz",
+ S_IFREG | S_IRUGO, 1, 0, 0,
+ 0, &proc_array_inode_operations
+};
+#endif
__initfunc(void proc_root_init(void))
@@ -771,5 +778,7 @@ __initfunc(void proc_root_init(void))
proc_device_tree_init();
#endif
-
+#ifdef CONFIG_PROC_CONFIG
+ proc_register(&proc_root, &proc_root_config);
+#endif
proc_bus = create_proc_entry("bus", S_IFDIR, 0);
}
Index: init/version.c
--- init/version.c.prev
+++ init/version.c Fri Aug 4 18:52:48 2000
@@ -7,8 +7,12 @@
*/
+#include <linux/config.h>
#include <linux/uts.h>
#include <linux/utsname.h>
#include <linux/version.h>
#include <linux/compile.h>
+#ifdef CONFIG_PROC_CONFIG
+#include <linux/config_data.h>
+#endif
#define version(a) Version_ ## a
Index: scripts/bin2c.c
--- /dev/null Tue May 9 16:53:16 2000
+++ scripts/bin2c.c Fri Aug 4 18:52:48 2000
@@ -0,0 +1,23 @@
+#include <stdio.h>
+
+int main(int argc, char *argv[])
+{
+ int ch,total=0;
+
+ if(argc>1) printf("const char *%s %s=\n",argv[1],argc>2?argv[2]:"");
+
+ do {
+ printf("\t\"");
+ while((ch=getchar())!=EOF)
+ {
+ total++;
+ printf("\\x%02x",ch);
+ if(total%16==0) break;
+ }
+ printf("\"\n");
+ } while(ch!=EOF);
+
+ if(argc>1) printf("\t;\n\nconst int %s_size = %d;\n",argv[1],total);
+
+ return 0;
+}
-- Chip Salzenberg - a.k.a. - <chip@valinux.com> "I wanted to play hopscotch with the impenetrable mystery of existence, but he stepped in a wormhole and had to go in early." // MST3K - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Thu Aug 31 2000 - 21:00:24 EST