1 /* 2 * (c) 2010 Alexander Warg <warg@os.inf.tu-dresden.de> 3 * economic rights: Technische Universität Dresden (Germany) 4 * 5 * This file is part of TUD:OS and distributed under the terms of the 6 * GNU General Public License 2. 7 * Please see the COPYING-GPL-2 file for details. 8 */ 9 #include <l4/re/env> 10 #include <l4/re/namespace> 11 #include <l4/sys/factory> 12 13 #include <lua.h> 14 #include <lauxlib.h> 15 #include <lualib.h> 16 #include "lua.h" 17 #include "lua_cap.h" 18 19 namespace Lua { 20 namespace { 21 22 class Lib_env : public Lib 23 { 24 public: Lib_env()25 Lib_env() : Lib(P_env) {} 26 init(lua_State * l)27 void init(lua_State *l) 28 { 29 #if 0 30 printf("initializing lua L4Re::Env\n"); 31 #endif 32 Lua::lua_require_module(l, "L4"); 33 lua_newtable(l); 34 lua_pushvalue(l, -1); 35 lua_setfield(l, -3, "Env"); 36 37 L4Re::Env const *e = L4Re::Env::env(); 38 39 register_cap(l, "parent", e->parent()); 40 register_cap(l, "mem_alloc", e->mem_alloc(), L4::Factory::Protocol); 41 register_cap(l, "rm", e->rm()); 42 register_cap(l, "log", e->log()); 43 register_cap(l, "factory", e->factory(), L4::Factory::Protocol); 44 register_cap(l, "scheduler", e->scheduler()); 45 46 for (L4Re::Env::Cap_entry const *i = e->initial_caps(); 47 i && i->flags != ~0UL; ++i) 48 { 49 register_cap(l, i->name, L4::Cap<L4::Kobject>(i->cap)); 50 } 51 52 lua_pop(l, 2); 53 } 54 }; 55 56 static Lib_env __env_lib; 57 58 }} 59