Commit Graph

2553 Commits

Author SHA1 Message Date
Alexander Boettcher
a7bc8bac9a nova: support usage of priorities in Genode/Nova
Enables finally the usage of priorities on base-nova.

Fixes #986
2014-04-16 17:30:31 +02:00
Alexander Boettcher
9ae441e469 nova: replacement of generic Genode spinlock
Turn Genode user-level spinlock into a user-level "helpinglock". This requires
support by the kernel introduced with kernel branch r5.

The commit avoids live-locks when multiple threads with SCs on different
priority levels compete for the same user-level Genode "spinlock".

Issue #986
2014-04-16 17:30:31 +02:00
Alexander Boettcher
bfa3053e62 nova: set pager and native ec cap for main thread
Prerequisite for follow up commit regarding base-nova specific Genode Spinlock
replacement.

Issue #986
2014-04-16 17:30:30 +02:00
Alexander Boettcher
ecaf09a41b nova: extent ec_ctrl in kernel and base-nova
The commit switches the kernel branch to r5 and updates the syscall bindings
in base-nova accordingly. Beside some cleanups, r5 extents the ec_ctrl syscall
to support following features:

* An EC may yield its current timeslice. The timeslice gets enqueued at the end
  of the run queue without refreshing the left budget of the quantum.
* An EC helps with the current SC another EC. Used in Genode to implement
  helping over a user-level lock to avoid live-lock situation. (Think of
  a limited priority-inheritance mechanism.)
* An EC requests a new scheduler decision. Used in Genode to transfer back the
  potentially helping SC to the helper EC.

Issue #986
2014-04-14 12:32:31 +02:00
Christian Prochaska
617d5ee3e6 OpenSSL: update to version 1.0.1g
Fixes #1118.
2014-04-14 12:32:31 +02:00
Alexander Boettcher
69bc875ac7 tool: increase amt reset timeout 2014-04-14 12:32:31 +02:00
Alexander Boettcher
0eef45e63f vbox: implement pthread_create specifically
Issue #1114
2014-04-14 12:32:31 +02:00
Alexander Boettcher
0c08334b2c pthread: separate structure and create function
With the commit an application may create a modified version of pthread_create.
Will be used by Virtualbox port.

Issue #1114
2014-04-14 12:32:31 +02:00
Alexander Boettcher
03ce614c23 base: add cpu_session parameter to thread creation
Fixes #1114
2014-04-14 12:32:31 +02:00
Alexander Boettcher
5169de72c4 base: set default cpu affinity
Set cpu_session default affinity space already during
construction of the thread, so that main thread is placed in the cpu affinity
space as defined by the parent. Otherwise the main thread is placed potentially
outside the affinity space, typically on the first/boot CPU.

Fixes #1107
2014-04-14 12:32:31 +02:00
Alexander Boettcher
73f71322f0 init: put ep for child in affinity space of child
Issue #1107
2014-04-14 12:32:30 +02:00
Alexander Boettcher
93f06dd11a nova: set invalid affinity space in thread constructor
Otherwise affinity space is set to 1x1 and in cpu_session_component.cc the cpu
session local affinity space defined by parent is not taken because
"Location::valid()" returns true.

Issue #1107
2014-04-14 12:32:30 +02:00
Stefan Kalkowski
b5fe1d752b hw: don't implement IRQ usage policy in core
Fix #995
Fix #1112
Fix #1113
2014-04-14 12:32:30 +02:00
Martin Stein
a9521853bd hw: provide Kernel::update_instr_region
fix #1115
2014-04-14 12:28:16 +02:00
Martin Stein
3f14defd9d hw: don't restrict update_data_region to core
ref #1115
2014-04-14 12:28:16 +02:00
Martin Stein
5a1fc6da60 hw: rename update_region in update_data_region
ref #1115
2014-04-14 12:28:16 +02:00
Norman Feske
b7e806d5eb News item for TrustZone article 2014-04-10 15:40:40 +02:00
Martin Stein
fabea7fba1 hw: provide invalidate_instr_caches_by_virt_region
ref #1115
2014-04-07 17:11:53 +02:00
Martin Stein
f8c2596259 hw: beautify flush_data_caches_by_virt_region
ref #1115
2014-04-07 17:11:46 +02:00
Martin Stein
d67a26ea4c hw: invalidate data caches on kernel init
fix #1108
2014-04-07 17:11:37 +02:00
Martin Stein
7836d92b22 hw & arm_v7: make flush_data_caches more readable
ref #1108
2014-04-07 17:11:28 +02:00
Martin Stein
9f95784f02 hw: diversify feedback from IPC node to thread
ref #1108
2014-04-07 17:11:20 +02:00
Martin Stein
e856158824 hw: no msg_base argument to Ipc_node::send_request
ref #1108
2014-04-07 17:10:53 +02:00
Martin Stein
b34ce7d2b0 hw: handier names for IPC methods
ref #1108
2014-04-07 17:10:45 +02:00
Martin Stein
f0ec8b27c1 hw: no argument to Ipc_node::_await_ipc_succeeded
ref #1108
2014-04-07 17:10:38 +02:00
Martin Stein
b55646e1b0 hw: remove Ipc_node::_received_ipc_request
ref #1108
2014-04-07 17:10:28 +02:00
Martin Stein
8d1e40eb5b hw: remove Ipc_node::_await_ipc
ref #1108
2014-04-07 17:10:22 +02:00
Martin Stein
ebfd6a55b3 hw: remove useless argument of Thread::_call
ref #1108
2014-04-07 17:10:10 +02:00
Martin Stein
8f9d4737a6 hw: correct spelling of the verb look up
fix #1101
2014-04-07 17:10:05 +02:00
Martin Stein
7ffcc74d72 hw: centralize permission check of kernel calls
ref #1101
2014-04-07 17:09:58 +02:00
Martin Stein
02c16e7106 hw: split resume_local_thread from resume_thread
Kernel::resume_thread was restricted to core when the targeted thread was in
another domain. Now there are two kernel calls, resume_local_thread and
resume_thread, where the former is never restricted and is provided via
public kernel/interface.h and the latter is always restricted to core and
is provided via core-local kernel/core_interface.h.

ref #1101
2014-04-07 17:09:52 +02:00
Martin Stein
c72f91fefb hw: simplify return value of Kernel::resume_thread
ref #1101
2014-04-07 17:09:33 +02:00
Martin Stein
6974abcf41 hw: don't use assert in Kernel::pause_vm
ref #1101
2014-04-07 17:09:16 +02:00
Martin Stein
99db9e5246 hw: don't use assert in Kernel::run_vm
ref #1101
2014-04-07 17:08:59 +02:00
Martin Stein
7bbabcf817 hw: don't use assert in Kernel::new_vm
ref #1101
2014-04-07 17:08:49 +02:00
Martin Stein
f8b4541e2b hw: get rid of fixme note in Kernel::update_region
ref #1101
2014-04-07 17:08:35 +02:00
Martin Stein
4f19d4869f hw: don't use assert in Kernel::update_region
ref #1101
2014-04-07 17:08:29 +02:00
Martin Stein
ea156e18ec hw: don't use assert in Kernel::update_pd
ref #1101
2014-04-07 17:08:23 +02:00
Martin Stein
dbad6f7061 hw: don't use assert in Kernel::bin_thread
ref #1101
2014-04-07 17:08:16 +02:00
Martin Stein
9e089e7e75 hw: don't use assert in Kernel::start_thread
ref #1101
2014-04-07 17:08:11 +02:00
Martin Stein
fba4f54571 hw: split pause_current_thread from pause_thread
Kernel::pause_current_thread can be implemented much simpler and is not
restricted to core threads, in contrast to Kernel::pause_thread which
also benefits from the split and can be moved to core_interface.h.

ref #1101
2014-04-07 17:07:24 +02:00
Martin Stein
abd55fda9a hw: don't return a result in Kernel::pause_thread
ref #1101
2014-04-07 17:06:09 +02:00
Martin Stein
5e940da040 hw: don't use assert in Kernel::pause_thread
ref #1101
2014-04-07 17:05:43 +02:00
Martin Stein
055b7c57b6 hw: correct result type of Kernel::new_vm
ref #1101
2014-04-07 17:05:34 +02:00
Martin Stein
d5b38b674e hw: simplify buffer of Kernel::access_thread_regs
ref #1101
2014-04-07 17:05:29 +02:00
Martin Stein
06ea6cd462 hw: simplify result of Kernel::access_thread_regs
ref #1101
2014-04-07 17:04:50 +02:00
Martin Stein
1eeba3ed73 hw: comment result of Kernel::route_thread_event
ref #1101
2014-04-07 17:04:36 +02:00
Martin Stein
873c3f3984 hw: correct return type of Kernel::new_thread
ref #1101
2014-04-07 17:04:20 +02:00
Martin Stein
a64372647d hw: rename mode_transition_virt_base
ref #1101
2014-04-07 17:03:48 +02:00
Martin Stein
5112df9792 hw: remove unused kernel_pd_alignm_log2
ref #1101
2014-04-07 17:03:15 +02:00