Commit Graph

1915 Commits

Author SHA1 Message Date
Martin Stein
909ab8dcd0 hw: communicate page faults via signals
Enable routing of thread events to signal contexts via
Kernel::route_thread_event.

Replace Kernel::set_pager by Kernel::route_thread_event.

In base-hw a pager object is a signal context and a pager activation
is a signal receiver. If a thread wants to start communicating its page
faults via a pager object, the thread calls Kernel::route_thread_event with
its thread ID, event ID "FAULT", and the signal context ID of the pager object.
If a pager activation wants to start handling page faults of a pager object,
the pager activation assigns the corresponding signal context to its signal
receiver. If a pager activation wants to stop handling page faults of a pager
object, the pager activation dissolves the corresponding signal context from
its signal receiver. If a thread wants to start communicating its page faults
via a pager object, the thread calls Kernel::route_thread_event with its
thread ID, event ID "FAULT", and the invalid signal context ID.

Remove Kernel::resume_faulter.

Move all page fault related code from generic kernel sources to CPU
specific cpu_support.h and cpu_support.cc.

fix #935
2013-11-14 19:57:31 +01:00
Martin Stein
ba52529bd6 hw: beautify scheduling-priority code
ref #935
2013-11-14 19:57:31 +01:00
Martin Stein
da49f86f5b hw: provide placement via dedicated header
ref #935
2013-11-14 19:57:30 +01:00
Martin Stein
15a56bd682 hw: provide and use syscall access_thread_regs
ref #935
2013-11-14 19:57:30 +01:00
Martin Stein
1c6c90fed5 core: provide signals before other services
Provide core-local signal service before other services to enable the use
of signal connections while initialzing the other services. This has been
introduced due to the use of the signal framework by the pager lib in
base-hw (RM service).

ref #935
2013-11-14 19:57:30 +01:00
Martin Stein
20e91d0b60 base: individual implementations of pager-object
ref #935
2013-11-14 19:57:30 +01:00
Martin Stein
d24ed9783b hw: get rid of kernel_support.cc
ref #935
2013-11-14 19:57:30 +01:00
Martin Stein
f4b46fe55c hw: move kernel.cc to core/kernel/
ref #935
2013-11-14 19:57:30 +01:00
Martin Stein
9c1ae1f149 hw: no overloading of Signal_context constructor
ref #935
2013-11-14 19:57:30 +01:00
Martin Stein
47744e0019 hw: handle interrupts via signals
fix #874
2013-11-14 19:57:30 +01:00
Martin Stein
b88d7e3370 vea9x4: centralize spec of interrupt names
ref #874
2013-11-14 19:56:39 +01:00
Martin Stein
7c70a9bf7d rpi: centralize spec of interrupt names
ref #874
2013-11-14 19:56:39 +01:00
Martin Stein
493ea55a72 omap4 & gpio_drv: add config lib
ref #874
2013-11-14 19:56:39 +01:00
Martin Stein
cc17d82d92 panda: centralize spec of interrupt names
ref #874
2013-11-14 19:56:39 +01:00
Martin Stein
7e294a39f4 imx53: remove unused IPU-interrupt specs
ref #874
2013-11-14 19:56:39 +01:00
Martin Stein
e849cce39e pbxa9: centralize spec of interrupt names
ref #874
2013-11-14 19:56:39 +01:00
Martin Stein
ba1a82b485 arndale: centralize spec of interrupt names
ref #874
2013-11-14 19:56:39 +01:00
Martin Stein
002a5b8978 hw: distinct pagefault and IPC message type
ref #874
2013-11-14 19:56:39 +01:00
Martin Stein
6f935af278 hw: communicate message type through UTCB
ref #874
2013-11-14 19:56:38 +01:00
Martin Stein
1e7eb4512e hw: manage UTCB through use-case specific structs
ref #874
2013-11-14 19:56:38 +01:00
Martin Stein
96bbca6191 hw: send reply size & receive request size by UTCB
ref #874
2013-11-14 19:56:38 +01:00
Martin Stein
45d37e275d hw: send request size through UTCB
ref #874
2013-11-14 19:56:38 +01:00
Martin Stein
6b9376bb01 hw: clean up interface of Kernel::Thread
ref #874
2013-11-14 19:56:38 +01:00
Martin Stein
ffb26eb501 hw: make syscall backend private to Kernel::Thread
ref #874
2013-11-14 19:56:38 +01:00
Martin Stein
5cd2f6ee0b hw: make Kernel::mtc() global
ref #874
2013-11-14 19:56:38 +01:00
Martin Stein
0bb6ffa98d hw: header and source file for Kernel::Vm
ref #874
2013-11-14 19:56:38 +01:00
Martin Stein
22d61c241e hw: remove useless function handle_invalid_excpt
ref #874
2013-11-14 19:56:38 +01:00
Martin Stein
059aba0916 hw: remove unused function handle_invalid_syscall
ref #874
2013-11-14 19:56:38 +01:00
Josef Söntgen
9bc42ecd87 ports: native version of DosBox
DosBox is DOS-Emulator which is mainly used for playing old
DOS games on POSIX systems and newer Windows versions.

This port of DosBox runs natively on Genode by using its
SDL backend. It is currently only works on x86_*.

Fixes #937.
2013-11-14 19:54:14 +01:00
Norman Feske
1ed4b9fef9 Use log_terminal in noux.run script
This patch changes the noux.run script to use the new log_terminal
component instead of an UART driver. Besides being a nice way to test
the log_terminal service, the new version is much simpler and it just
became compatible to Linux as it no longer relies on an UART driver.

Issue #947
2013-11-12 17:59:29 +01:00
Norman Feske
f51c4be5d2 Server for writing terminal output to LOG session
Fixes #947
2013-11-12 17:59:29 +01:00
Stefan Kalkowski
5a42f40f04 cpu_session: fix semantic of scale_priority
Remove "inverse" argument from function, because its documented behaviour
wasn't implemented correctly, nor was it used by any code.
2013-11-12 15:02:17 +01:00
Stefan Kalkowski
265ec48c20 hw: implement priority-based scheduling (fix #945) 2013-11-12 15:01:54 +01:00
Norman Feske
1953acae77 qt4: Workarounds for missing C++11 compatibility
Since we switched to using C++11 by default, the webkit-related
parts of qt4 failed to compile because of C++11 compatibility
issues. This patch disables the use of C++11 for the offenders.
2013-11-07 14:58:34 +01:00
Christian Helmuth
d65220bcf2 base-nova: Use CROSS_DEV_PREFIX in run environment
Related to #490.
2013-11-06 14:33:33 +01:00
Josef Söntgen
8b8e3ef7a5 noux: calculate inode value from path
There are programms that use struct stat's st_ino field to check certain
conditions. Since we are using multiple filesystems in a noux session we
cannot use the inode number which the actual filesystem provides.
Therefore we calculate a random inode number by hashing the stated path.

Fixes #299.
2013-11-05 12:54:04 +01:00
Alexander Boettcher
bde7e24820 nova: fix size of virtual address space for 64bit
Fixes #933
2013-11-05 12:18:51 +01:00
Josef Söntgen
7ac23a2419 libports: use Timer_session as SDL's timer backend
A timer session is now used instead of a jiffy counter. This way, libSDL
can use a time source that is not bound to the granularity our libc's
nanosleep implementation. Currently, the granularity of nanosleep is in
the order of 10 milliseconds, which is far to coarse for the use of
SDL-using applications such as DosBox.

Fixes #934.
2013-11-05 12:14:37 +01:00
Josef Söntgen
4efd664619 libports: use SDL's SDL_cdrom dummy implementation
Fixes #934.
2013-11-05 12:14:23 +01:00
Christian Prochaska
c029557c8b pthreads: return error numbers
pthread functions are supposed to return error values instead of setting
'errno' and returning -1.

Fixes #856.
2013-11-05 12:13:45 +01:00
Josef Söntgen
1306915879 libports: add SDL_net
Fixes #936.
2013-11-05 12:13:19 +01:00
Christian Prochaska
1a22664fee Call exit handlers before notfying the parent
Fixes #941.
2013-11-05 12:01:13 +01:00
Alexander Boettcher
59cb7d9263 nova: show error message for un-handled exception
Fixes #938
2013-11-05 12:00:18 +01:00
Norman Feske
ac05a5efdd Spelling fix 2013-10-30 12:27:44 +01:00
Norman Feske
f75243f5dd Change codezero download location to github
Because the l4dev.org server seems to be unreliable, we obtain the
source code from github.
2013-10-30 12:27:43 +01:00
Stefan Kalkowski
2c1b8f4807 l4lx: extend l4linux_dynamic run script
Add a graphical scenario to the cli_monitor setup, which includes
a more complex GDB debugging scenario.
2013-10-30 12:27:43 +01:00
Stefan Kalkowski
fde93c3284 init: don't call Rom_session::dataspace() twice
In general, requesting a dataspace from a server twice is no good
idea. The server might react in a unrecoverable fashion. E.g. the rom_fs
service always throws away the corresponding dataspace from the first call
of dataspace(), and constructs a new one.
2013-10-29 18:08:30 +01:00
Christian Prochaska
a1458307da GDB monitor: test the 'set var' and 'call' commands
Fixes #930.
2013-10-29 18:08:29 +01:00
Christian Prochaska
27aeecf5d1 cli_monitor: add a 'gdb' command
This patch adds a 'gdb' command to 'cli_monitor', which makes it possible
to debug an application with GDB.

The command works similarly to the 'start' command, but instead of
starting the subsystem binary directly, an 'init' subsystem gets
started, which then starts 'terminal_crosslink', 'noux', GDB and
'gdb_monitor' (which starts the application binary as its target).

So, for the 'gdb' command to work, these additional components need to
be available, too. 'terminal_crosslink', 'noux', 'gdb_monitor' and the
file 'gdb_command_config' are expected to be ROM modules. The Noux GDB
client needs to get mounted at '/bin' in Noux and the target binaries need
to be available as ROM modules (loaded by 'gdb_monitor') and also mounted
at '/gdb' in Noux (loaded by the GDB client).
Additionally, the source code of the target application can be provided
at '/gdb/src/ in Noux. How the Noux mountings get established can
be configured in the 'gdb_command_config' file. The default configuration
in 'os/src/server/cli_monitor/gdb_command_config' mounts GDB from a tar
archive named 'gdb.tar', the GDB target binaries from a tar archive named
'gdb_target.tar' and the target source code from a tar archive named
'gdb_target-src.tar'.

The patch includes an 'expect' include file (ports/run/noux_gdb.inc)
which provides functions that help to create those tar files:

- 'create_gdb_tar' creates a tar archive for the 'gdb' client
- 'create_binary_tar' creates a tar archive for the target application
- 'create_source_tar' creates a tar archive for the source code of
  the target application
- 'create_binary_and_source_tars' is a convenience wrapper for the previous
  two functions

The patch also includes an example run script
(ports/run/noux_gdb_dynamic.run).

The 'gdb' command supports the following command line options:

- --ram: the initial RAM quota provided to the whole subsystem
         (including the GDB-related components)
- --ram-limit: limit for expanding RAM quota
- --gdb-ram-preserve: the RAM quota that 'gdb_monitor' ahould preserve
                      for itself

Fixes #928.
2013-10-29 18:08:29 +01:00
Christian Prochaska
cc04ffcf42 GDB monitor: find out page faulting thread
Fixes #898.
2013-10-25 23:49:00 +02:00