Diff for /src/sys/kern/kern_linker.c between versions 1.13 and 1.14

version 1.13, 2003/11/10 06:12:13 version 1.14, 2003/11/14 00:37:22
Line 51 Line 51
 int kld_debug = 0;  int kld_debug = 0;
 #endif  #endif
   
   /* Metadata from the static kernel */
   SET_DECLARE(modmetadata_set, struct mod_metadata);
 MALLOC_DEFINE(M_LINKER, "kld", "kernel linker");  MALLOC_DEFINE(M_LINKER, "kld", "kernel linker");
   
 linker_file_t linker_current_file;  linker_file_t linker_current_file;
 linker_file_t linker_kernel_file;  linker_file_t linker_kernel_file;
   
Line 905  out: Line 908  out:
     return error;      return error;
 }  }
   
   static struct mod_metadata *
   find_mod_metadata(const char *modname)
   {
       int len;
       struct mod_metadata **mdp;
       struct mod_metadata *mdt;
   
       /*
        * Strip path prefixes and any dot extension
        */
       for (len = strlen(modname) - 1; len >= 0; --len) {
           if (modname[len] == '/')
               break;
       }
       modname += len + 1;
       for (len = 0; modname[len] && modname[len] != '.'; ++len)
           ;
   
       /*
        * Look for the module declaration
        */
       SET_FOREACH(mdp, modmetadata_set) {
           mdt = *mdp;
           if (mdt->md_type != MDT_MODULE)
               continue;
           if (strlen(mdt->md_cval) == len &&
               strncmp(mdt->md_cval, modname, len) == 0
           ) {
               return(mdt);
           }
       }
       return(NULL);
   }
   
 /*  /*
  * Preloaded module support   * Preloaded module support
  */   */
   
 static void  static void
 linker_preload(void* arg)  linker_preload(void* arg)
 {  {
Line 934  linker_preload(void* arg) Line 970  linker_preload(void* arg)
             printf("Preloaded module at %p does not have a type!\n", modptr);              printf("Preloaded module at %p does not have a type!\n", modptr);
             continue;              continue;
         }          }
        printf("Preloaded %s \"%s\" at %p.\n", modtype, modname, modptr);
         /*
          * This is a hack at the moment, but what's in FreeBSD-5 is even 
          * worse so I'd rather the hack.
          */
         printf("Preloaded %s \"%s\" at %p", modtype, modname, modptr);
         if (find_mod_metadata(modname)) {
             printf(" (ignored, already in static kernel)\n");
             continue;
         }
         printf(".\n");
 
         lf = linker_find_file_by_name(modname);          lf = linker_find_file_by_name(modname);
         if (lf) {          if (lf) {
             lf->userrefs++;              lf->userrefs++;

Removed from v.1.13  
changed lines
  Added in v.1.14