Module Name: src Committed By: tls Date: Sun Aug 10 06:52:29 UTC 2014
Modified Files: src/lib/librumpvfs [tls-earlyentropy]: rump_etfs.3 Log Message: Rebase. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.6.2.1 src/lib/librumpvfs/rump_etfs.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/librumpvfs/rump_etfs.3 diff -u src/lib/librumpvfs/rump_etfs.3:1.6 src/lib/librumpvfs/rump_etfs.3:1.6.2.1 --- src/lib/librumpvfs/rump_etfs.3:1.6 Thu Dec 19 15:51:39 2013 +++ src/lib/librumpvfs/rump_etfs.3 Sun Aug 10 06:52:29 2014 @@ -1,4 +1,4 @@ -.\" $NetBSD: rump_etfs.3,v 1.6 2013/12/19 15:51:39 pooka Exp $ +.\" $NetBSD: rump_etfs.3,v 1.6.2.1 2014/08/10 06:52:29 tls Exp $ .\" .\" Copyright (c) 2010 Antti Kantee. All rights reserved. .\" @@ -23,7 +23,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd December 19, 2013 +.Dd June 13, 2014 .Dt RUMP_ETFS 3 .Os .Sh NAME @@ -42,6 +42,8 @@ rump kernel (librump, \-lrump) .Fa "const char *key" "const char *hostpath" "enum rump_etfs_type ftype" .Fa "uint64_t begin" "uint64_t size" .Fc +.Ft void +.Fn rump_boot_etfs_register "struct rump_boot_etfs *eb" .Ft int .Fn rump_pub_etfs_remove "const char *key" .Sh DESCRIPTION @@ -128,6 +130,56 @@ is given the special value the underlying file is mapped from .Ar begin to the end of the file. +.It Fn rump_boot_etfs_register "eb" +Unlike the above interfaces, +.Fn rump_boot_etfs_register +can and must be called before +.Fn rump_init . +It causes an etfs key to be available immediately when the root file +system is mounted as part of +.Fn rump_init . +The intended use is for example for firmware images to be available +immediately when device driver autoconfiguration is run as part of +.Fn rump_init . +.Pp +To use +.Fn rump_boot_etfs_register , +the client fills out +.Fa eb . +The layout of +.Fa eb +is as follows: +.Bd -literal +struct rump_boot_etfs { + /* client initializes */ + const char *eb_key; + const char *eb_hostpath; + enum rump_etfs_type eb_type; + uint64_t eb_begin; + uint64_t eb_size; + + /* rump kernel initializes */ + struct rump_boot_etfs *_eb_next; + int eb_status; +}; +.Ed +.Pp +All of the client fields must be initialized before the call. +See +.Fn rump_pub_etfs_register_withsize +for descriptions of the fields. +After the function has been called, the client may not touch the +structure memory or the pathname pointers. +After +.Fn rump_init +returns, the client may check the status of the registration from +.Fa eb_status +and free the structure. +A value of \-1 designates that the etfs registration was not +performed, 0 designates success and a value larger than 0 designates +an errno. +The client must serialize calls to +.Fn rump_boot_etfs_register . .It Fn rump_pub_etfs_remove "key" Remove etfs mapping for .Fa key .