Re: shared dataspace for l4re_kernel/ registering additional caps in ned

"Stark, Josef" <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <[email protected]>
>>To tell the second Ned about your new FS, you will have to link it
>>with libmount (l4/pkg/libc_backends/lib/mount) and provide an fstab
>>file during startup in the Lua config as this:
>>
>>ldr:startv( { caps = {},
>>              log = { "myapp", "red" }
>>            },
>>            "rom/myapp",
>>            {
>>                FSTAB_FILE="rom/myfstab.fstab"
>>            });
>>
>>This lib will then mount the new file system locally into your
>>application (e.g., the second ned instance).
>
>Ned doesn't need to know about this filesystem,
>but my manager application and the l4re thread of
>the new task do.
>
>Linking and using the manager with libmount works fine.
>
>But I have some problems linking l4re with libmount.
>Mostly undefined references:
>
>Initially, I tried simply adding libmount to  REQUIRES_LIBS
>of the makefile, but that gave a lot of linker errors.
>So I replaced most of the minimal lib versions with the full-
>fledged ones:
>REQUIRES_LIBS  := libc l4re-util libstdc++ libloader \
>cxx_libc_io libc_be_minimal_log_io
>
>Without libmount, this also builds fine.
>But after adding libmount, this leads to undefined references of
>open, fstat, mount and close.
>After adding libc_be_l4refile to the list (since it seems to contain the
>missing symbols), l4re_env_posix_vfs_ops is undefined.
>And since this is AFAIK only found in libl4re-vfs, I tried adding it,
>but then the build stops with this error:
>"src/l4/mk/binary.inc:335: *** Never include 'libl4re-vfs'!.  Stop."


Ok, so I worked around this error message by removing the sanity
check from src/l4/mk/binary.inc; l4re then gets linked with libmount.

I then also linked libl4revfs-fs-l4fs successfully to l4re.

However, whenever I supply a fstab-file to a new task 
(via FSTAB_FILE=...), mounting with libmount still fails,
and the target task then even stops without executing main().
Error displayed:
" test   | mmap() called without MAP_ANON flag, not supported!
  test    | libmount: Parsing 'rom/fstab'
MOE[rm]: unhandled read page fault at 0x0 pc=0xb000eeb4"

Anyway, then I tried to let l4re mount the filesystem without
libmount, by inserting mount("none","/tmp","l4fs",0,0);
just after the line
boot.printf("load binary '%s'\n", Global::l4re_aux->binary);.

However, the mount fails; a perror("mount") after simply
yields "mount: Invalid argument". The same mount
command however works fine in conventional threads.
(Note that a l4fs/libfs-server is running and the needed
IPC-Gate has been given to the task. "Normal" tasks/
threads can actually use this server.)

Any ideas how I could convince l4re (l4re_kernel) to
mount a libfs/l4fs-type FS?


Thanks in advance,
Josef


P.S.: If you view this mail via the mailinglist-archive,
the first half of this thread can be found in 2014,
since it began there.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.