Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 22 Feb 2014 22:03:27 +0000 (UTC)
From:      Ian Lepore <ian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r262345 - head/sys/boot/common
Message-ID:  <201402222203.s1MM3RIu070952@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ian
Date: Sat Feb 22 22:03:26 2014
New Revision: 262345
URL: http://svnweb.freebsd.org/changeset/base/262345

Log:
  Change file_loadraw() from static to public.  Change the order of its
  arguments from type,filename to filename,type to be consistant with other
  public file_whatever() functions, and change it to return a pointer to
  the preloaded_file struct describing the file.  Adjust existing callers.

Modified:
  head/sys/boot/common/bootstrap.h
  head/sys/boot/common/module.c

Modified: head/sys/boot/common/bootstrap.h
==============================================================================
--- head/sys/boot/common/bootstrap.h	Sat Feb 22 21:35:40 2014	(r262344)
+++ head/sys/boot/common/bootstrap.h	Sat Feb 22 22:03:26 2014	(r262345)
@@ -233,6 +233,7 @@ int			mod_loadkld(const char *name, int 
 struct preloaded_file *file_alloc(void);
 struct preloaded_file *file_findfile(char *name, char *type);
 struct file_metadata *file_findmetadata(struct preloaded_file *fp, int type);
+struct preloaded_file *file_loadraw(char *name, char *type);
 void file_discard(struct preloaded_file *fp);
 void file_addmetadata(struct preloaded_file *fp, int type, size_t size, void *p);
 int  file_addmodule(struct preloaded_file *fp, char *modname, int version,

Modified: head/sys/boot/common/module.c
==============================================================================
--- head/sys/boot/common/module.c	Sat Feb 22 21:35:40 2014	(r262344)
+++ head/sys/boot/common/module.c	Sat Feb 22 22:03:26 2014	(r262345)
@@ -52,7 +52,6 @@ struct moduledir {
 };
 
 static int			file_load(char *filename, vm_offset_t dest, struct preloaded_file **result);
-static int			file_loadraw(char *type, char *name);
 static int			file_load_dependencies(struct preloaded_file *base_mod);
 static char *			file_search(const char *name, char **extlist);
 static struct kernel_module *	file_findmodule(struct preloaded_file *fp, char *modname, struct mod_depend *verinfo);
@@ -134,7 +133,7 @@ command_load(int argc, char *argv[])
 	    command_errmsg = "invalid load type";
 	    return(CMD_ERROR);
 	}
-	return(file_loadraw(typestr, argv[1]));
+	return(file_loadraw(argv[1], typestr) ? CMD_OK : CMD_ERROR);
     }
     /*
      * Do we have explicit KLD load ?
@@ -189,7 +188,7 @@ command_load_geli(int argc, char *argv[]
     argv += (optind - 1);
     argc -= (optind - 1);
     sprintf(typestr, "%s:geli_keyfile%d", argv[1], num);
-    return(file_loadraw(typestr, argv[2]));
+    return(file_loadraw(argv[2], typestr) ? CMD_OK : CMD_ERROR);
 }
 
 COMMAND_SET(unload, "unload", "unload all modules", command_unload);
@@ -357,8 +356,8 @@ file_load_dependencies(struct preloaded_
  * We've been asked to load (name) as (type), so just suck it in,
  * no arguments or anything.
  */
-int
-file_loadraw(char *type, char *name)
+struct preloaded_file *
+file_loadraw(char *name, char *type)
 {
     struct preloaded_file	*fp;
     char			*cp;
@@ -368,21 +367,21 @@ file_loadraw(char *type, char *name)
     /* We can't load first */
     if ((file_findfile(NULL, NULL)) == NULL) {
 	command_errmsg = "can't load file before kernel";
-	return(CMD_ERROR);
+	return(NULL);
     }
 
     /* locate the file on the load path */
     cp = file_search(name, NULL);
     if (cp == NULL) {
 	sprintf(command_errbuf, "can't find '%s'", name);
-	return(CMD_ERROR);
+	return(NULL);
     }
     name = cp;
 
     if ((fd = open(name, O_RDONLY)) < 0) {
 	sprintf(command_errbuf, "can't open '%s': %s", name, strerror(errno));
 	free(name);
-	return(CMD_ERROR);
+	return(NULL);
     }
 
     if (archsw.arch_loadaddr != NULL)
@@ -398,7 +397,7 @@ file_loadraw(char *type, char *name)
 	    sprintf(command_errbuf, "error reading '%s': %s", name, strerror(errno));
 	    free(name);
 	    close(fd);
-	    return(CMD_ERROR);
+	    return(NULL);
 	}
 	laddr += got;
     }
@@ -419,7 +418,7 @@ file_loadraw(char *type, char *name)
     /* Add to the list of loaded files */
     file_insert_tail(fp);
     close(fd);
-    return(CMD_OK);
+    return(fp);
 }
 
 /*



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201402222203.s1MM3RIu070952>