Lines Matching refs:L4
53 public L4::Basic_registry,
54 public L4::Registry_iface
60 struct Null_handler : L4::Epiface_t<Null_handler, L4::Kobject>
64 L4::Cap<L4::Thread> _server;
65 L4::Cap<L4::Factory> _factory;
66 L4::Ipc_svr::Server_iface *_sif;
78 Object_registry(L4::Ipc_svr::Server_iface *sif)
92 Object_registry(L4::Ipc_svr::Server_iface *sif,
93 L4::Cap<L4::Thread> server,
94 L4::Cap<L4::Factory> factory)
99 typedef L4::Ipc_svr::Server_iface Server_iface;
102 L4::Cap<L4::Rcv_endpoint>
103 _register_ep(L4::Epiface *o, L4::Cap<L4::Rcv_endpoint> ep,
108 return L4::Cap<L4::Rcv_endpoint>(err | L4_INVALID_CAP_BIT);
113 return L4::Cap<L4::Rcv_endpoint>(err | L4_INVALID_CAP_BIT);
117 return L4::Cap<L4::Rcv_endpoint>(err | L4_INVALID_CAP_BIT);
122 L4::Cap<void> _register_ep(L4::Epiface *o, char const *service,
125 L4::Cap<L4::Rcv_endpoint> cap = L4Re::Env::env()->get_cap<L4::Rcv_endpoint>(service);
132 L4::Cap<void> _register_gate(L4::Epiface *o, Demand const &demand)
136 return L4::Cap<void>(err | L4_INVALID_CAP_BIT);
138 auto cap = L4Re::Util::make_unique_cap<L4::Kobject>();
146 return L4::Cap<void>(err | L4_INVALID_CAP_BIT);
150 return L4::Cap<void>(err | L4_INVALID_CAP_BIT);
155 L4::Cap<L4::Irq> _register_irq(L4::Epiface *o,
160 return L4::Cap<L4::Irq>(err | L4_INVALID_CAP_BIT);
162 auto cap = L4Re::Util::make_unique_cap<L4::Irq>();
170 return L4::Cap<L4::Irq>(err | L4_INVALID_CAP_BIT);
174 return L4::Cap<L4::Irq>(err | L4_INVALID_CAP_BIT);
178 return L4::Cap<L4::Irq>(err | L4_INVALID_CAP_BIT);
183 static Demand _get_buffer_demand(L4::Epiface *o)
188 typename L4::Kobject_typeid<typename T::Interface>::Demand
189 d = typename L4::Kobject_typeid<typename T::Interface>::Demand())
199 * \retval L4::Cap<void> The capability known as `service` on success.
200 * \retval L4::Cap<void>::Invalid No capability with the given name found.
205 L4::Cap<void> register_obj(L4::Epiface *o, char const *service) override
215 * \retval L4::Cap<void> A valid capability to a new IPC gate.
216 * \retval L4::Cap<void>::Invalid The allocation of the IPC gate
222 L4::Cap<void> register_obj(L4::Epiface *o) override
232 * \retval L4::Cap<L4::Irq> Capability to a new IRQ object on success.
233 * \retval L4::Cap<L4::Irq>::Invalid The allocation of the IRQ has failed.
238 L4::Cap<L4::Irq> register_irq_obj(L4::Epiface *o) override
244 using L4::Registry_iface::register_irq_obj;
253 * \retval L4::Cap<L4::Rcv_endpoint> Capability `ep` on success.
254 * \retval L4::Cap<L4::Rcv_endpoint>::Invalid The IRQ attach operation has failed.
259 L4::Cap<L4::Rcv_endpoint>
260 register_obj(L4::Epiface *o, L4::Cap<L4::Rcv_endpoint> ep) override
276 void unregister_obj(L4::Epiface *o, bool unmap = true) override
278 L4::Epiface::Stored_cap c;
286 L4::Thread::Modify_senders todo;
288 ~0UL, reinterpret_cast<l4_umword_t>((L4::Epiface*)&_null_handler));
292 L4::Cap<L4::Task>(L4Re::This_task)->unmap(c.fpage(), L4_FP_ALL_SPACES);
298 o->set_server(0, L4::Cap<void>::Invalid);
305 template< typename LOOP_HOOKS = L4::Ipc_svr::Default_loop_hooks >
306 class Registry_server : public L4::Server<LOOP_HOOKS>
309 typedef L4::Server<LOOP_HOOKS> Base;
331 Registry_server(l4_utcb_t *, L4::Cap<L4::Thread> server,
332 L4::Cap<L4::Factory> factory)
342 Registry_server(L4::Cap<L4::Thread> server,
343 L4::Cap<L4::Factory> factory)
359 { Base::template loop<L4::Runtime_error, Object_registry &>(_registry, utcb); }