28.08.2015 Views

The Design and Implementation of the Anykernel and Rump Kernels

1F3KDce

1F3KDce

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

166<br />

A tmpfs server listening on INADDR_ANY port 12765:<br />

$ rump_server -lrumpvfs -lrumpfs_tmpfs tcp://0:12765/<br />

Map 1GB host file dk.img as <strong>the</strong> block device /dev/dk using etfs, specify local<br />

domain URL using a relative path:<br />

$ rump_allserver -d key=/dev/dk,hostpath=dk.img,size=1g unix://dkserv<br />

A TCP/IP server with <strong>the</strong> if_virt driver, specify socket using an absolute path:<br />

$ rump_server -lrumpnet -lrumpnet_net -lrumpnet_netinet \<br />

-lrumpnet_virt unix:///tmp/tcpip<br />

Figure 3.34: Example invocations lines <strong>of</strong> rump_server. All invocations<br />

create rump kernels listening for clients at different addresses with different capabilities.<br />

drivers supported by <strong>the</strong> server are given as comm<strong>and</strong> line arguments <strong>and</strong> dynamically<br />

loaded by <strong>the</strong> server. <strong>The</strong> variant rump_allserver includes all rump kernel<br />

components that were available at <strong>the</strong> time that <strong>the</strong> system was built. Figure 3.34<br />

illustrates server usage with examples.<br />

<strong>The</strong> data transport <strong>and</strong> protocol layer for remote clients is implemented entirely<br />

within <strong>the</strong> hypervisor. Because host sockets were used already, those layers were<br />

convenient to implement <strong>the</strong>re. This implementation locus means that <strong>the</strong> kernel<br />

side <strong>of</strong> <strong>the</strong> server <strong>and</strong> <strong>the</strong> hypercall layer need to communicate with each o<strong>the</strong>r. <strong>The</strong><br />

interfaces used for communication are a straightforward extension <strong>of</strong> <strong>the</strong> communication<br />

protocol we will discuss in detail next (Section 3.12.4); we will not discuss<br />

<strong>the</strong> interfaces. <strong>The</strong> interfaces are defined in sys/rump/include/rump/rumpuser.h<br />

<strong>and</strong> are implemented in lib/librumpuser/rumpuser_sp.c for <strong>the</strong> hypervisor <strong>and</strong><br />

sys/rump/librump/rumpkern/rump.c for <strong>the</strong> kernel.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!