|
L4Re - L4 Runtime Environment
|
C++ Factory interface to create kernel objects. More...
Inheritance diagram for L4::Factory:
Collaboration diagram for L4::Factory:Data Structures | |
| struct | Lstr |
| Special type to add a pascal string into the factory create stream. More... | |
| struct | Nil |
| Special type to add a void argument into the factory create stream. More... | |
| class | S |
| Stream class for the create() argument stream. More... | |
Public Member Functions | |
| S | create (Cap< void > target, long obj, l4_utcb_t *utcb=l4_utcb()) throw () |
| Generic create call to the factory. More... | |
| template<typename OBJ > | |
| S | create (Cap< OBJ > target, l4_utcb_t *utcb=l4_utcb()) throw () |
| Create call for typed capabilities. More... | |
| l4_msgtag_t | create_task (Cap< Task > const &target_cap, l4_fpage_t const &utcb_area, l4_utcb_t *utcb=l4_utcb()) throw () |
| Create a new task. More... | |
| l4_msgtag_t | create_thread (Cap< Thread > const &target_cap, l4_utcb_t *utcb=l4_utcb()) throw () |
| Create a new thread. More... | |
| l4_msgtag_t | create_factory (Cap< Factory > const &target_cap, unsigned long limit, l4_utcb_t *utcb=l4_utcb()) throw () |
| Create a new factory. More... | |
| l4_msgtag_t | create_gate (Cap< void > const &target_cap, Cap< Thread > const &thread_cap, l4_umword_t label, l4_utcb_t *utcb=l4_utcb()) throw () |
| Create a new IPC gate. More... | |
| l4_msgtag_t | create_irq (Cap< Irq >const &target_cap, l4_utcb_t *utcb=l4_utcb()) throw () |
| Create a new IRQ. More... | |
| l4_msgtag_t | create_vm (Cap< Vm >const &target_cap, l4_utcb_t *utcb=l4_utcb()) throw () |
| Create a new virtual machine. More... | |
Public Member Functions inherited from L4::Kobject | |
| l4_msgtag_t | dec_refcnt (l4_mword_t diff, l4_utcb_t *utcb=l4_utcb()) |
| Decrement the in kernel reference counter for the object. More... | |
Additional Inherited Members | |
Protected Types inherited from L4::Kobject_t< Factory, Kobject, L4_PROTO_FACTORY > | |
| typedef Factory | Class |
| The target interface type (inheriting from Kobject_t) | |
| typedef Typeid::Iface< PROTO, Factory > | __Iface |
| The interface description for the derived class. | |
| typedef Typeid::Merge_list< Typeid::Iface_list< __Iface >, typename Kobject ::__Iface_list > | __Iface_list |
| The list of all RPC interfaces provided directly or through inheritance. | |
Protected Member Functions inherited from L4::Kobject_t< Factory, Kobject, L4_PROTO_FACTORY > | |
| L4::Cap< Class > | c () const |
| Get the capability to ourselves. | |
Protected Member Functions inherited from L4::Kobject | |
| l4_cap_idx_t | cap () const throw () |
| Return capability selector. More... | |
Static Protected Member Functions inherited from L4::Kobject_t< Factory, Kobject, L4_PROTO_FACTORY > | |
| static void | __check_protocols__ () |
| Helper to check for protocol conflicts. | |
C++ Factory interface to create kernel objects.
A factory is used to create all kinds of kernel objects:
The factory is equipped with a limit that limits the amount of kernel memory available to that factory.
For the C interface refer to Factory.
|
inline | ||||||||||||||||||||||||
Generic create call to the factory.
| [out] | target | Capability selector for the new object. The caller must allocate the capability slot. The kernel stores the new objects's capability into this slot. |
| obj | The protocol ID that specifies which kind of object shall be created. | |
| utcb | The UTCB to use for the operation. |
This method does currently not directly invoke the factory. It returns a stream that shall invoke the factory after adding all additional arguments.
Usage:
Definition at line 259 of file factory.
References L4::Kobject::cap().
Referenced by L4Re::Mem_alloc::alloc(), and create().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline | ||||||||||||||||||||
Create call for typed capabilities.
| OBJ | Capability type of the object to be created. |
| [out] | target | Capability of type OBJ. |
| utcb | UTCB to use. |
Definition at line 276 of file factory.
References L4::Kobject::cap(), create(), and L4_INLINE_RPC_NF.
Here is the call graph for this function:
|
inline | ||||||||||||||||||||||||
Create a new factory.
| [out] | target_cap | The kernel stores the new factory's capability into this slot. |
| limit | Limit for the new factory in bytes. | |
| utcb | The UTCB to use for the operation. |
Definition at line 342 of file factory.
References L4::Cap_base::cap(), L4::Kobject::cap(), and l4_factory_create_factory_u().
Here is the call graph for this function:
|
inline | ||||||||||||||||||||||||||||
Create a new IPC gate.
| [out] | target_cap | The kernel stores the new IPC gate's capability into this slot. |
| thread_cap | Optional capability selector of the thread to bind the gate to. Use L4_INVALID_CAP to create an unbound IPC gate. | |
| label | Optional label of the gate (is used if thread_cap is valid). | |
| utcb | The UTCB to use for the operation. |
| L4_EOK | No error occurred. |
| -L4_ENOMEM | Out-of-memory during allocation of the Ipc_gate object. |
| -L4_ENOENT | thread_cap is void or points to something that is not a thread. |
| -L4_EPERM | No write rights on thread_cap. |
An unbound IPC gate can be bound to a thread using L4::Ipc_gate::bind_thread().
Definition at line 372 of file factory.
References L4::Cap_base::cap(), L4::Kobject::cap(), and l4_factory_create_gate_u().
Here is the call graph for this function:
|
inline | ||||||||||||||||||||
Create a new IRQ.
| [out] | target_cap | The kernel stores the new IRQ's capability into this slot. |
| utcb | The UTCB to use for the operation. |
create() with Cap<Irq> as argument instead.Definition at line 390 of file factory.
References L4::Cap_base::cap(), L4::Kobject::cap(), and l4_factory_create_irq_u().
Here is the call graph for this function:
|
inline | ||||||||||||||||||||||||
Create a new task.
| [out] | target_cap | The kernel stores the new task's capability into this slot. |
| utcb_area | Flexpage that describes an area in the address space of the new task, where the kernel should map the kernel-allocated kernel-user memory to. The kernel uses the kernel-user memory to store UTCBs and vCPU state-save-areas of the new task. | |
| utcb | The UTCB to use for the operation. |
Definition at line 306 of file factory.
References L4::Cap_base::cap(), L4::Kobject::cap(), and l4_factory_create_task_u().
Here is the call graph for this function:
|
inline | ||||||||||||||||||||
Create a new thread.
| [out] | target_cap | The kernel stores the new thread's capability into this slot. |
| utcb | The UTCB to use for the operation. |
create() with Cap<Thread> as argument instead.Definition at line 324 of file factory.
References L4::Cap_base::cap(), L4::Kobject::cap(), and l4_factory_create_thread_u().
Here is the call graph for this function:
|
inline | ||||||||||||||||||||
Create a new virtual machine.
| [out] | target_cap | The kernel stores the new VM's capability into this slot. |
| utcb | The UTCB to use for the operation. |
create() with Cap<Vm> as argument instead.Definition at line 408 of file factory.
References L4::Cap_base::cap(), L4::Kobject::cap(), and l4_factory_create_vm_u().
Here is the call graph for this function: