Commit Graph

823 Commits

Author SHA1 Message Date
Josef Söntgen
a4f4a5fb5a Noux: add /dev/null and /dev/zero filesystems
These device are mandatory for most programs (well, at least null
is required to be present for a POSIX compliant OS, which Noux is
actually not). But for proper shell-script support we will need
them anyway.
2012-08-22 09:51:28 +02:00
Josef Söntgen
a77c3dffd0 Noux: add user information support (struct passwd)
There are certain programs which need the information that is stored in
'struct passwd'. This commit introduces configurable user information
support to NOUX.

One can set the user information via <user> in NOUX config:

! <config>
!   <user name="baron" uid="1" gid="1">
!     <shell name="/bin/bash" />
!     <home name="/home" />
!   </user>
! [...]
! </config>

When <user> is not specified default values are used. Currently these
are 'root', 0, 0, '/bin/bash', '/'.

Note: this is just a single user implementation because each Noux instance
has only one user or rather one identity and there will be no complete
multi-user support in Noux. If you need different users, just start new
Noux instances for each of them.
2012-08-22 09:51:28 +02:00
Josef Söntgen
f2299abab5 libports: remove passwd functions from libc
Removes getpwent.c from build because the passwd facilities provided by
the FreeBSD libc will not be used anyway and add stub functions instead.
Now services which need these functions have to implement their own
(e.g. libc_noux).
2012-08-22 09:51:28 +02:00
Norman Feske
a8609213a0 libc: Resolve subtle ambiguity in symlink creation
Apparently, GNU make 3.81 picks the generic '%.h' rule instead of the
more specific 'rpc/%.h' rule during the preparation of the libc.
Changing the order of the rules solves the problem.
2012-08-22 09:51:28 +02:00
Josef Söntgen
ed6fa86a87 libports: add gethostbyname, getservbyname dummies 2012-08-22 09:51:28 +02:00
Josef Söntgen
6fcbea000c libports: add libc_resolv
libc_resolv is a {free,get}addrinfo() plugin, mainly for use with NOUX.

We prefix the original libc functions to with 'libc_' so there is no
symbol conflict with file_operations.cc.
2012-08-22 09:51:28 +02:00
Josef Söntgen
34bfb70946 libports: add needed files to libc-net 2012-08-22 09:51:28 +02:00
Josef Söntgen
fba80f3fee libports: add libc's libc-rpc 2012-08-22 09:51:27 +02:00
Josef Söntgen
789ab39670 libports: remove certain static libs from libc.mk
Most of the libs are needed for DNS related stuff. Since we now
have libc_resolv they are not longer needed. Infact they will
lead to undefined symbols so we remove them alltogther as build
dependency for the libc.
2012-08-22 09:51:27 +02:00
Josef Söntgen
ae524e4beb Noux: add timeout handling to select()
Previously there was not actual timeout handling. If a select() call
set an timeout it would be set to zero instead and was always handled
as blocking i/o. While this works fine for file descriptors which
will be triggerd externally (for example vim through terminal i/o) it
does not work at all for socket descriptors and network operations in
general.

So this commit introduces proper timeout handling and changes the
behaviour of SYSCALL_SELECT so that it now returns more than just
one descriptor at a time.

noux/minimal and noux/net now depend on thread and alarm libraries.
2012-08-22 09:51:27 +02:00
Norman Feske
d4d229bdc7 libc: Unregister region on nunmap 2012-08-22 09:51:27 +02:00
Norman Feske
0296e6f66b lwip: Convert fcntl argument, add missing defs 2012-08-22 09:51:27 +02:00
Norman Feske
94caac575b Compile warning fix 2012-08-22 09:51:27 +02:00
Norman Feske
606ff66407 Noux: Toggle syscall tracing via config
Noux used to trace syscalls by default, which significantly slows down
its execution. This patch disables the tracing by default. It can be
enabled by specifying 'trace_syscalls="yes"' attribute to the Noux
configuration.
2012-08-22 09:51:27 +02:00
Norman Feske
e60eb0f57f noux: pass correct mode to Fs_vfs_handle
This patch resolves a problem with running 'noux_gdb.run'. Right at the
start, GDB would output a message like:

  ...cli-script.c:1614: internal-error: called with NULL file pointer!
  A problem internal to GDB has been detected,
  further debugging may prove unreliable.
  Quit this debugging session? (y or n)

The LOG output hints at the cause of the problem:

  [init -> noux -> /bin/genode-x86-gdb] fcntl: F_GETFL for libc_fd=3

Thanks to cproc for the fix!
2012-08-22 09:51:27 +02:00
Sebastian Sumpf
de5d5c2a1e ACPI: Fix offsets when mapping I/O mem
Fixes #309
2012-08-22 09:51:26 +02:00
Sebastian Sumpf
9486022164 ACPI: Allow PCI slave to use CPU sessions 2012-08-22 09:51:26 +02:00
Josef Söntgen
4444d60a2b libports: enable SO_REUSEADDR in lwip 2012-08-22 09:51:26 +02:00
Josef Söntgen
610a122f74 Noux: change default --prefix in noux.mk
The directory specified by --prefix is not only used to determine
the install location but is also used by -rpath. Therefor it is
better to use $(DESTDIR) to install the binaries to the right
directory and to use --prefix to express the actual location within
NOUX.
2012-08-22 09:51:26 +02:00
Josef Söntgen
66198660aa Noux: add noux_net_lighttpd.run
This patch adds lighttpd as noux package. However, we do not use the
original build system but rather compile lighttpd directly from the
Genode build system. This is needed because we want to statically link
lighttpd modules into the binary. This mode is (somehow) supported by
the SConscript that comes with lighttpd. However, the GNU build scripts
do not expose this feature.
2012-08-22 09:51:26 +02:00
Norman Feske
228e70bb5f Native version of lighttpd
The port of lighttpd at 'ports/src/app/lighttpd' executes the web server
directly (w/o using Noux). It is accompanied by the lighttpd.run script.

At the current stage, lighttpd is starting up but fails because of an
unsupport fcntl call.
2012-08-22 09:51:22 +02:00
Norman Feske
7a7adfbb63 Add mmap and nunmap to libc_noux, libc_fs
In the current form, only PROT_READ is supported. This case is emulated
by copying the file content into new allocated backing store. Even
though the performance benefits of mmap-using code will not be
preserved, code that relies on mmap can be executed via the libc_noux
or libc_fs plugins, i.e. lightttpd.
2012-08-17 11:52:02 +02:00
Norman Feske
d7300e882b tar_rom: Ignore leading './' in tar archives 2012-08-17 11:52:02 +02:00
Norman Feske
4914032800 libc: Add munmap support to plugin interface
With this patch, libc plugins become able to handle munmap for regions
attached by the plugin.
2012-08-17 11:52:02 +02:00
Norman Feske
3546b17827 Let git ignore libports/include/ncurses/ncurses.h 2012-08-17 11:52:02 +02:00
Josef Söntgen
971f25976b Noux: add noux-pkg/lighttpd 2012-08-17 11:52:01 +02:00
Josef Söntgen
a6917d982a libports: add poll() to libc
Implements poll() via select() for certain programs like OpenSSH
which need it.

(This implementation is actually based OpenSSHp's compat function.)
2012-08-17 11:52:01 +02:00
Josef Söntgen
ced77c5403 libports: add pcre-8.3 (8bit only)
For it is enough to just provide the 8bit version of pcre.
2012-08-17 11:51:57 +02:00
Alexander Boettcher
869abe4ec6 NOVA: make noux_tool_chain happy
Multiple calls to get the dataspace capability on NOVA lead to the situation
that the caller gets each time a new mapping of the same capability at
different indexes.

The client/caller assumes to get every time the very same index, e.g. in
Noux the index is used to look up structures.

Cache the dataspace capability returned via a rm_session for base-nova.
2012-08-17 11:43:04 +02:00
Norman Feske
24107d7a48 lwip: purge PCBs in time-wait state more quickly
Fixes #33.
2012-08-16 13:33:00 +02:00
Norman Feske
302e30662a Enable libSDL on ARM, add 'libports/run/sdl.run'
Fixes #45.
2012-08-16 13:33:00 +02:00
Norman Feske
7f1dd23051 Relax requirements of 'eglgears.run'
The run script works on foc_pbxa9 and foc_x86_64. So there is no reason
to restrict it to x86 only.
2012-08-16 13:33:00 +02:00
Norman Feske
d3e8328089 Unify uint64_t among 32-bit and 64-bit platforms
On both 32-bit and 64-bit platforms, 'uint64_t' can be defined as
'unsigned long long', which is the type expected by the %llx
format-string specifier. By unifying the type definitions, we resolve
warnings about unmatching type specifiers. This patch also removes
redundant words from the typedefs.
2012-08-16 13:32:56 +02:00
Alexander Boettcher
6899dd3d0a NOVA: fix compiler warning 2012-08-16 10:03:07 +02:00
Norman Feske
f4b3c6da36 Increase Qemu RAM for tool-chain test on 64bit
The tool-chain test requires a lot of memory because the TAR archives
for gcc, binutils etc. are loaded as GRUB modules.
2012-08-16 10:03:07 +02:00
Norman Feske
fab7b514e3 Move path utility from noux to 'os/include/os'
It turns out that the path-handling utility is valuable not only for
Noux. By moving it to a public header, we can use it for the libc.
2012-08-16 10:03:06 +02:00
Norman Feske
47e95d4e18 Support upgrading of child-environment resources
Fixes #5
2012-08-16 10:03:06 +02:00
Josef Söntgen
27a5edaf78 libports: disable call of lwip_loopback_init()
As of lwip-1.4.x this is not needed anymore because lwip
now always creates a loopback device. This plug-in will
be removed in the future but for now keep it around so
we currently do not need to update the other targets that
depend on it.

Fixes #329.
2012-08-16 10:03:06 +02:00
Josef Söntgen
ba5ec3a29e Noux: recv* functions override the buffer
Instead of appending to the buffer it is overriden on
continous calls.

Fixes #325.
2012-08-16 10:03:06 +02:00
Josef Söntgen
ae89f88cfb Noux/net: adjust noux/net to lwip-1.4.1-rc1
Fixes #328.
2012-08-16 10:03:01 +02:00
Josef Söntgen
bee2c10ce1 libports: add fcntl() to libc_lwip
Fixes #326.
2012-08-15 14:31:45 +02:00
Christian Prochaska
74b7b768f8 Noux: have bash use libc's 'getcwd()' function
The bash configure script cannot detect if the 'getcwd()' function in
Genode's libc works correctly, so it assumes that it is broken and makes
bash use its own version of this function. With this patch bash uses the
libc version, which has a Noux-specific implementation in the 'libc_noux'
plugin.

Fixes #324.
2012-08-15 14:31:33 +02:00
Josef Söntgen
69fd7e1c32 libports: update lwip to STABLE-1.4.1-RC1
The new version works fine but there is an issue with connect()
that needs the included patch:

There is no actual handling of EALREADY in lwip. It sets errno
to EALREADY when the connection was established. Unfortunatly this
is really bad because most programs expect to receive errno EISCONN
if the connection was successfully established. So this behaviour
breaks Qt4 and several noux/net packages (like lynx) because those
programs end up in an endless loop trying to connect via an already
connected socket. The longterm solution would be fixing the wrong
behaviour in lwip (there are already bug-reports on lwip's mailinglist)
but for now, it works well enough to simple change lwip's err_to_errno
table to set errno to EISCONN when the connection was established.
2012-08-15 14:31:18 +02:00
Norman Feske
aa90efbf77 Disable libc_ffat test on 64bit
The test cannot be expected to work on 64-bit machines because the ATAPI
driver is currently supported on 32-bit only.
2012-08-15 14:28:42 +02:00
Norman Feske
a174992e4d Let run tool detect qemu failures 2012-08-15 14:27:02 +02:00
Alexander Boettcher
775b5a174b Reserve up to 8x4 bytes for the parent capability 2012-08-14 19:14:25 +02:00
Alexander Boettcher
d38257b8d5 tar_rom: increase memory for 64bit Nova 2012-08-14 10:20:09 +02:00
Alexander Boettcher
47ef3bb1cb NOVA: Fix ldso test for 64bit
The generic parent_cap.cc overwrote the beginning of the data segment with
to much. Reserved are solely 16 byte, for 64bit we use however 32byte.

Actually, the parent_cap copying is not required at all. The parent cap
selector is at a fixed define place, so that no exported symbols are required
for determination of the parent_cap.

Remove it.
2012-08-14 10:19:54 +02:00
Alexander Boettcher
49786a7ca3 CPU service required
Required to start thread on Genode/NOVA. Without the service it fails with:

int main(): --- init created, waiting for exit condition ---
[init] timer: no route to service "CPU"
[init -> test-moon] Starting ldso ...
[init -> timer] C++ runtime: Genode::Parent::Service_denied
[init -> timer] void* abort(): abort called
2012-08-10 16:52:28 +02:00
Alexander Boettcher
5cee75e2a3 Increase rom quota about 36k
Required to run successful @ Genode/NOVA 64bit
2012-08-10 16:52:28 +02:00