1/**
2\page l4re_concepts Programming for L4Re
3- \subpage l4re_concepts_kernel_factory
4
5\page l4re_concepts_kernel_factory Kernel Factory
6
7The kernel factory is a kernel object that provides the ability to create new
8kernel objects dynamically.
9
10The kernel factory enforces a memory quota. This quota defines the maximum
11amount of kernel memory the factory service can use to construct the requested
12objects. When the quota is depleted, the factory refuses the creation of new
13objects.
14
15The quota may be higher than the amount of available kernel memory; ultimately,
16the amount of available kernel memory is the strict limit for the factory to
17remain operational.
18
19The kernel factory creates the following kinds of objects:
20
21- \ref l4_kernel_object_dmar_space
22- L4::Factory
23- L4::Ipc_gate
24- L4::Irq
25- L4::Semaphore
26- L4::Task
27- L4::Thread
28- L4::Vm
29
30The protocol IDs for objects in this list are given in \ref l4_msgtag_protocol.
31The protocol ID shall be used as the second argument for
32L4::Factory.create(Cap<void>, long, l4_utcb_t *).
33
34For the C++ interface see L4::Factory, for the C interface see
35\ref l4_factory_api.
36
37\section kernel_factory_create Passing parameters for the create stream
38
39L4::Factory.create() returns a [create stream](\ref L4::Factory::S) that
40allows arguments to be forwarded to the constructor of the object to be
41created.
42
43Objects that support additional parameters on their creation are presented with
44a non-empty list of parameters. The parameters are listed in the order they
45should be provided to a create stream returned by L4::Factory.create().
46
47 - \link l4_kernel_object_dmar_space Dmar_space\endlink()
48 - L4::Factory(\ref l4_umword_t)
49   - Argument: factory quota (in bytes).
50   - See L4::Factory.create_factory() for details.
51 - L4::Ipc_gate()
52   - Creates an unbound IPC gate.
53   - Alternatively, an IPC gate can be immediately bound to a thread upon
54     creation using L4::Factory.create_gate().
55 - L4::Irq()
56 - L4::Semaphore()
57 - L4::Task(\ref l4_fpage_t)
58   - Argument: utcb_area
59   - See L4::Factory.create_task() for details.
60 - L4::Thread()
61 - L4::Vm()
62*/
63