30 #include <l4/sys/cxx/ipc_varg> 87 Lstr(
char const *s,
int len) : s(s), len(len) {}
110 : u(o.u), t(o.t), f(o.f)
111 {
const_cast<S&
>(o).t.
raw = 0; }
126 : u(utcb), t(l4_factory_create_start_u(obj, target.cap(), u)), f(f)
136 l4_factory_create_commit_u(f, t, u);
146 l4_msgtag_t r = l4_factory_create_commit_u(f, t, u);
160 l4_factory_create_add_int_u(i, &t, u);
173 l4_factory_create_add_uint_u(i, &t, u);
186 S &operator << (
char const *s)
188 l4_factory_create_add_str_u(s, &t, u);
205 l4_factory_create_add_lstr_u(s.
s, s.
len, &t, u);
216 l4_factory_create_add_nil_u(&t, u);
229 l4_factory_create_add_fpage_u(d, &t, u);
261 return S(
cap(), obj, target, utcb);
275 template<
typename OBJ>
278 return S(
cap(), OBJ::Protocol, target, utcb);
l4_msgtag_t create_irq(Cap< Irq >const &target_cap, l4_utcb_t *utcb=l4_utcb())
Create a new IRQ.
C++ Factory interface to create kernel objects.
l4_msgtag_t l4_factory_create_vm_u(l4_cap_idx_t factory, l4_cap_idx_t target_cap, l4_utcb_t *utcb) L4_NOTHROW
Create a new virtual machine.
signed long l4_mword_t
Signed machine word.
Variably sized RPC argument.
char const * s
The character buffer.
L4 low-level kernel interface.
l4_msgtag_t l4_factory_create_task_u(l4_cap_idx_t factory, l4_cap_idx_t target_cap, l4_fpage_t const utcb_area, l4_utcb_t *utcb) L4_NOTHROW
Create a new task.
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())
Create a new IPC gate.
Special type to add a void argument into the factory create stream.
unsigned long l4_cap_idx_t
L4 Capability selector Type.
Special type to add a pascal string into the factory create stream.
l4_msgtag_t l4_factory_create_factory_u(l4_cap_idx_t factory, l4_cap_idx_t target_cap, unsigned long limit, l4_utcb_t *utcb) L4_NOTHROW
Create a new factory.
C++ L4 kernel thread interface.
struct l4_utcb_t l4_utcb_t
Opaque type for the UTCB.
l4_msgtag_t l4_factory_create_gate_u(l4_cap_idx_t factory, l4_cap_idx_t target_cap, l4_cap_idx_t thread_cap, l4_umword_t label, l4_utcb_t *utcb) L4_NOTHROW
Create a new IPC gate.
S(l4_cap_idx_t f, long obj, L4::Cap< void > target, l4_utcb_t *utcb)
Create a stream for a specific create() call.
Mark an argument as a output value in an RPC signature.
L4::Cap related definitions.
Stream class for the create() argument stream.
List of RPCs of an interface using a single operation without an opcode.
l4_msgtag_t l4_factory_create_irq_u(l4_cap_idx_t factory, l4_cap_idx_t target_cap, l4_utcb_t *utcb) L4_NOTHROW
Create a new IRQ.
l4_msgtag_t create_thread(Cap< Thread > const &target_cap, l4_utcb_t *utcb=l4_utcb())
Create a new thread.
l4_cap_idx_t cap() const
Return capability selector.
Lstr(char const *s, int len)
unsigned long l4_umword_t
Unsigned machine word.
l4_msgtag_t create_factory(Cap< Factory > const &target_cap, unsigned long limit, l4_utcb_t *utcb=l4_utcb())
Create a new factory.
S create(Cap< void > target, long obj, l4_utcb_t *utcb=l4_utcb())
Generic create call to the factory.
Common factory related definitions.
Interface Definition Language.
S create(Cap< OBJ > target, l4_utcb_t *utcb=l4_utcb())
Create call for typed capabilities.
l4_msgtag_t l4_factory_create_thread_u(l4_cap_idx_t factory, l4_cap_idx_t target_cap, l4_utcb_t *utcb) L4_NOTHROW
Create a new thread.
S(S const &o)
Create a copy.
l4_utcb_t * l4_utcb(void) L4_NOTHROW L4_PURE
Get the UTCB address.
l4_msgtag_t create_task(Cap< Task > const &target_cap, l4_fpage_t const &utcb_area, l4_utcb_t *utcb=l4_utcb())
Create a new task.
RPC attribute for an RPC call with required rights.
l4_cap_idx_t cap() const
Return capability selector.
Helper class to create an L4Re interface class that is derived from a single base class...
int len
The number of characters in the buffer.
struct l4_msgtag_t l4_msgtag_t
Message tag data structure.
C++ interface for capabilities.
Message tag data structure.
l4_msgtag_t create_vm(Cap< Vm >const &target_cap, l4_utcb_t *utcb=l4_utcb())
Create a new virtual machine.
#define L4_INLINE_RPC_NF(res, name, args...)
Define an inline RPC call type (the type only, no callable).
#define L4_DEPRECATED(s)
Mark symbol deprecated.
~S()
Commit the operation in the destructor to have a cool syntax for create().