]> Zhao Yanbai Git Server - minix.git/commitdiff
Env_memory_parse: move into VM 14/714/1
authorAntoine Leca <Antoine.Leca.1@gmail.com>
Wed, 3 Apr 2013 13:14:34 +0000 (15:14 +0200)
committerDavid van Moolenbroek <david@minix3.org>
Wed, 7 Aug 2013 16:30:27 +0000 (16:30 +0000)
Only possible user of that function.
While here, fix bug about NR_MEMS vs MAXMEMMAP
NR_MEMS=16 is currently less than MAXMEMMAP=40; avoid overriding

include/env.h
lib/libsys/env_parse.c
servers/vm/utility.c

index eb115724cff59f403801cce62d19de45bbab35eb..2d01a4bac850ea8d07483d2d88f44a3faa6c0e75 100644 (file)
@@ -2,5 +2,3 @@ int env_parse(char *env, char *fmt, int field, long *param, long min,
        long max);
 void env_panic(char *env);
 int env_prefix(char *env, char *prefix);
-int env_memory_parse(struct memory *chunks, int nchunks);
-
index e466d25755f3a4f36bfaeda5113f1915e5e5d365..b5c867f0363ddc4a1c1b99a02f7bf9d61d969f19 100644 (file)
@@ -89,27 +89,3 @@ badenv:
   env_panic(env);
   return -1;
 }
-
-/*=========================================================================*
- *                             env_memory_parse                           *
- *=========================================================================*/
-
-int env_memory_parse(mem_chunks, maxchunks)
-struct memory *mem_chunks;     /* where to store the memory bits */
-int maxchunks;                 /* how many were found */
-{
-  static kinfo_t kinfo;
-  int mm, r;
-
-  if((r=sys_getkinfo(&kinfo)) != OK) return r;
-
-  /* Initialize everything to zero. */
-  memset(mem_chunks, 0, maxchunks*sizeof(*mem_chunks));
-
-  for(mm = 0; mm < MAXMEMMAP; mm++) {
-       mem_chunks[mm].base = kinfo.memmap[mm].addr;
-       mem_chunks[mm].size = kinfo.memmap[mm].len;
-  }
-
-  return OK;
-}
index eeb1fd9db7a774ee988ef25d91d9974867c1aca4..9c7640f892aac8600c61cf219c25b3373d700037 100644 (file)
 /*===========================================================================*
  *                              get_mem_chunks                               *
  *===========================================================================*/
-void get_mem_chunks(mem_chunks)
-struct memory *mem_chunks;                      /* store mem chunks here */ 
+void get_mem_chunks(
+struct memory *mem_chunks)                      /* store mem chunks here */ 
 {  
-/* Initialize the free memory list from the 'memory' boot variable.  Translate
+/* Initialize the free memory list from the kernel-provided memory map.  Translate
  * the byte offsets and sizes in this list to clicks, properly truncated.
  */
   phys_bytes base, size, limit;
   int i;
   struct memory *memp;
 
-  /* Obtain and parse memory from system environment. */
-  if(env_memory_parse(mem_chunks, NR_MEMS) != OK) 
-        panic("couldn't obtain memory chunks"); 
-        
+  /* Initialize everything to zero. */
+  memset(mem_chunks, 0, NR_MEMS*sizeof(*mem_chunks));
+
+  /* Obtain and parse memory from kernel environment. */
+  /* XXX Any memory chunk in excess of NR_MEMS is silently ignored. */
+  for(i = 0; i < MIN(MAXMEMMAP, NR_MEMS); i++) {
+       mem_chunks[i].base = kernel_boot_info.memmap[i].addr;
+       mem_chunks[i].size = kernel_boot_info.memmap[i].len;
+  }
+
   /* Round physical memory to clicks. Round start up, round end down. */
   for (i = 0; i < NR_MEMS; i++) {
         memp = &mem_chunks[i];          /* next mem chunk is stored here */