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.

137<br />

level<br />

RUMP_COMPONENT_KERN<br />

RUMP_COMPONENT_VFS<br />

RUMP_COMPONENT_NET<br />

RUMP_COMPONENT_NET_ROUTE<br />

RUMP_COMPONENT_NET_IF<br />

RUMP_COMPONENT_NET_IFCFG<br />

RUMP_COMPONENT_DEV<br />

RUMP_COMPONENT_KERN_VFS<br />

purpose<br />

base initialization which is done before any<br />

factions are attached<br />

VFS components<br />

basic networking, attaching <strong>of</strong> networking<br />

domains<br />

routing, can be done only after all domains<br />

have attached<br />

interface creation (e.g. lo0)<br />

interface configuration, must be done after<br />

interfaces are created<br />

device components<br />

base initialization which is done after <strong>the</strong><br />

VFS faction has attached, e.g. base components<br />

which do VFS operations<br />

Table 3.4: <strong>Rump</strong> component classes. <strong>The</strong> RUMP_COMPONENT facility allows<br />

to specify component initialization at rump kernel bootstrap time. Due to interdependencies<br />

between subsystems, <strong>the</strong> component type specifies <strong>the</strong> order in which<br />

components are initialized. <strong>The</strong> order <strong>of</strong> component initialization is from top to<br />

bottom.<br />

kernel code imposes. For example, <strong>the</strong> networking domains must be attached before<br />

interfaces can be configured. It is legal (<strong>and</strong> sometimes necessary) for components<br />

to define several init routines with different configuration times. We found it necessary<br />

to define eight different levels. <strong>The</strong>y are presented in Table 3.4 in order <strong>of</strong><br />

runtime initialization. Notably, <strong>the</strong> multitude <strong>of</strong> networking-related initialization<br />

levels conveys <strong>the</strong> current status <strong>of</strong> <strong>the</strong> NetBSD TCP/IP stack: it is not yet modular<br />

— a modular TCP/IP stack would encode <strong>the</strong> cross-dependencies in <strong>the</strong> drivers<br />

<strong>the</strong>mselves.

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

Saved successfully!

Ooh no, something went wrong!