Commit Graph

5351 Commits

Author SHA1 Message Date
Josef Söntgen
400198013b alarm: limit sleep timeout to 60s
Instead of using an unreasonable value for the sleep time, limit it to
60s.

Fixes #2188.
2016-12-14 11:22:27 +01:00
Martin Stein
71d30297ff hw: clean up scheduling-readiness syscalls
This cleans up the syscalls that are mainly used to control the
scheduling readiness of a thread. The different use cases and
requirements were somehow mixed together in the previous interface. The
new syscall set is:

1) pause_thread and resume_thread

They don't affect the state of the thread (IPC, signalling, etc.) but
merely decide wether the thread is allowed for scheduling or not, the
so-called pause state. The pause state is orthogonal to the thread state
and masks it when it comes to scheduling. In contrast to the stopped
state, which is described in "stop_thread and restart_thread", the
thread state and the UTCB content of a thread may change while in the
paused state. However, the register state of a thread doesn't change
while paused. The "pause" and "resume" syscalls are both core-restricted
and may target any thread. They are used as back end for the CPU session
calls "pause" and "resume". The "pause/resume" feature is made for
applications like the GDB monitor that transparently want to stop and
continue the execution of a thread no matter what state the thread is
in.

2) stop_thread and restart_thread

The stop syscall can only be used on a thread in the non-blocking
("active") thread state. The thread then switches to the "stopped"
thread state in wich it explicitely waits for a restart. The restart
syscall can only be used on a thread in the "stopped" or the "active"
thread state. The thread then switches back to the "active" thread state
and the syscall returns whether the thread was stopped. Both syscalls
are not core-restricted. "Stop" always targets the calling thread while
"restart" may target any thread in the same PD as the caller. Thread
state and UTCB content of a thread don't change while in the stopped
state. The "stop/restart" feature is used when an active thread wants to
wait for an event that is not known to the kernel. Actually the syscalls
are used when waiting for locks and on thread exit.

3) cancel_thread_blocking

Does cleanly cancel a cancelable blocking thread state (IPC, signalling,
stopped). The thread whose blocking was cancelled goes back to the
"active" thread state. It may receive a syscall return value that
reflects the cancellation. This syscall doesn't affect the pause state
of the thread which means that it may still not get scheduled. The
syscall is core-restricted and may target any thread.

4) yield_thread

Does its best that a thread is scheduled as few as possible in the
current scheduling super-period without touching the thread or pause
state. In the next superperiod, however, the thread is scheduled
"normal" again. The syscall is not core-restricted and always targets
the caller.

Fixes #2104
2016-12-14 11:22:27 +01:00
Norman Feske
ccffbb0dfc Build dynamically linked executables by default
Fixes #2184
2016-12-14 11:22:27 +01:00
Norman Feske
d882277ce3 base: let ldso use the default stack size 2016-12-14 11:19:38 +01:00
Norman Feske
4e4cdacab3 base: trim main-thread size to 4/8 KiB
The main thread does no longer execute application code. It is solely
responsible for the initialization of the component's entrypoint and for
retrieving asynchronous notifications. Since the stack usage is no
longer dependent on application-specific code, we can significantly
shrink it to reduce the memory footprint of components. In the worst
case - should the stack overrun - we would observe a page fault because
the stack is placed in the stack area, surrounded by guard pages.
2016-12-14 11:19:38 +01:00
Norman Feske
cc98cef770 genode_rel.ld: add .gcc_except_table to RO segment
By moving .gcc_except_table section to the read-only ELF segment, this
patch reduces the size of the dynamically allocated data/bss segment.
2016-12-14 11:19:37 +01:00
Norman Feske
a387d68c2c base: use a default stack size of 64 KiB
This patch replaces the former machine-word-dependent default stack size
by the fixed value of 64 KiB which should suffice for components on both
32 and 64 bit. Previously, the default stack size on 64 bit was 128 KiB,
which is wasteful. If a component needs more stack than 64 KiB, it can
specify a custon stack size by implementing 'Component::stack_size'.
2016-12-14 11:19:37 +01:00
Norman Feske
28f5688dcf base: reduce size of initial stack from 32K to 4K
The initial stack is solely used to initialize the Genode environment
along with the application stack located in the stack area. It never
executes application code. Hence, we can make it small. To check that it
is not dimensioned too small, the patch introduces a sanity check right
before switching to the application stack.
2016-12-02 15:20:31 +01:00
Norman Feske
92460cdab7 base: remove initial heap chunk from heap
This change reduces the BSS segment by 32 KiB (on 64 bit).
2016-12-02 15:20:31 +01:00
Josef Söntgen
ecff6f7375 Minor corrections in the 16.11 release notes 2016-12-02 15:18:51 +01:00
Norman Feske
25a7ea3d40 base: rename 'Volatile_object' to 'Reconstructible'
Fixes #2151
2016-12-01 17:46:50 +01:00
Alexander Boettcher
6fa87e62dd run: adjust noux_bash to run for arm
Issue #2137
Fixes #1469
2016-12-01 16:39:47 +01:00
Alexander Boettcher
8bb2641020 noux-pkg: support less for arm
Fix #2137
2016-12-01 16:39:47 +01:00
Christian Helmuth
31631c8303 foc: remove unused function 2016-12-01 16:39:47 +01:00
Christian Helmuth
831c8d8e2d noux: fix warning in execve 2016-12-01 16:39:47 +01:00
Christian Helmuth
4bc34f73f3 lxip: provide strncpy and strstr (for ipconfig) 2016-12-01 16:39:47 +01:00
Martin Stein
2f0d90e0e1 Minor correction of the release notes 2016-12-01 16:27:00 +01:00
Christian Helmuth
94849da80e version: 16.11 2016-11-30 15:29:42 +01:00
Norman Feske
c6d80f926e Release notes for version 16.11 2016-11-30 15:13:58 +01:00
Norman Feske
8f53fcc0c7 Use https in news items 2016-11-30 15:13:58 +01:00
Norman Feske
59e2f9c47a News item for Genode 16.11 2016-11-30 15:13:57 +01:00
Christian Helmuth
77da6ce1a0 doc: precisely differentiate framework and tool chain
Issue #2132
2016-11-30 13:38:07 +01:00
Christian Helmuth
85fa4d340b Support running netperf test on qemu
Set environment variable FORCE_QEMU to run the test on qemu.
2016-11-30 13:38:07 +01:00
Christian Helmuth
262259cd09 Increase qemu RAM in moon test
On sel4, the available RAM (beside the boot modules) is significantly
reduced by the initial pools in core.
2016-11-30 13:38:06 +01:00
Alexander Boettcher
b8485b6ca1 vbox4: avoid iommio assertion
if the mmio region is not available anymore

Fixes #2182
2016-11-30 13:38:06 +01:00
Stefan Kalkowski
4b09e357e0 intel_fb_drv: dummy implementation of lrc irqs
Ref #2179
2016-11-30 13:38:06 +01:00
Christian Helmuth
53271d8c5f Use default component stack size where appropriate 2016-11-30 13:38:06 +01:00
Martin Stein
7eabe482b6 Increase RAM quota for Nic::Connection
At least on foc_x86_64, nic_router refused to create sessions for the
test clients as the session object's size exceeds the old quota
donation.

Ref #2139
2016-11-30 13:38:06 +01:00
Alexander Boettcher
a090c9047d vfs: handle alloc failed in block_file_system
Fixes #2154
2016-11-30 13:38:06 +01:00
Alexander Boettcher
d3d4381128 nova: support to run VBox vCPUs within same PD
Issue #2173
2016-11-30 13:38:06 +01:00
Alexander Boettcher
1bea312ba2 vmm: compatible vcpu same_pd/other_pd constructors
Issue #2173
2016-11-30 13:38:05 +01:00
Alexander Boettcher
c732aef227 nova: handle oom during assign_pci 2016-11-30 13:38:05 +01:00
Martin Stein
89085096d2 nic_router: new user interface and optimizations
Fixes #2139
2016-11-30 13:38:05 +01:00
Martin Stein
f90964fdcc udp_client/http_clnt: print success message
Ref #2139
2016-11-30 13:38:05 +01:00
Martin Stein
4eea2a058d net: let Net_address and Ipv4_address be packed
Ref #2139
2016-11-30 13:38:05 +01:00
Martin Stein
4281471a34 net: replace dump.h by modern print methods
Ref #2139
2016-11-30 13:38:05 +01:00
Martin Stein
da925b9cd7 net/ipv4: Ipv4_address_prefix::prefix_matches
The new method checks whether a given IPv4 address matches the IPv4
address prefix.

Ref #2139
2016-11-30 13:38:04 +01:00
Martin Stein
6276daecab net/ipv4: convenience methods valid() and print()
Both methods are now available for Ipv4_address as well as for
Ipv4_address_prefix. An IPv4 address is invalid if it contains zeros only.
An IPv4 address prefix is invalid if its address is invalid and its
prefix is 32.

Ref #2139
2016-11-30 13:38:04 +01:00
Martin Stein
9dddc905e2 lwip/http_clnt: fix ambiguous size_t
Ref #2139
2016-11-30 13:38:04 +01:00
Martin Stein
3a7ae03f79 lxip/udp_client: create new socket on every run
Instead of creating one socket and re-using it each test run because the
client shall also test the termination of pseudo-connections at components that
implement hole punching for UDP.

Ref #2139
2016-11-30 13:38:04 +01:00
Martin Stein
cdd05ad71b lxip/udp_client: use dynamic port as source port
Instead of a registered port as this leads to conflicts with common IP stacks.

Ref #2139
2016-11-30 13:38:04 +01:00
Martin Stein
b85fa1d069 timer: move to the new timeout framework
Ref #2170
2016-11-30 13:38:04 +01:00
Martin Stein
791138ee63 os: introduce and test timeout framework
Ref #2170
2016-11-30 13:38:04 +01:00
Edgard Schmidt
f97e0f3fa0 Allow RPC arguments w/o default constructor
Fixes #2150
2016-11-30 13:38:03 +01:00
Norman Feske
6a24d70120 Fix clang compile errors
Thanks Keiko Nakata for reporting!

Fixes #2164
2016-11-30 13:37:07 +01:00
Norman Feske
5a1cef6381 Make label prefixing more strict
This patch unconditionally applies the labeling of sessions and thereby
removes the most common use case of 'Child_policy::filter_session_args'.
Furthermore, the patch removes an ambiguity of the session labels of
sessions created by the parent of behalf of its child, e.g., the PD
session created as part of 'Child' now has the label "<child-name>"
whereas an unlabeled PD-session request originating from the child
has the label "<child-name> -> ". This way, the routing-policy of
'Child_policy::resolve_session_request' can differentiate both cases.

As a consequence, the stricter labeling must now be considered wherever
a precise label was specified as a key for a session route or a server-
side policy selection. The simplest way to adapt those cases is to use a
'label_prefix' instead of the 'label' attribute. Alternatively, the
'label' attribute may used by appending " -> " (note the whitespace).

Fixes #2171
2016-11-30 13:37:07 +01:00
Christian Helmuth
f184118930 vfs: support label attribute in log file system
The log plugin can now be configured to request a log session with the
specified label like follows.

  <log label="..."/>

Per default, no new log session is requested but the existing log
session of the component's environment is used.
2016-11-30 13:37:07 +01:00
Christian Prochaska
9e86621b07 cpu_sampler_noux.run: increase auto test timeout
Fixes #2178
2016-11-30 13:37:07 +01:00
Christian Helmuth
1216839bec vesa: handle platform session memory requests
Issue #1039
2016-11-30 13:37:07 +01:00
Alexander Boettcher
7dcfc8bd49 dde_bsd: handle platform session memory requests
Issue #1039
2016-11-30 13:37:07 +01:00