Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.4.19 /init/main.c

Filename:/init/main.c
Lines Added:16
Lines Deleted:278
Also changed in: (Previous) 2.4.19-rc5-ac1  2.4.19-rc5  2.4.19-rc4  2.4.19-rc3-ac5  2.4.19-rc3-ac4  2.4.19-rc3-ac3 
(Following) 2.4.19-ac1  2.4.19-ac2  2.4.19-ac3  2.4.19-ac4  2.4.20-pre1-ac1  2.4.20-pre1-ac2 

Location
[  2.4.19
  [  init
     o  main.c

Patch

diff -urN linux-2.4.18/init/main.c linux-2.4.19/init/main.c
--- linux-2.4.18/init/main.c   Mon Feb 25 11:38:13 2002
+++ linux-2.4.19/init/main.c   Fri Aug  2 17:39:46 2002
@@ -106,9 +106,6 @@
 #if defined(CONFIG_SYSVIPC)
 extern void ipc_init(void);
 #endif
-#ifdef CONFIG_PERFMON
-extern void perfmon_init(void);
-#endif
 
 /*
  * Boot command-line arguments
@@ -121,17 +118,10 @@
 
 int rows, cols;
 
-#ifdef CONFIG_BLK_DEV_INITRD
-unsigned int real_root_dev;   /* do_proc_dointvec cannot handle kdev_t */
-#endif
-
-int root_mountflags = MS_RDONLY;
 char *execute_command;
-char root_device_name[64];
-
 
 static char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
-static char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
+char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
 
 static int __init profile_setup(char *str)
 {
@@ -142,175 +132,6 @@
 
 __setup("profile=", profile_setup);
 
-
-static struct dev_name_struct {
-   const char *name;
-   const int num;
-} root_dev_names[] __initdata = {
-   { "nfs",     0x00ff },
-   { "hda",     0x0300 },
-   { "hdb",     0x0340 },
-   { "loop",    0x0700 },
-   { "hdc",     0x1600 },
-   { "hdd",     0x1640 },
-   { "hde",     0x2100 },
-   { "hdf",     0x2140 },
-   { "hdg",     0x2200 },
-   { "hdh",     0x2240 },
-   { "hdi",     0x3800 },
-   { "hdj",     0x3840 },
-   { "hdk",     0x3900 },
-   { "hdl",     0x3940 },
-   { "hdm",     0x5800 },
-   { "hdn",     0x5840 },
-   { "hdo",     0x5900 },
-   { "hdp",     0x5940 },
-   { "hdq",     0x5A00 },
-   { "hdr",     0x5A40 },
-   { "hds",     0x5B00 },
-   { "hdt",     0x5B40 },
-   { "sda",     0x0800 },
-   { "sdb",     0x0810 },
-   { "sdc",     0x0820 },
-   { "sdd",     0x0830 },
-   { "sde",     0x0840 },
-   { "sdf",     0x0850 },
-   { "sdg",     0x0860 },
-   { "sdh",     0x0870 },
-   { "sdi",     0x0880 },
-   { "sdj",     0x0890 },
-   { "sdk",     0x08a0 },
-   { "sdl",     0x08b0 },
-   { "sdm",     0x08c0 },
-   { "sdn",     0x08d0 },
-   { "sdo",     0x08e0 },
-   { "sdp",     0x08f0 },
-   { "ada",     0x1c00 },
-   { "adb",     0x1c10 },
-   { "adc",     0x1c20 },
-   { "add",     0x1c30 },
-   { "ade",     0x1c40 },
-   { "fd",      0x0200 },
-   { "md",      0x0900 },        
-   { "xda",     0x0d00 },
-   { "xdb",     0x0d40 },
-   { "ram",     0x0100 },
-   { "scd",     0x0b00 },
-   { "mcd",     0x1700 },
-   { "cdu535",  0x1800 },
-   { "sonycd",  0x1800 },
-   { "aztcd",   0x1d00 },
-   { "cm206cd", 0x2000 },
-   { "gscd",    0x1000 },
-   { "sbpcd",   0x1900 },
-   { "eda",     0x2400 },
-   { "edb",     0x2440 },
-   { "pda",   0x2d00 },
-   { "pdb",   0x2d10 },
-   { "pdc",   0x2d20 },
-   { "pdd",   0x2d30 },
-   { "pcd",   0x2e00 },
-   { "pf",      0x2f00 },
-   { "apblock", APBLOCK_MAJOR << 8},
-   { "ddv", DDV_MAJOR << 8},
-   { "jsfd",    JSFD_MAJOR << 8},
-#if defined(CONFIG_ARCH_S390)
-   { "dasda", (DASD_MAJOR << MINORBITS) },
-   { "dasdb", (DASD_MAJOR << MINORBITS) + (1 << 2) },
-   { "dasdc", (DASD_MAJOR << MINORBITS) + (2 << 2) },
-   { "dasdd", (DASD_MAJOR << MINORBITS) + (3 << 2) },
-   { "dasde", (DASD_MAJOR << MINORBITS) + (4 << 2) },
-   { "dasdf", (DASD_MAJOR << MINORBITS) + (5 << 2) },
-   { "dasdg", (DASD_MAJOR << MINORBITS) + (6 << 2) },
-   { "dasdh", (DASD_MAJOR << MINORBITS) + (7 << 2) },
-#endif
-#if defined(CONFIG_BLK_CPQ_DA) || defined(CONFIG_BLK_CPQ_DA_MODULE)
-   { "ida/c0d0p",0x4800 },
-   { "ida/c0d1p",0x4810 },
-   { "ida/c0d2p",0x4820 },
-   { "ida/c0d3p",0x4830 },
-   { "ida/c0d4p",0x4840 },
-   { "ida/c0d5p",0x4850 },
-   { "ida/c0d6p",0x4860 },
-   { "ida/c0d7p",0x4870 },
-   { "ida/c0d8p",0x4880 },
-   { "ida/c0d9p",0x4890 },
-   { "ida/c0d10p",0x48A0 },
-   { "ida/c0d11p",0x48B0 },
-   { "ida/c0d12p",0x48C0 },
-   { "ida/c0d13p",0x48D0 },
-   { "ida/c0d14p",0x48E0 },
-   { "ida/c0d15p",0x48F0 },
-#endif
-#if defined(CONFIG_BLK_CPQ_CISS_DA) || defined(CONFIG_BLK_CPQ_CISS_DA_MODULE)
-   { "cciss/c0d0p",0x6800 },
-   { "cciss/c0d1p",0x6810 },
-   { "cciss/c0d2p",0x6820 },
-   { "cciss/c0d3p",0x6830 },
-   { "cciss/c0d4p",0x6840 },
-   { "cciss/c0d5p",0x6850 },
-   { "cciss/c0d6p",0x6860 },
-   { "cciss/c0d7p",0x6870 },
-   { "cciss/c0d8p",0x6880 },
-   { "cciss/c0d9p",0x6890 },
-   { "cciss/c0d10p",0x68A0 },
-   { "cciss/c0d11p",0x68B0 },
-   { "cciss/c0d12p",0x68C0 },
-   { "cciss/c0d13p",0x68D0 },
-   { "cciss/c0d14p",0x68E0 },
-   { "cciss/c0d15p",0x68F0 },
-#endif
-   { "nftla", 0x5d00 },
-   { "nftlb", 0x5d10 },
-   { "nftlc", 0x5d20 },
-   { "nftld", 0x5d30 },
-   { "ftla", 0x2c00 },
-   { "ftlb", 0x2c08 },
-   { "ftlc", 0x2c10 },
-   { "ftld", 0x2c18 },
-   { "mtdblock", 0x1f00 },
-   { NULL, 0 }
-};
-
-kdev_t __init name_to_kdev_t(char *line)
-{
-   int base = 0;
-
-   if (strncmp(line,"/dev/",5) == 0) {
-      struct dev_name_struct *dev = root_dev_names;
-      line += 5;
-      do {
-         int len = strlen(dev->name);
-         if (strncmp(line,dev->name,len) == 0) {
-            line += len;
-            base = dev->num;
-            break;
-         }
-         dev++;
-      } while (dev->name);
-   }
-   return to_kdev_t(base + simple_strtoul(line,NULL,base?10:16));
-}
-
-static int __init root_dev_setup(char *line)
-{
-   int i;
-   char ch;
-
-   ROOT_DEV = name_to_kdev_t(line);
-   memset (root_device_name, 0, sizeof root_device_name);
-   if (strncmp (line, "/dev/", 5) == 0) line += 5;
-   for (i = 0; i < sizeof root_device_name - 1; ++i)
-   {
-       ch = line[i];
-       if ( isspace (ch) || (ch == ',') || (ch == '\0') ) break;
-       root_device_name[i] = ch;
-   }
-   return 1;
-}
-
-__setup("root=", root_dev_setup);
-
 static int __init checksetup(char *line)
 {
    struct kernel_param *p;
@@ -377,22 +198,6 @@
       (loops_per_jiffy/(5000/HZ)) % 100);
 }
 
-static int __init readonly(char *str)
-{
-   if (*str)
-      return 0;
-   root_mountflags |= MS_RDONLY;
-   return 1;
-}
-
-static int __init readwrite(char *str)
-{
-   if (*str)
-      return 0;
-   root_mountflags &= ~MS_RDONLY;
-   return 1;
-}
-
 static int __init debug_kernel(char *str)
 {
    if (*str)
@@ -409,8 +214,6 @@
    return 1;
 }
 
-__setup("ro", readonly);
-__setup("rw", readwrite);
 __setup("debug", debug_kernel);
 __setup("quiet", quiet_kernel);
 
@@ -545,7 +348,6 @@
 asmlinkage void __init start_kernel(void)
 {
    char * command_line;
-   unsigned long mempages;
    extern char saved_command_line[];
 /*
  * Interrupts are still disabled. Do necessary setups, then
@@ -596,16 +398,21 @@
    kmem_cache_sizes_init();
    pgtable_cache_init();
 
-#ifdef CONFIG_PERFMON
-   perfmon_init();
-#endif
-   mempages = num_physpages;
-
-   fork_init(mempages);
+   /*
+    * For architectures that have highmem, num_mappedpages represents
+    * the amount of memory the kernel can use.  For other architectures
+    * it's the same as the total pages.  We need both numbers because
+    * some subsystems need to initialize based on how much memory the
+    * kernel can use.
+    */
+   if (num_mappedpages == 0)
+      num_mappedpages = num_physpages;
+  
+   fork_init(num_mappedpages);
    proc_caches_init();
-   vfs_caches_init(mempages);
-   buffer_init(mempages);
-   page_cache_init(mempages);
+   vfs_caches_init(num_physpages);
+   buffer_init(num_physpages);
+   page_cache_init(num_physpages);
 #if defined(CONFIG_ARCH_S390)
    ccwcache_init();
 #endif
@@ -628,21 +435,6 @@
    rest_init();
 }
 
-#ifdef CONFIG_BLK_DEV_INITRD
-static int do_linuxrc(void * shell)
-{
-   static char *argv[] = { "linuxrc", NULL, };
-
-   close(0);close(1);close(2);
-   setsid();
-   (void) open("/dev/console",O_RDWR,0);
-   (void) dup(0);
-   (void) dup(0);
-   return execve(shell, argv, envp_init);
-}
-
-#endif
-
 struct task_struct *child_reaper = &init_task;
 
 static void __init do_initcalls(void)
@@ -746,61 +538,7 @@
 #endif
 }
 
-extern void rd_load(void);
-extern void initrd_load(void);
-
-/*
- * Prepare the namespace - decide what/where to mount, load ramdisks, etc.
- */
-static void prepare_namespace(void)
-{
-#ifdef CONFIG_BLK_DEV_INITRD
-   int real_root_mountflags = root_mountflags;
-   if (!initrd_start)
-      mount_initrd = 0;
-   if (mount_initrd)
-      root_mountflags &= ~MS_RDONLY;
-   real_root_dev = ROOT_DEV;
-#endif
-
-#ifdef CONFIG_BLK_DEV_RAM
-#ifdef CONFIG_BLK_DEV_INITRD
-   if (mount_initrd)
-      initrd_load();
-   else
-#endif
-   rd_load();
-#endif
-
-   /* Mount the root filesystem.. */
-   mount_root();
-
-   mount_devfs_fs ();
-
-#ifdef CONFIG_BLK_DEV_INITRD
-   root_mountflags = real_root_mountflags;
-   if (mount_initrd && ROOT_DEV != real_root_dev
-       && MAJOR(ROOT_DEV) == RAMDISK_MAJOR && MINOR(ROOT_DEV) == 0) {
-      int error;
-      int i, pid;
-
-      pid = kernel_thread(do_linuxrc, "/linuxrc", SIGCHLD);
-      if (pid > 0) {
-         while (pid != wait(&i)) {
-            current->policy |= SCHED_YIELD;
-            schedule();
-         }
-      }
-      if (MAJOR(real_root_dev) != RAMDISK_MAJOR
-           || MINOR(real_root_dev) != 0) {
-         error = change_root(real_root_dev,"/initrd");
-         if (error)
-            printk(KERN_ERR "Change root to /initrd: "
-                "error %d\n",error);
-      }
-   }
-#endif
-}
+extern void prepare_namespace(void);
 
 static int init(void * unused)
 {


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.