Fw: Lua was Re: Quickstart Build instructions

Chris Johns chrisj at rtems.org
Tue Apr 10 06:02:42 UTC 2018


On 10/04/2018 15:58, Russell Haley wrote:
> On Mon, Apr 9, 2018 at 5:53 PM, Chris Johns <chrisj at rtems.org
> <mailto:chrisj at rtems.org>> wrote:
>     On 10/04/2018 10:40, Gedare Bloom wrote:
>     > On Mon, Apr 9, 2018 at 4:17 PM, Russell Haley <russ.haley at gmail.com <mailto:russ.haley at gmail.com>
>     > <mailto:russ.haley at gmail.com <mailto:russ.haley at gmail.com>>> wrote:
>     >             I'd like to start with getting other Lua scripts running. My goal is
>     >             to load a library called penlight that's a few dozens of files. Is
>     >             there a utility for creating and loading resources? I'll also look
>     >             at compiling the files using the luac compiler, but that's outside
>     >             of rtems.
>     >
>     > No worries. There is evolving support (pretty mature by now) for dynamically
>     > loading object code, if that is what you mean: the Runtime Loader (RTL).  I
>     > don't have any experience with it though. Chris Johns is the expert on that topic.
>     >  
> 
>     The support is based around the standard calls 'dlopen' etc. You can load ELF
>     object files. You do need a symbol table in the kernel and a simple makefile
>     recipe can be found in the testsuite which works on the sparc simulator:
> 
>     https://git.rtems.org/rtems/tree/testsuites/libtests/Makefile.am#n319
>     <https://git.rtems.org/rtems/tree/testsuites/libtests/Makefile.am#n319>
> 
>      (search for TEST_dl01 in the Makefile.am if the line has moved)
> 
>     Note, the erc32 sim does not have access to a host's file system so you will
>     need to package the object files into a tar file just as the test does.
> 
> Hi Chris, good to hear from you. Yes, the non-filesystem is what I'm trying to
> deal with. Lua can run as C or as Lua scripts. The dlopen support is excellent
> and I'll look into that when I start loading C. There are many fine Lua wrappers
> for some of the best C tools. Since, I'm trying to load lua scripts, the tar
> package sounds like what I need to look at first.

I did wonder what you are loading.

> Lua scripts can be loaded as a 'string' buffer (char array), or from a file.
> Either of those methods can load a text file or a Lua VM binary. Using binary is
> apparently faster to load, but must be compiled for the same architecture. The
> run speed is the same.  

Python is similar.

> A simple Lua script to load a second module would look like this:
> 
>     local my_lib = require('mylib.init')
>     local new_val = my_lib.dosomething()
> 
> The require() function loads the file from a filesystem based on the
> package.path string. On my windows box, it looks like this:
> 
> .\?.lua;C:\Program Files (x86)\LuaRocks\lua\?.lua;C:\Program Files
> (x86)\LuaRocks\lua\?\init.lua;C:\Program Files
> (x86)\LuaRocks\?.lua;C:\Users\russh\scripts\?\init.lua;C:\Users\russh\scripts\?.lua;C:\Users\russh;C:\Program
> Files (x86)\WinLua\Lua\5.3\bin\?53.dll;
> 
> So, the require('mylib.init') would get translated so the '.' becomes the path
> separator on the filesystem, and any '?' in the package.path is replaced with
> the package name, eventually landing on C:\Users\russh\scripts\mylib\init.lua.
> Let's see how that translates to RTEMS... 
> 

Please keep us updated with your progress.

Chris



More information about the users mailing list