Commit Graph

325 Commits

Author SHA1 Message Date
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
Martin Stein
e2268c09a0 hw: move core-restricted interface to local header
fix #1096
2014-04-07 17:02:50 +02:00
Martin Stein
f0ac145471 hw: faster Kernel::Signal_receiver::_listen()
ref #1096
2014-04-07 17:02:26 +02:00
Martin Stein
00708b6696 hw: reduce stack size of idle threads
ref #1096
2014-04-07 17:02:11 +02:00
Martin Stein
d30edd4841 hw: make RM faults less noisy in release mode
If an RM fault ends up in any trouble, the faulter remains paused and
the pager activation continues with the next fault. Thus we can print
a warning instead of an error and safe execution time in release mode.

ref #1096
2014-04-07 17:02:00 +02:00
Martin Stein
9affbf33ec hw: make kernel less noisy in release mode
In most cases an error report is not necessary in the kernel as the problem
does not affect the kernel itself but the according user-land context. Thus
we can also do a warning that is not printed in release mode and hence safe
execution time.

ref #1096
2014-04-07 17:01:46 +02:00
Martin Stein
a34227cdda hw: use reliable start message in run env
Previously for determining wether boot-up succeeded or not, we looked
for a message that is switched off in release mode. Now the kernel
provides a reliable message as soon as initialization is done.

ref #1096
2014-04-07 17:01:01 +02:00
Christian Helmuth
cd0d378142 Provide Genode version information in log
Fixes #551
2014-04-01 16:38:49 +02:00
Stefan Kalkowski
0dece91973 core: re-design memory allocator (fix #1091)
* Core_mem_allocator: implement Range_allocator interface
* Core_mem_allocator: allocate with page-granularity only
* Use slab allocators in core where meaningful (e.g. dataspace objects)
2014-03-18 14:24:55 +01:00
Martin Stein
f988c254df hw: comment conditions of interprocessor interrupt
ref #1088
2014-03-14 13:17:37 +01:00
Martin Stein
8ce197d7fa hw: do inter-processor interrupt only when needed
The processor scheduler can determine without much overhead wether
the currently scheduled client becomes out-dated due to the insertion
of another client. This can be used to safe inter-processor interrupts
when a remote insertion doesn't imply an update of the currently
scheduled client.

fix #1088
2014-03-14 13:17:37 +01:00
Martin Stein
18cee192e2 hw: don't do redundant inter-processor interrupts
At least with the ARM generic interrupt controller, inter-processor interrupts
are edge triggered and banked for all source processors. Thus it might be
possible that such an interrupt gets triggered redundantly until the targeted
processor is able to grab the kernel lock. As we're only interested in making
a processor recognize accumulative updates to its scheduler, we can omit
further interrupts if there is one pending already at the targeted processor.

ref #1088
2014-03-14 13:17:37 +01:00
Martin Stein
852785324f hw: move Processor_client to processor.h
ref #1088
2014-03-14 13:17:37 +01:00
Martin Stein
8818d810a1 hw: clean-up destruction of processor clients
ref #1088
2014-03-14 13:17:36 +01:00
Martin Stein
17f17df74b hw: rename Execution_context in Processor_client
ref #1088
2014-03-14 13:17:36 +01:00
Martin Stein
010e00ae7a hw: rename Cpu_scheduler in Processor_scheduler
ref #1088
2014-03-14 13:17:36 +01:00
Martin Stein
a8d071b372 hw: inter-processor interrupt on remote scheduling
ref #1088
2014-03-14 13:17:36 +01:00
Martin Stein
044a109c3a hw: reset scheduling timeout implicitely
This is needed as soon as we do inter-processor interrupts to
inform a processor about a remote modification in its scheduling plan.
In this case we can not explicitely decide wether to reset timer
or not. Instead we must decide it according to the choices of the
scheduler before and after the modification.

ref #1088
2014-03-14 13:17:36 +01:00
Martin Stein
b9041d601d hw: Fix name of Page_flags type
The type was accidentally changed by "hw & arm_v6: clean up TLB driver"

ref #1076
2014-03-14 13:16:05 +01:00
Martin Stein
6e21ab42d2 hw: apply MMU cache-flushes to all processors
ref #1076
2014-03-14 13:16:05 +01:00
Martin Stein
56e4588e91 hw: provide processor broadcasts in core
A processor broadcast executes a function on all available processors
which is needed at least to do MMU cache-flushes globally.

ref #1076
2014-03-14 13:16:05 +01:00
Martin Stein
395e955756 hw: set affinity of core threads
ref #1076
2014-03-14 13:16:05 +01:00
Martin Stein
a586828844 hw: consider affinity location in Platform_thread
ref #1076
2014-03-14 13:16:05 +01:00
Martin Stein
49bf33e404 hw: multiprocessor aware processor scheduling
ref #1076
2014-03-14 13:16:05 +01:00
Martin Stein
f545fa0e36 hw: provide identification of a processor object
ref #1076
2014-03-14 13:16:04 +01:00
Martin Stein
e38060d81e hw: get a thread cap in Thread_base constructor
Previously this was not done before Thread_base::start(..) in
base-hw as it was not needed to have a valid cap that early. However,
when changing the affinity of a thread we need the cap to be valid
before Thread_base::start(..).

ref #1076
2014-03-07 17:24:54 +01:00
Martin Stein
52addb591b hw: multiprocessor aware verbosity on thread start
ref #1076
2014-03-07 17:24:28 +01:00
Martin Stein
ed9c4f4427 hw: get start-thread syscall multiprocessing aware
ref #1076
2014-03-07 17:24:12 +01:00
Martin Stein
194b6b64c1 hw: rename Multiprocessor in Processor_pool
fix #1083
2014-03-04 19:05:21 +01:00
Martin Stein
d2fd00a828 hw: rename files multiprocessor.* in processor.*
ref #1083
2014-03-04 19:05:09 +01:00
Martin Stein
7bdb8c9007 hw: let Processor inherit from Processor_driver
ref #1083
2014-03-04 19:04:50 +01:00
Martin Stein
effeb765b9 hw: rename <spec>::Cpu in <spec>::Processor_driver
ref #1083
2014-03-04 19:04:32 +01:00