Commit Graph

3499 Commits

Author SHA1 Message Date
Sebastian Sumpf
66db2ee54e libports: Mesa 11.2.2
OpenGL 4.5 with software and i965 rendering back ends.

issue #2488
2017-08-28 16:49:43 +02:00
Sebastian Sumpf
dbff692c86 libports: DRM library 2.4.65
issue #2488
2017-08-28 16:49:42 +02:00
Sebastian Sumpf
c1029dd556 libc: add '__fpclassifyf' to libc symbol map
issue #2488
2017-08-28 16:49:42 +02:00
Sebastian Sumpf
61ae2e5b80 libc-plugin: make fd allocator thread safe
issue #2488
2017-08-28 16:49:42 +02:00
Sebastian Sumpf
17df52bfbd libc: allow RTLD_GLOBAL for dlopen
issue #2488
2017-08-28 16:49:42 +02:00
Emery Hemingway
1e9ad9e3d9 Nim toolchain improvements
- Fix fatal exception handling so that stack traces are dumped
- Add 'include/nim' directories to Nim module search path
- Enable release optimizations for release builds

Fix #2493
2017-08-28 16:49:42 +02:00
Norman Feske
556fec24b1 core-linux: avoid block-for-signal assertion
This patch removes the assertion about the unexpected call of
'block_for_signal' within core. On Linux, this call is actually
expected because of the handling of SIGCHLD signals by core.
2017-08-28 16:49:41 +02:00
Norman Feske
94f428a8b6 depot: update src/menu_view recipe
The menu-view component uses the gems/include/polygon_gfx/ headers now.
2017-08-28 16:49:41 +02:00
Norman Feske
82dc836c50 gems: update menu_view.run, show depgraph 2017-08-28 16:49:41 +02:00
Norman Feske
063413ca1f menu_view: animate geometric changes 2017-08-28 16:49:41 +02:00
Norman Feske
bb52181bc5 menu_view: fix frame dropping after sleep
When idle, menu_view de-schedules timer events to save processing time.
Once reactivated by a dialog update, it computes the passed time and
applies the result to the animator. However, the animation was most likely
started by the update not during the sleep. So the passed time must not
be applied to the animation in this case. Otherwise, many animation steps
are computed at once within a single visible frame.

Furthermore, the patch adjusts the REDRAW_PERIOD to 2, which is a better
value for geometric movements as opposed to mere color-blending effects
where the frame rate does not matter so much.

It also refines the nitpicker-buffer relocation in a way that extends
the buffer but does not shrink it. This lowers the interaction with
nitpicker in situations where the dialog size changes a lot.
2017-08-28 16:49:41 +02:00
Norman Feske
cdebd0a994 menu_view: depgraph widget
The new <depgraph> widget arranges child widgets in the form of a
dependency graph.
2017-08-28 16:49:41 +02:00
Norman Feske
f073c51b49 menu_view: support labels with no background
By applying the text output to the alpha buffer in addition to the pixel
buffer, labels can now appear without the need for an underlying frame
or button.
2017-08-28 16:49:40 +02:00
Norman Feske
4ca493b762 menu_view: use list_model_from_xml.h 2017-08-28 16:49:40 +02:00
Norman Feske
c601052c8c menu_view: generalized data-model-update utility
The utility simplifies the synchronization of a list-based data model
from an XML structure.
2017-08-28 16:49:40 +02:00
Norman Feske
13e9f6728d menu_view: split implementation into several files 2017-08-28 16:49:40 +02:00
Norman Feske
80324d9f54 menu_view: handle disppearing child widgets 2017-08-28 16:49:40 +02:00
Norman Feske
569741faf2 menu_view: add '<float>' widget
The new widget allows one to align a child widget within a larger parent
widget by specifying the boolean attributes 'north', 'south', 'east',
and 'west'. If none is specified, the child is centered. If opposite
attributes are specified, the child is stretched.
2017-08-28 16:49:40 +02:00
Norman Feske
29c6d9ee9d gems: reset 'Nitpicker_buffer' to gray, not black
This improves the output quality of antialiased lines onto a transparent
nitpicker buffer. For antialiased graphics operations, the initial color
leaks through. Leaking 50% gray is better than leaking black, in
particular when drawing white lines.
2017-08-28 16:49:39 +02:00
Norman Feske
c3d3815476 gems: define caps in nano3d.run 2017-08-28 16:49:39 +02:00
Norman Feske
97e4af36b8 gems/animator.h: use private 'List_element'
This patch makes the use of 'List' invisible at the 'Animator'
interface. This allows users of the utility to keep 'Animator::Items' in
a custom 'List' with no aliasing problems.
2017-08-28 16:49:39 +02:00
Norman Feske
e86758084c gems: painter for drawing sub-pixel accurate lines 2017-08-28 16:49:39 +02:00
Norman Feske
ade05e5a7e gems: utility for calculating bezier curves 2017-08-28 16:49:39 +02:00
Norman Feske
cb72784717 os: add template specialization for alpha pixel
The specialization is needed for applying anti-aliased drawing
operations on alpha channels.
2017-08-28 16:49:39 +02:00
Christian Prochaska
b0935ef9b2 VFS: nonblocking interface
The VFS library can be used in single-threaded or multi-threaded
environments and depending on that, signals are handled by the same thread
which uses the VFS library or possibly by a different thread. If a VFS
plugin needs to block to wait for a signal, there is currently no way
which works reliably in both environments.

For this reason, this commit makes the interface of the VFS library
nonblocking, similar to the File_system session interface.

The most important changes are:

- Directories are created and opened with the 'opendir()' function and the
  directory entries are read with the recently introduced 'queue_read()'
  and 'complete_read()' functions.

- Symbolic links are created and opened with the 'openlink()' function and
  the link target is read with the 'queue_read()' and 'complete_read()'
  functions and written with the 'write()' function.

- The 'write()' function does not wait for signals anymore. This can have
  the effect that data written by a VFS library user has not been
  processed by a file system server yet when the library user asks for the
  size of the file or closes it (both done with RPC functions at the file
  system server). For this reason, a user of the VFS library should
  request synchronization before calling 'stat()' or 'close()'. To make
  sure that a file system server has processed all write request packets
  which a client submitted before the synchronization request,
  synchronization is now requested at the file system server with a
  synchronization packet instead of an RPC function. Because of this
  change, the synchronization interface of the VFS library is now split
  into 'queue_sync()' and 'complete_sync()' functions.

Fixes #2399
2017-08-28 16:49:38 +02:00
Norman Feske
8312950e2f gems: app/depot_query 2017-08-28 16:49:38 +02:00
Norman Feske
c8b2222485 depot: add pkg/test-fs_report 2017-08-28 16:49:38 +02:00
Norman Feske
a4b543bc80 init: avoid repeated config XML parsing 2017-08-28 16:49:37 +02:00
Norman Feske
bfbe5128cd tar_rom: minor documentation fix 2017-08-28 16:49:37 +02:00
Norman Feske
6184a27619 init: defer forwarded session requests when needed
This patch changes init's service forwarding such that pending requests
are kept unanswered as long as the requested service is not present
(yet). In dynamic-init scenarios, this is needed in situtions where the
dynamic init is known to eventually provide the service but the internal
subsystem is not ready yet. Previously, a client that attempted to
request a session in this early phase would get a 'Service_denied'
exception. By deferring the forwarding in this situation, the behaviour
becomes deterministic.

If a matching '<service>' exists but there is no matching policy sub
node, the request is answered with 'Service_denied' - as expected.
2017-08-28 16:49:37 +02:00
Christian Prochaska
b3e039d0b1 base: name initial thread according to child policy
Fixes #2494
2017-08-28 16:49:37 +02:00
Martin Stein
27a608a20a core: ignore boot modules with size 0
A boot module with size 0 previously made Core crash with a page fault in
Region_map_component::attach. This patch prevents the creation of ROM-FS
entries for such modules.

Ref #2490
2017-08-28 16:49:36 +02:00
Martin Stein
23f35370a2 core: generic ROM module initialization
For most base platforms (except linux and sel4), the initialization of
boot modules is the same. Thus, merge this default implementation in the
new unit base/src/core/platform_rom_modules.cc.

Ref #2490
2017-08-28 16:49:36 +02:00
Martin Stein
abc80b7782 prepare_port sel4: check required python modules
This prevents undescriptive errors when building sel4.

Ref #2490
2017-08-28 16:49:36 +02:00
Martin Stein
64377f4b80 core, region map: handle failing metadata assign
In Region_map_component::attach, storing the metadata for a region may
throw an exception. Catch it and throw an Invalid_dataspace exception.

Ref #2490
2017-08-28 16:49:36 +02:00
Martin Stein
b2624be2ad allocator avl: exception if metadata assign fails
The Allocator_avl_tpl::metadata method (assigning variant) may fail
silently. Change this to make debugging easier.

Ref #2490
2017-08-28 16:49:36 +02:00
Martin Stein
0778a0f700 core, region map: more descriptive variable name
In the implementation of Region_map_component::attach
rename variable 'r' 'attach_at'.

Ref #2490
2017-08-28 16:49:36 +02:00
Martin Stein
c0c0d8c600 nic_router: error if uplink domain not configured
Ref #2490
2017-08-28 16:49:36 +02:00
Martin Stein
96c7f8d53f init: be aware of abandoned any-child routes
Previously, init did not test if a service is abandoned on a new
configuration if the service was routed via an any-child route.

Fixes #2483
2017-08-28 16:49:35 +02:00
Martin Stein
9476f3f645 run/init: test abandoned any-child routes
Currently, init does not test wether a service is abandoned on a new
configuration if the service was routed via an any-child route. Trigger
this behaviour in the init test.

Ref #2483
2017-08-28 16:49:35 +02:00
Christian Prochaska
60ae6721db hw_x86_64: read number of I/O redirection table entries from IOAPIC
Fixes #2475
2017-08-23 14:08:37 +02:00
Martin Stein
47dc708887 usb rpi: get rid of local hardware timer
We used a hardware timer locally in the RPI USB driver because a timer
connection was not precise enough to fullfill the host controllers
requirements.

With the modern timer connection interface, however, reading out time at
a connection is microseconds precise and we can remove the local timer.
But we cannot use the same timer connection for doing legacy-interface
stuff like usleep (currently used in LX kit) and modern-interface stuff
like curr_time. Thus, we open two connections for now.

Ref #2400
2017-08-23 14:08:37 +02:00
Martin Stein
b6efa7f6f9 timer connection: fast initial calibration
The calibration of the interpolation parameters was previously only done
periodically every 500 ms. Together with the fact that the parameters
had to be stable for at least 3 calibration steps to enable
interpolation, it took at least 1.5 seconds after establishing a
connection to get microseconds-precise time values.

This is a problem for some drivers that directly start to poll time.
Thus, the timer connection now does a calibration burst as soon as it
switches to the modern mode (the mode with microseconds precision).
During this phase it does several (currently 9) calibration steps
without a delay inbetween. It is assumed that this is fast enough to not
get interrupted by scheduling. Thus, despite being small, the measured
values should be very stable which is why the burst should in most cases
be sufficient to get the interpolation initialized.

Ref #2400
2017-08-23 14:08:37 +02:00
Martin Stein
adaad64fbb timer connection: relax factor shifting
When in modern mode (with local time interpolation), the timer
connection used to maximize the left shifting of its
timestamp-to-microseconds factor. The higher the shift the more precise
is the translation from timestamps to microseconds. If the timestamp
values used for determining the best shift were small - i.e.  the delay
between the calibration steps were small - we may got a pretty big
shift.  If we then used the shift with bigger timestamp values - i.e.
called curr_time seldom or raised calibration delays - the big shift
value became a problem. The framework had to scale down all measured
timestamps and time values temporarily to stay operative until the next
calibration step.

Thus, we now raise the shift only that much that the resulting factor
fullfills a given minimum. This keeps it as low as possible according
to the precision requirement. Currently, this requirement is set to 8
meaning that the shifted factor shall be at least 2^8 = 256.

Ref #2400
2017-08-23 14:08:37 +02:00
Martin Stein
31af206a8c hw rpi: fix bug that caused bad timer precision
The kernel timer on RPI is able to measure time microseconds-precise.
Howeer, due to a bug, we dropped precision during the ticks-to-time
translation and return only milliseconds-precise time.

Ref #2400
2017-08-23 14:08:37 +02:00
Martin Stein
6dfb903bd0 timer connection: always work with microseconds
As the timer session now provides a method 'elapsed_us', there is no more need
for doing any internal calculations with values of milliseconds.

Ref #2400
2017-08-23 14:08:36 +02:00
Martin Stein
8750e373a0 timer session: add elapsed_us method
As timer sessions are not expected to be microseconds precise (because
of RPC latency and scheduling), the session interface provided only a
method 'elapsed_ms' although the back end of this method in the timer
driver works with microseconds.

However, in some cases it makes sense to have a method 'elapsed_us'. The
values it returns might be milliseconds away from the "real" time but it
allows you to work with delays smaller than a millisecond without
getting a zero delta value.

This commit is motivated by the need for fast bursts of calibration
steps for the time interpolation in the new timer connection.

Ref #2400
2017-08-23 14:08:36 +02:00
Christian Prochaska
f7f2c86c41 libc_noux: increase stack size
Fixes #2492
2017-08-23 14:08:36 +02:00
Christian Prochaska
93371be750 noux_tool_chain.inc: increase capability quotas
Fixes #2491
2017-08-23 14:08:36 +02:00
Alexander Boettcher
9cac99172b noux_bash.run: increase 'fb_drv' capability quota
Fixes #2489
2017-08-23 14:08:36 +02:00
Christian Helmuth
8b073f46df depot: update recipe hashes 2017-08-18 10:25:28 +02:00
Alexander Boettcher
571232fd41 virtualbox.run: support network for multiple VMs 2017-08-18 10:24:48 +02:00
Alexander Boettcher
6f8cc92ce0 run: disable some scripts in autopilot mode
because of the limit hardware features of our x86 32bit test hardware
2017-08-18 10:24:48 +02:00
Sebastian Sumpf
48134c2a0b ldso/cxx: show symbols names of undefined references
Fixes #2482
2017-08-18 10:24:48 +02:00
Alexander Senier
ee40d29b91 base-linux: Log error message for too long files
The filename buffer of a dataspace in base-linux is limited to
40 bytes. When using file names longer than this, the remainder
gets dropped silently. Add an error message to aid debugging this
case.
2017-08-18 10:24:48 +02:00
Alexander Senier
23db75deff global.mk: Make build messages configurable
This is helpful for disabling messages in etc/tools.conf by
setting it to e.g.

   MSG_LINK = @true ""

This results in much shorter and less cluttered logs in automatic
builds.
2017-08-18 10:24:47 +02:00
Alexander Boettcher
4020766105 sel4: adapt timeouts of run scripts
Issue #2451
2017-08-18 10:24:47 +02:00
Alexander Boettcher
5aab244ce3 sub_rm.run: use config rom for steering test
instead of compile time config enums.
2017-08-18 10:24:47 +02:00
Alexander Boettcher
fd0b256f7c sel4: support cpu utilization via TRACE service
using benchmark infrastructure of the seL4 kernel

Issue #2451
2017-08-18 10:24:47 +02:00
Alexander Boettcher
69e71147ef platform_drv: replace nova specific device_pd
by using generic Pd_session::map instead for eager memory mappings of DMA
memory.

Issue #2209
2017-08-18 10:24:47 +02:00
Alexander Boettcher
fe4bdde687 nova: implement Pd_session::map
- factor out Rm_client::pager lambda code into utility
  Region_map_component::create_map_item
- use utility to find/lookup physical addresses to be mapped eagerly

Issue #2209
2017-08-18 10:24:46 +02:00
Alexander Boettcher
58e4f6cf9d core: add map method to pd_session interface
The method can be used to trigger the eager insertion of page frames into
page tables. Intention: to be used for memory used for DMA.

Issue #2209
2017-08-18 10:24:46 +02:00
Emery Hemingway
5f35175644 app/sequence: execute components in sequence
Fix #2476
2017-08-18 10:24:46 +02:00
Alexander Boettcher
523b317fe6 vbox4: disable muen run targets due to issue #2399 2017-08-18 10:24:46 +02:00
Alexander Boettcher
8e798ab904 vbox5: disable muen
vbox5 is not supported on muen/hw
2017-08-18 10:24:46 +02:00
Norman Feske
bf04b0c3aa ports: update URL for downloading lynx 2017-08-18 10:24:46 +02:00
Alexander Boettcher
f825775e40 sel4: update to kernel 6.0
Issue #2451
2017-08-18 10:24:45 +02:00
Alexander Boettcher
0ddda79511 sel4: add priority support
Issue #2451
2017-08-17 11:04:24 +02:00
Alexander Boettcher
7a8e0e59af sel4: enable smp for x86
Issue #2451
2017-08-17 11:04:24 +02:00
Emery Hemingway
2d8bfd8569 pthread: do not error from pthread_condattr_setclock dummy
Do not regard a fake condattr object produced by pthread_condattr_init
as invalid when passed to no-op dummies.

Fix #2471
2017-08-17 11:04:23 +02:00
Emery Hemingway
ad6c94bb09 input_filter character mapping rules for the Workman layout
http://workmanlayout.org/

Fix #2473
2017-08-17 11:04:23 +02:00
Norman Feske
a9eb25f07f gems: fix cap quotas of launcher.run scenario
The launcher.run scenario was last updated mid-may of the recently
developed cap-quota accounting (before all cap types were covered).
Hence, the quotas used in the scenario are too low. This patch adjusts
the values such that the scenario can be started on NOVA on Qemu. It
also fixes a warning about a deprecated way of configuring the
report_rom component.

Thanks to Jörg-Christian Böhme for reporting!
2017-08-17 11:04:23 +02:00
Emery Hemingway
31caae4765 lib/vfs/fatfs: FAT file-system plugin using FatFS library
See repos/libports/src/lib/vfs/fatfs/README and
/home/user/repo/genode/repos/libports/run/libc_vfs_fat.run for
documentation.

Ref #2410
2017-08-17 11:04:23 +02:00
Emery Hemingway
6401d52e61 test/libc_vfs: interpret EPERM to indicate missing symlink support
Ref #2462
2017-08-17 11:04:23 +02:00
Emery Hemingway
cfa1bec00d run template for block-backed VFS plugins
Repurpose the libc plugin test template libc_filesystem_test.inc into
libc_vfs_filesystem_test.inc.

Ref #2410
2017-08-17 11:04:22 +02:00
Emery Hemingway
f09fc4a5a2 Update FatFS port to version 0.13
- Update FatFS port from 0.07e to 0.13
- Multi-device support
- Basic test at run/fatfs
- Adaption of existing components

Note, ffat is now consistently renamed to fatfs.

Ref #2410
2017-08-17 11:04:22 +02:00
Christian Helmuth
473aa3454d Move libc file-system test into test/libc_vfs
Preparation for removing ffat library.

Issue #2410
2017-08-17 11:04:22 +02:00
Alexander Boettcher
de06eefbac hw: evaluate write fault on RO page
rm_fault.run triggers write on read-only ROM provided by core, which
fails without this patch:

arm - "raised unhandled data abort"
x86 - (silent/invisible) busy loop because write fault gets never resolved
2017-08-17 11:04:22 +02:00
Sebastian Sumpf
5adda2d934 usb: add asynchronous interface release
This became necessary, since URBs may still be pending upon interface
release.

Fixes #2466
2017-08-17 11:04:22 +02:00
Christian Helmuth
132748a783 Fix location setting in affinity test
This fixes a regression introduced by me in
16914bddc8.
2017-08-17 11:04:22 +02:00
Christian Helmuth
e8c8776959 foc: propagate affinity location on thread creation 2017-08-17 11:04:21 +02:00
Emery Hemingway
2deddf1e6d Check for symlink target length errors
Check for symlink length errors at the VFS library and the ram_fs and
vfs servers.

Fix #2462
2017-08-17 11:04:21 +02:00
Emery Hemingway
cfdac3f4c3 ram_fs: check symlink writes for termination bytes
Ref #2461
2017-08-17 11:04:21 +02:00
Alexander Boettcher
0743ea87ed rm_fault.run: check for write faults on ROM
Issue #2451
2017-08-17 11:04:21 +02:00
Alexander Boettcher
da5441292a sel4: add Wandboard Quad (iMX6) support
Issue #2451
2017-08-17 11:04:21 +02:00
Alexander Boettcher
c22b60f0c4 base: add initial r0 register to crt0.s for arm
Issue #2451
2017-08-17 11:04:21 +02:00
Alexander Boettcher
782b457476 wand_quad: re-enable i.MX6 EPIT user level timer
Issue #2451
2017-08-17 11:04:21 +02:00
Alexander Boettcher
66c0c7b6f1 sel4: add x86_64 support
Issue #2451
2017-08-17 11:04:20 +02:00
Norman Feske
e31806d4e6 dde_rump: fix rump_iso test
The run script did not consider the routing for the environment ROM
sessions for the test-iso component. It routed all ROM sessions -
including the ones for the executable and the dynamic linker - to
fs_rom. The patch also adds the cap quota definitions required since
version 17.05 and fixes a whitespace inconsistency between the test
program and the run script.

Thanks to Steven Harp for reporting!
2017-08-17 11:04:20 +02:00
Norman Feske
1f679cdffe ports: assign caps in genode_org.run, lighttpd.run 2017-08-17 11:04:20 +02:00
Christian Helmuth
31cffe52a6 usb_terminal: remove obsolete vendor/product enums 2017-08-17 11:04:20 +02:00
Christian Helmuth
e5f0dae598 terminal_log: carriage-return on newline
This is expected by hardware terminals, ie., terminal programs connected
to null-modem serial connections. Otherwise, the next line starts at the
column right after the last line.
2017-08-17 11:04:20 +02:00
Christian Prochaska
178795f2ec virtualbox.run: increase capability quota for fb_drv
Fixes #2463
2017-08-17 11:04:20 +02:00
Emery Hemingway
e2c1ea04ea depot: recipes for src/ram_blk, src/vfs
Ref #2446
2017-08-17 11:04:19 +02:00
Emery Hemingway
c5c9d71df3 libc: track O_ACCMODE flags from open
Fix #2457
2017-08-17 11:04:19 +02:00
Alexander Senier
87c19cb11a libc: handle O_CREAT|O_NOFOLLOW in open correctly
We return ELOOP if the file already exists on
open(...,O_CREAT|O_NOFOLLOW).

Fixes #2458
2017-08-17 11:04:19 +02:00
Alexander Boettcher
51dcf5f7f8 core: destruct platform_pd before ram_ds_factory
Platform_pd "_pd" uses a allocator for, which relies on the mapped RAM
dataspace within core. Unfortunately the RAM dataspaces are already freed up
during _ram_ds_factory destruction, which may lead to trouble if accessed
afterwards.

Issue #2451
2017-08-17 11:04:19 +02:00
Alexander Boettcher
95329c82e2 sel4: update to 5.2.0
Issue #2451
2017-08-17 11:04:19 +02:00
Alexander Boettcher
a717e92186 base: set CPP to our custom genode-cpp
Issue #2451
2017-08-17 11:04:18 +02:00
Christian Helmuth
145011b420 sd_card_drv: prevent deprecated warnings 2017-08-17 11:04:18 +02:00
Norman Feske
18cea099f0 depot: recipes for ahci, fs_rom, ram_fs, usb_block 2017-08-17 10:59:44 +02:00
Norman Feske
50a1b84308 usb_drv: wait for first valid config
This patch defers the initialization of the USB driver until its
configuration is valid.
2017-08-17 10:59:44 +02:00
Alexander Boettcher
24875c0ea8 platform_drv: add report about available pci devices
Issue #1359
2017-08-17 10:59:44 +02:00
Norman Feske
7d12d7a78f fs_report.run: replace test with dedicated program
The new version of the test exercises the combination of fs_report with
ram_fs and fs_rom as a more flexible alternative to report_rom.

It covers two corner cases that remained unaddressed by fs_rom and
ram_fs so far: First, the late installation of a ROM-update signal
handler at fs_rom right before the content of the file is modified.
Second, the case where the requested file is not present on the file
system at the creation time of the ROM session. Here, the ram_fs missed
to inform listeners for the compound directory about the later created
file.
2017-08-17 10:59:43 +02:00
Norman Feske
d649451c3d fs_rom: trigger deferred ROM-update signal
This patch ensures that fs_rom delivers a ROM-update notification in the
case where the underlying file was changed in-between requesting the
initial ROM content and registering the signal handler.
2017-08-17 10:59:43 +02:00
Norman Feske
bfcdab6079 fs_rom: make read-packet handling more robust
With the introduction of the CONTENT_CHANGED notifications delivered via
the packet stream, the assumption that no more than one READ packet is
in flight at all times does no longer hold. If the fs server responds
to a CONTENT_CHANGED packet while the fs_rom expects the completion of a
read request, the '_update_dataspace' method would prematurely return,
leaving the dataspace unpopulated. This patch solves the problem by
specifically waiting for the completion of the read request.
2017-08-17 10:59:43 +02:00
Norman Feske
0b580628cf file system: track content via version counter
This makes the delivery of CONTENT_CHANGED responses more robust.
2017-08-17 10:59:43 +02:00
Christian Prochaska
6a43f3c11a file system: use Id_space instead of Node_handle_registry
Fixes #2436
2017-08-17 10:59:43 +02:00
Norman Feske
0d1be4abe2 depot: update recipe hashes 2017-06-29 12:00:04 +02:00
Christian Helmuth
78f1fd29f7 Translate buffer-exceeded exception in Session_requester
Session_requester inherits from Dynamic_rom_session::Content_producer
which specifies the Buffer_capacity_exceeded exception which is thrown
on insufficient buffer space.
2017-06-29 12:00:03 +02:00
Christian Helmuth
c18dffa9fa base: align metadata allocation in heap at 16 byte
Issue #754
2017-06-29 12:00:03 +02:00
Norman Feske
a9da97bc4a init.run: lower timing sensitivity
Instead of relying on init's delayed reporting, we explicitly force init
to produce a new report with the up-to-date child-RAM information.
2017-06-29 12:00:03 +02:00
Norman Feske
ce01fd5321 depot: update drivers_interactive-pbxa9 to 17.05
With this commit, the wm.run script works for the pbxa9 platform when
using the base-hw kernel.
2017-06-29 12:00:02 +02:00
Norman Feske
4b862cb047 depot: fix src/pbxa9_drivers recipe
This is a follow-up commit to "os: move private declarations to driver
target".
2017-06-29 12:00:02 +02:00
Norman Feske
d2b21d294e base/mk: streamline spec includes for ARM
This patch sets the -march complile flag in spec/arm_v7a.mk, which
enables us to build depot archives for the 'arm_v7a' architecture.

It also removes copy-pasted comments that offer no valuable insights but
contain grammar errors.
2017-06-29 12:00:01 +02:00
Alexander Boettcher
430c0f12e0 vbox: test VM test case with a lot of memory
Issue #2455
2017-06-29 12:00:01 +02:00
Alexander Boettcher
163fe6caaa vbox: make vm memory configurable for vbox*.run
Issue #2455
2017-06-29 12:00:01 +02:00
Alexander Boettcher
0469858f05 vbox5: add raw disk VM test case
Issue #2455
2017-06-29 12:00:01 +02:00
Alexander Boettcher
ad1f38a780 vbox5: recognized more than 4Gb in VMs
Fixes #2455
2017-06-29 12:00:00 +02:00
Martin Stein
67fc1ec42b timeout test: prioritize timer driver over test
Ref #2400
2017-06-29 12:00:00 +02:00
Martin Stein
8d2ee6d040 timer okl4: remove deprecated const_cast
Ref #2400
2017-06-29 12:00:00 +02:00
Martin Stein
61f59818d3 pit/fiasco timeout: raise time error tolerance
On platforms that use the PIT timer driver, 'elapsed_ms' is pretty
inprecise/unsteady (up to 3 ms deviation) for a reason that is not
clearly determined yet. On Fiasco and Fiasco.OC, that use kernel timing,
it is the same. So, on these platforms, our locally interpolated time
seems to be fine but the reference time is bad. Until this is fixed, we
raise the error tolerance for these platforms in the run script.

Ref #2400
2017-06-29 11:59:59 +02:00
Norman Feske
cd3f6aba37 depot: remove foc_native_pd from src/base-foc
This patch is a follow-up commit to "foc: remove obsolete features".
It fixes the extraction of the src/base-foc archive.

Issue #2405
2017-06-29 11:59:59 +02:00
Christian Helmuth
69215bc2fc hw: configure SDHC IRQ secure on imx53_qsb_tz 2017-06-29 11:59:59 +02:00
Alexander Boettcher
a9f263db16 vbox4: extended AMD SVM support
Issue #2454
2017-06-29 11:59:59 +02:00
Alexander Boettcher
9b93ebfa18 nova: extend SVM support
- Win7 32 bit VM on 32bit Genode/Nova runs fin runs fine
- tested on Phenom II X4

Issue #2454
2017-06-29 11:59:58 +02:00
Adrian-Ken Rueegsegger
c14149b4eb Update Muen port
- Use latest Muen version
- Sync VirtualBox Muen subject state
- Rework Muen download so contrib/muen-* remains untouched after port
  has been prepared
2017-06-29 11:59:58 +02:00
Christian Helmuth
82af06a42a sd_card: enable wand_quad/imx6 again 2017-06-29 11:59:58 +02:00
Christian Helmuth
ad824cea11 sd_card: cleanup driver library structure
Now both, the sd_card_drv and sd_card_bench use LIBS=sd_card_drv.
2017-06-29 11:59:58 +02:00
Christian Helmuth
4d11b7e5a8 sd_card: move defs from wand_quad to imx6 header 2017-06-29 11:59:57 +02:00
Norman Feske
f1bd097568 depot: fix src/demo recipe
Without this fix, the src/demo recipe can fail when using -j.
2017-06-29 11:59:57 +02:00
Alexander Boettcher
67a1cb92f2 nova: handle instable TSC calibration
Issue #2400
2017-06-29 11:59:57 +02:00
Emery Hemingway
73eb7a52a0 server/fs_report: do not append '.report to file names
Appending a suffix to report filenames was behavior inherited from
fs_log, it prevents creating files where directories need to be created
later. But unlike logs, only a subset of the hierarchy will report and
those that do append a component-local label, so the risk of collision
is low.

By removing the suffix fs_rom can serve reports back as ROM just as
report_rom does.

Ref #2422
2017-06-29 11:59:56 +02:00
Christian Prochaska
04f82721b1 fs_rom_update.run: add capability quota
Fixes #2453
2017-06-29 11:59:54 +02:00
Martin Stein
889db34cc3 hw cortex_a9: fix bug in kernel timer
A bug in the timer-ticks-to-microseconds translation of the kernel timer
caused the user time to periodically get stuck for about 32 milliseconds
and then jump forward to the normal level again.

Ref #2400
2017-06-29 11:59:54 +02:00
Martin Stein
9b1c26ab7f timeout lib: dynamic interpolation-factor shift
In the timeout framework, we maintain a translation factor value to
translate between time and timestamps. To raise precision we scale-up
the factor when we calculate it and scale-down the result of its
appliance later again. This up and down scaling is achieved through
left and right shifting. Until now, the shift width was statically
choosen. However, some platforms need a big shift width and others a
smaller one. The one static shift width couldn't cover all platforms
which caused overflows or precision problems.

Now, the shift width is choosen optimally for the actual translation
factor each time it gets re-calculated. This way, we can take care that
the shift always renders the best precision level without the risk for
overflows.

Ref #2400
2017-06-29 11:59:54 +02:00
Martin Stein
99d971f348 timeout test: result buffer as struct
The result-buffer related members of the fast polling test are
the same for each buffered result type. Thus, we can make the
code easier by providing them through a struct.

Ref #2400
2017-06-29 11:59:53 +02:00
Norman Feske
c7b739cc61 bomb.run: define resource preservation for init
This patch increases init's preserved RAM and capability quota to
account for a current limitation of init with respect to the creation of
sessions to parent services:

In contrast to regular routed services, sessions to parent services are
created via 'Env::session'. The implementation of 'Env::session'
automatically upgrades session quotas on demand, which is the desired
behavior for regular 'Connection' objects. However, for sessions
established on the behalf of init's children, we would need to reflect
the error condition to the child instead of resolving it locally within
init (by subsidizing the session with init's quota). This patch leaves
this issue unresolved but fixes the symptom for the bomb test. It is
meant as an interim solution until the handling of parent sessions is
revised.
2017-06-29 11:59:53 +02:00
Norman Feske
f95bfddc09 base: simplify handling of session-creation errors
This patch decouples the error handling of the quota transfers
and the actual session creation. In the previous version, an error in
the 'initiate_request' phase would leave the local scope via an
exception without disarming the transfer guard objects. This way,
the guard destructors would attempt the returning of session quota in
addition to the explicit call of '_revert_quota_and_destroy' as done in
the error handling of the 'initiate_request' operation.

In the presence of a session-creation error in the 'initiate_request'
phase, session quota would eventually be returned twice. This patch
removes the intertwined error handling of both phases in a way that the
guards of the first phase (quota transfer) are no longer present in the
second phase (initiate_request).
2017-06-29 11:59:52 +02:00
Norman Feske
5566aa0f94 bomb test: consider preserved PD session quota
This is an adaptation to the commit "core: prevent transfer of static PD
session quota".
2017-06-29 11:59:52 +02:00
Norman Feske
f278024e44 core: prevent transfer of static PD session quota
This patch makes sure that the initial PD session limit (as defined by
the client-provided session quota) is preserved over the entire lifetime
of the PD session. That means, it cannot be transferred to other PD
sessions. Otherwise, it may be impossive to hand back all the static
session quota to the PD-session client at session-destruction time
because parts of the initial quota would no longer belong to the
session.

Note that the initial limit can still be used for allocations within the
PD session as those allocations are automatically reverted at
session-destruction time.
2017-06-29 11:59:52 +02:00
Alexander Boettcher
238df4dd58 core: add information about infos provided by core
Issue #2242
2017-06-29 11:59:52 +02:00
Johannes Kliemann
1205607e78 os: add framebuffer based on platform_info of core
Issue #2242
2017-06-29 11:59:51 +02:00
Johannes Kliemann
615f2ba2da nova: support mbi2 framebuffer
- export framebuffer information as platform_info ROM by core

Issue #2242
2017-06-29 11:59:50 +02:00
Alexander Boettcher
f48e71e070 acpica: use platform_info for rsdt/xsdt lookup
Issue #2242
2017-06-29 11:59:50 +02:00
Alexander Boettcher
04b2919a1a acpi_drv: use platform_info for rsdt/xsdt lookup
Issue #2242
2017-06-29 11:59:50 +02:00
Alexander Boettcher
f30f0a81e0 nova: uefi boot support using multiboot2
- kernel provides ACPI RSDT/XSDT pointer
- core exports it via a ROM called "platform_info"

Issue #2242
2017-06-29 11:59:50 +02:00
Christian Helmuth
019528ee6a Disable lock tests on platforms without priorities
The implementations of the lock and C++ guards tests depend on
thread-execution priorities, which produces false negatives of the whole
thread test on platforms without priority support.
2017-06-29 11:59:49 +02:00
Martin Stein
5fec4a2166 timeout test: raise error tolerance on nova + qemu
On QEMU, NOVA uses the pretty unstable TSC emulation as primary time
source. Thus, timeouts do not trigger with the common precision (< 50
ms). Use an error tolerance of 200 ms for this platform constellation.

Ref #2400
2017-06-29 11:59:49 +02:00
Alexander Boettcher
94095a27ac nova: adjust calibration time
Extend the calibration time of CPUs with Local-APIC that does not support the
TSC-Deadline mode. Improves the accuracy of timeouts.

Issue #2400
2017-06-19 12:35:57 +02:00
Christian Helmuth
6f2afb9b44 hw: prevent warning about conversion narrowing 2017-06-19 12:35:57 +02:00
Josef Söntgen
8f577e9d25 usb: use if-else in packet_handler
Apparently this construct leads to a compiler errors like

  error: second operand to the conditional operator is of type ‘void’, but
  the third operand is neither a throw-expression nor of type ‘void’
2017-06-19 12:35:57 +02:00
Christian Helmuth
c9db94313c libc: improve VFS error handling 2017-06-19 12:35:57 +02:00
Christian Helmuth
d5b85da8de Prevent warning about tiny stack in weak_ptr test 2017-06-19 12:35:57 +02:00
Christian Helmuth
c223f74ce5 libc: support getsockopt(SO_TYPE) 2017-06-19 12:35:57 +02:00
Martin Stein
745fa4fd67 timeout test: improve documentation
Ref #2400
2017-06-19 12:35:56 +02:00
Martin Stein
71fd2b4cde timeout test: consider time shift between sessions
The fast polling test uses one timer session for raw 'elapsed_ms' calls
and another one for potentially interpolated 'curr_time' calls. It then
compares the two results against each other. However, until now, the
test did not consider that the duration of the session construction may
create a remarkable shift between the local times of the two sessions.
This shift is now determined and compensated before doing any
comparison.

Ref #2400
2017-06-19 12:35:56 +02:00
Martin Stein
9ded7e0295 nic_dump test: raise nic_router cap quota
Did not suffice at least at hw + x86_64.

Ref #2398
2017-06-19 12:35:56 +02:00
Christian Prochaska
3aa0a772b9 fuse_fs: add test run scripts
Fixes #2448
2017-06-19 12:35:56 +02:00
Christian Prochaska
a6db86b4dc fuse_fs: handle errors on mkdir correctly
Fixes #2449
2017-06-19 12:35:56 +02:00
Christian Helmuth
ba9ef7fdee foc: use slab for meta-data in RPC cap factory 2017-06-19 12:35:56 +02:00
Christian Helmuth
c16288bcde timer/foc: use current KIP-clock API
This prevents L4_DEPRECATED warnings.
2017-06-19 12:35:55 +02:00
Martin Stein
1ea745ca2e signal test: do not test multiple handlers
The multiple-handlers test was checking if handlers at one signal were
activated in a fair manner. But on Qemu, the error tolerance of one was
too small in rare cases (2 of 100 runs). However, having multiple
handlers for the same signal context can be considered deprecated
anyway. With the recommended Signal_handler wrapper for signal sessions,
you can't use this feature. Thus, we removed the multiple-handlers test.

Fixes #2450
2017-06-19 12:35:55 +02:00
Stefan Kalkowski
a004462096 hw: fix capability accounting of kernel/core
The recently implemented capability resource trading scheme unfortunately
broke the automated capability memory upgrade mechanism needed by base-hw
kernel/core. This commit splits the capability memory upgrade mechanism
from the PD session ram_quota upgrade, and moves that functionality
into a separate Pd_session::Native_pd interface.

Ref #2398
2017-06-19 12:35:55 +02:00
Stefan Kalkowski
6f8dc9054a base: setup parent upgrade mechanism eagerly
Fix #2447
2017-06-19 12:35:55 +02:00
Christian Helmuth
06b25a9082 Adjust GPIO cap quota in nic run scripts 2017-06-19 12:35:55 +02:00
Christian Prochaska
a1b1525ec1 lx_fs: handle errors on mkdir correctly
Fixes #2444
2017-06-19 12:35:55 +02:00
Emery Hemingway
47c616ab94 server/fs_report: write reports to file-systems
Fix #2422
2017-06-19 12:35:54 +02:00
Emery Hemingway
1eb37fbe22 VFS: move 'sync' from 'File_system' to 'Directory_service'
The the parent 'Directory_service' interface is reachable from
'Vfs_handle', whereas the 'File_system' interface is not.

Fix #2437
Ref #2422
2017-06-12 14:32:07 +02:00
Emery Hemingway
1838fb4773 vfs/ram: check parent directory on file creation
Fix #2443
2017-06-12 12:44:23 +02:00
Alexander Boettcher
0f227d5d24 run: adjust virtualbox cap quotas to fit native hw 2017-06-08 11:33:31 +02:00
Alexander Boettcher
77fe0c882b base: check ownership of thread in cpu_session
Fixes #1431
2017-06-08 11:33:06 +02:00
Alexander Boettcher
0523736ce4 acpi: limit device scope paths
Fixes #2371
2017-06-08 11:32:39 +02:00
Josef Söntgen
7c9861cc07 netperf: change download URL
Apparently the original netperf host has gone down. For the time
being switch to a stable host like the Ubuntu archive mirror.
2017-06-06 17:26:10 +02:00
Alexander Boettcher
158dbcc7ae vbox5: enable unrestricted guest support
Issue #2338
2017-06-06 13:06:33 +02:00
Martin Stein
b8e2253e5f timeout: fix bug in interpolation
We incorrectly used 'unsigned long' (which is 32 or 64 bit depending on
the CPU architecture) for a timestamp (which is always 64 bit) in the
timer-connection implementation.

Ref #2435
2017-06-06 13:01:43 +02:00
Christian Helmuth
5e1fb42b54 Fix warnings in ADA example 2017-06-02 15:58:22 +02:00
Emery Hemingway
32d16c1792 app/launcher: <configfile name="..."/> support
Fix #2404
2017-05-31 17:50:28 +02:00
Martin Stein
23337eb6e7 run/timeout: run also on arm w/o hw and qemu
On platforms were we do not have local time interpolation we can simply
skip the first test stage in the timeout test. This way, we can at least
test the rest.

Fixes #2435
2017-05-31 17:50:28 +02:00
Martin Stein
685f509a43 timer connection: no interpolation on arm w/o hw
On ARM, we do not have a component-local hardware time-source. The ARM
performance counter has no reliable frequency as the ARM idle command
halts the counter. Thus, we do not do local time interpolation on ARM.
Except we're on the HW kernel. In this case we can read out the kernel
time instead.

Ref #2435
2017-05-31 17:50:28 +02:00
Christian Helmuth
892ede515f depot: update recipe hashes 2017-05-31 16:18:01 +02:00
Christian Helmuth
67e33d3948 depot: adjust cap quotas in drivers_interactive_pc (64-bit) 2017-05-31 16:18:01 +02:00
Norman Feske
1e8689bafe depot: adjust cap quotas in drivers_interactive_pc 2017-05-31 13:16:25 +02:00
Norman Feske
7bb8e332a9 depot: adjust base recipe to removed headers
This patch updates the recipes for the base-<kernel> archives to the
recently removed os/config.h and os/timeout.h headers.
2017-05-31 13:16:25 +02:00
Sebastian Sumpf
c3cf7f3c3a riscv: ISA-1.9.1 and GCC-6.3.0 adaptions
Adds 1.9.1 support to base-hw

Note:
* the kernel timer is not working
* dynamic linking is currently not supported
2017-05-31 13:16:24 +02:00
Sebastian Sumpf
6c95eb9aff base-hw: RISC-V BBL
The Berkley Boot Loader handles kernel loading and machine mode
2017-05-31 13:16:24 +02:00
Emery Hemingway
b814188d7a Remove references to global heap in SDL audio
Ref #1987
2017-05-31 13:16:24 +02:00
Christian Prochaska
697f179e21 ram_fs: acknowledge packet in error case
Fixes #2434
2017-05-31 13:16:24 +02:00
Alexander Boettcher
c232886e0f vbox5: disable support of unrestricted-guest mode
Currently, Ubuntu does not work in unrestricted-guest mode, so, disable
it until this is fixed.

Issue #2338
2017-05-31 13:16:23 +02:00
Christian Prochaska
710947e0a3 gdb_monitor: adapt run scripts to current staging branch
Fixes #2432
2017-05-31 13:16:23 +02:00
Christian Prochaska
428131fd28 noux_tool_chain_auto: adapt to current staging branch
Fixes #2433
2017-05-31 13:16:23 +02:00
Christian Helmuth
854b70fd7d Prevent warning about "narrowing conversion" 2017-05-31 13:16:23 +02:00
Christian Prochaska
99937a6267 qt5: update to version 5.8.0
Fixes #2424
2017-05-31 13:16:23 +02:00
Christian Helmuth
8bd0efced6 Remove obsolete RAM/CAP services from run scripts
Adapted launchpad and also the rm_fault and resource_request tests.

Issue #2407
2017-05-31 13:16:22 +02:00
Stefan Kalkowski
632ef28463 os: removal of deprecated os/config.h (fix #2431) 2017-05-31 13:16:22 +02:00
Stefan Kalkowski
dd214a8b15 foc: suppress gcc warnings of L4Re components
Ref #2405
2017-05-31 13:16:22 +02:00
Emery Hemingway
16be05e530 Optional session label for Rtc connection constructor
Ref #2410
2017-05-31 13:16:22 +02:00
Adrian-Ken Rueegsegger
923fbc9e86 Update Muen port
- Adjust Muen RUN_OPTs
- Update documentation
- Checkout required submodule
2017-05-31 13:16:22 +02:00
Adrian-Ken Rueegsegger
d1b4fb1dff vbox: Simplify Muen guest interupt handling
Drop lock prefix since there is no concurrent access from other CPUs.
2017-05-31 13:16:22 +02:00
Adrian-Ken Rueegsegger
1db8694fd0 vbox: Sync hw_x86_64_muen subject state with Muen SK
VM-exit interruption info was dropped and Vbox only needs guest CR3
value for guest-physical memory translation but does not actually change
it since the VM is running in unrestricted guest mode.
2017-05-31 13:16:21 +02:00
Christian Helmuth
a431657851 lxip: correct msghdr initialization 2017-05-31 13:16:21 +02:00
Josef Söntgen
6d941ede1c noux_tool_chain: remove now unsed libraries
Zlib as well as readline were originally pulled in as a dependency of
pcre. They are now removed because pcre itself does not need them.
2017-05-31 13:16:21 +02:00
Christian Helmuth
febfb3bfe6 Fix source file location in RPi GPIO driver
The explicit relative location of the file instructed both target builds
to generate ../main.o which gloriously fails with parallel builds. The
produced range of error messages was astonishing ranging from "file
truncated" to "TLS reference in ../main.o mismatches non-TLS reference
in ../main.o".
2017-05-31 13:16:21 +02:00
Norman Feske
adb26b5216 API documentation refinements 2017-05-31 13:16:21 +02:00
Christian Helmuth
3c785a4ffb init: use service name from session class
Fixes issue with RAM constrains no longer effective.
2017-05-31 13:16:21 +02:00
Christian Helmuth
e00bd3e45b core: remove PD capability from thread object 2017-05-31 13:16:20 +02:00
Sebastian Sumpf
496671e523 gcc: RISC-V 6.3.0
issue #2423
2017-05-31 13:16:20 +02:00
Christian Helmuth
664702d8b5 Increase timeout of libc_ffat test to 90 seconds 2017-05-31 13:16:20 +02:00
Christian Helmuth
ea48f1f1cc core: remove warning about possibly leaking resources
Too many false positives...

Issue #2398
2017-05-31 13:16:20 +02:00
Christian Prochaska
e7b1cb4a27 qt5: update to version 5.7.1
Issue #2424
2017-05-31 13:16:20 +02:00
Christian Helmuth
b37f411c3f ahci: optionally report discovered devices
Issue #2417
2017-05-31 13:16:20 +02:00
Christian Prochaska
250fd42368 SDL: use libc time functions
Fixes #2415
2017-05-31 13:16:19 +02:00
Christian Prochaska
16deaa9a72 timed_semaphore: fix deprecated warning
Fixes #2429
2017-05-31 13:16:19 +02:00
Christian Prochaska
a507928cde qt5: fix deprecated warnings
Fixes #2427
2017-05-31 13:16:19 +02:00
Stefan Kalkowski
0fb672b493 run: use default Qemu memory size for x86
Fix #2428
2017-05-31 13:16:19 +02:00
Alexander Boettcher
b7da62cd55 vbox4/5: remove printf 2017-05-31 13:16:19 +02:00
Alexander Boettcher
7df58930e2 vbox4/5: add ubuntu VMs of some LTS versions
Issue #2338
2017-05-31 13:16:19 +02:00
Emery Hemingway
25ec021fee server/vfs: ignore invalid handles at close()
Ref #2410
2017-05-31 13:16:18 +02:00
Christian Prochaska
71c5afc3db libc_pipe: fix deprecated warnings
Fixes #2426
2017-05-31 13:16:18 +02:00
Christian Prochaska
040d0c9e42 arora: fix Nitpicker plugin demo
Fixes #2425
2017-05-31 13:16:18 +02:00
Christian Helmuth
923b3ec54d part_blk: prevent deprecated warning 2017-05-31 13:16:18 +02:00
Christian Prochaska
85919d29e2 qt5: update to version 5.6.2
Issue #2424
2017-05-31 13:16:18 +02:00
Alexander Boettcher
f865b71f27 libc: fix expired-timer calculation 2017-05-31 13:16:17 +02:00
Emery Hemingway
c1edfa5d46 lib/vfs/lxip: return READ_QUEUED from read_queued and complete_read
Ref #2406
2017-05-31 13:16:17 +02:00
Christian Prochaska
a304cfca9d ffat_fs: call 'exec_static_constructors()'
Fixes #2421
2017-05-31 13:16:17 +02:00
Christian Prochaska
0909256f97 qt5_qpluginwidget.run: fix symlink
Fixes #2420
2017-05-31 13:16:17 +02:00
Christian Prochaska
104baeeefc qt5_previewer.run: increase Qemu RAM
Fixes #2419
2017-05-31 13:16:17 +02:00
Martin Stein
87c7b0f777 noux_net_lighttpd.run: heavily outdated, remove
E.g., the script manually tried to configure lighttpd and used the old
porting directory structure that was integrated in the repos. For the
same reason it produced compile errors with noux packages.

Ref #2398
2017-05-31 13:16:17 +02:00
Martin Stein
228dbdd527 run + noux_gdb: fix source archiving
We do not have debug symbols in the bin/ binaries anymore. Thus, use the
debug/ binaries instead.  We now have kernel specific binary names for
ld.lib.so and some others. Adapt, to this fact as well.  For doing so
without unnecessary output, provide a new parameter "silent" at the
"kernel_specific_binary" procedure.

Ref #2398
2017-05-31 13:16:16 +02:00
Boris Mulder
d094ff995f part_blk: added optional partitions report 2017-05-31 13:16:16 +02:00
Norman Feske
6299f4a7df base-sel4: print boot-module names 2017-05-31 13:16:16 +02:00
Emery Hemingway
419da32ee3 lib/ldso: coalesce RPC calls for ROM dataspaces
A dataspace capability request to a ROM service may invalidate any
previously issued dataspace. Therefor no requests should be made while a
session dataspace is mapped. Reducing calls to the session also improves
performance where servicing a ROM request has a significant cost.

Fix #2418
2017-05-31 13:16:16 +02:00
Emery Hemingway
5f27c7b9eb initial Nim compiler and standard library support
https://nim-lang.org/

Fix #1879
2017-05-31 13:16:16 +02:00
Christian Helmuth
d0bc389e93 vfs_lxip: correctly initialize iov on remote-file read 2017-05-31 13:16:16 +02:00
Josef Söntgen
f66b828a97 curl: use select instead of poll
The way curl interacts with our poll() emulation on top of
select() leads to problems while establishing a connection.
2017-05-31 13:16:16 +02:00
Josef Söntgen
b361de8379 libc: return true on writefd checks in select on sockets
Instead of files we have to check this condition on sockets but
technically our sockets are regular files as well...
2017-05-31 13:16:15 +02:00
Josef Söntgen
dbec8d7710 libc: pretend to support SO_ERROR
There are programs, e.g. curl, that check if a connection was
established successfully by looking at SO_ERROR. Pretend that
the getsockopt() call was executed to keep them happy. If they
try to use a broken connection, the other socket functions will
bail.
2017-05-31 13:16:15 +02:00
Josef Söntgen
5b6735e1c9 lxip: fix iovec iter operations 2017-05-31 13:16:15 +02:00
Josef Söntgen
028aeafabe libc: only return requested events in poll()
Even if the underlying select() reports events, only report those
to the caller that were initially requested.
2017-05-31 13:16:15 +02:00
Norman Feske
22687bb10b Recipes for noux API, bash, posix 2017-05-31 13:16:15 +02:00
Norman Feske
c4002e6e23 noux: install tar archive as build result
This patch changes the noux build rules to produce a tar archive in
'bin/', alleviating the need for this step from the run scripts.
This way, the visible result of a built noux package is a single (tar)
file in '<build-dir>bin/', which is suited for the use as a ROM module.
2017-05-31 13:16:15 +02:00
Norman Feske
ae3664f4a0 noux: include noux.mk via select_from_repositories
This enables noux packages to be built via the depot tools.
2017-05-31 13:16:14 +02:00
Norman Feske
601e0a8950 noux: avoid using deprecated APIs 2017-05-31 13:16:14 +02:00
Norman Feske
53253ba422 base: add reinit functionality to 'Env'
The 'reinit' and 'reinit_main_thread' methods are needed to implement
fork in Noux. Until now, they were provided by the 'Deprecated_env'
only.
2017-05-31 13:16:14 +02:00
Norman Feske
ecf73e5b17 ports: ABI for libc_noux 2017-05-31 13:16:14 +02:00
Norman Feske
0167d5af50 Integrate core's RAM service into the PD service
Fixes #2407
2017-05-31 13:16:14 +02:00
Norman Feske
5a3a1c704b base: use 'Ram_allocator' as stack-area back end
The 'Stack_area_ram_session' is now a 'Stack_area_ram_allocator', which
simplifies the code and remove a dependency from the 'Ram_session'
interface, which we want to remove after all.

Issue #2407
2017-05-31 13:16:13 +02:00
Norman Feske
d31642e8be core: equip RPC-cap-factory slab with static block
This patch applies the approach of the "core: equip signal-context slab
with initial block" patch to the RPC-capability slab allocator.

Issue #2407
2017-05-31 13:16:13 +02:00
Norman Feske
963a6c37a0 core: equip signal-context slab with initial block
By supplying a statically allocated initial block to the slab allocator
for signal contexts, we become able to construct a 'Signal_broker' (the
back end for the PD's signalling API) without any dynamic memory
allocation. This is a precondition for using the PD as meta-data
allocator for its contained signal broker (meta data allocations must
not happen before the PD construction is complete).

Issue #2407
2017-05-31 13:16:13 +02:00
Norman Feske
a96919632e core: unify Pd_session_component across kernels
Issue #2407
2017-05-31 13:16:13 +02:00
Norman Feske
3fc2a798b2 init: heuristics for DMA buffer allocations
If a child is allowed to constrain physical memory allocations but left
the 'phys_start' and 'phys_size' session arguments blank, init applies
builtin constraints for allocating DMA buffers.

The only component that makes use of the physical-memory constraint
feature is the platform driver. Since the built-in heuristics are
applied to the platform driver's environment RAM session, all
allocations performed by the platform driver satisfy the DMA
constraints.

To justify building-in these heuristics into init as opposed to
supplying the values as configuration arguments, the values differ
between 32 and 64 bit. The configuration approach would raise the need
to differentiate init configurations for both cases, which are
completely identical otherwise.

Issue #2407
2017-05-31 13:16:13 +02:00
Alexander Boettcher
420b66a1f0 platform_drv: remove usage of ram_connection
This commit removes support for limitation of RAM allocations from the
platform_drv. A subsequent commit adds this feature to init.

Issue #2398
Issue #2407
2017-05-31 13:16:13 +02:00
Norman Feske
4773707495 core: split RAM dataspace factory from RAM service
By separating the session-interface concerns from the mechanics of the
dataspace creation, the code becomes simpler to follow, and the RAM
session can be more easily merged with the PD session in a subsequent
step.

Issue #2407
2017-05-31 13:16:12 +02:00
Norman Feske
65225a94b1 core: simplify initialization
This patch removes the 'Core_parent' and 'Core_pd_session', and reduces
the 'Core_env'.
2017-05-31 13:16:12 +02:00
Norman Feske
a1df4fee44 base: restructure signal-submit initialization
This patch allows core's 'Signal_transmitter' implementation to sidestep
the 'Env::Pd' interface and thereby adhere to a stricter layering within
core. The 'Signal_transmitter' now uses - on kernels that depend on it -
a dedicated (and fairly freestanding) RPC proxy mechanism for signal
deliver, instead of channeling signals through the 'Pd_session::submit'
RPC function.
2017-05-31 13:16:12 +02:00
Norman Feske
71efb59873 terminal: add Cell_array destructor
With the capability-quota mechanism, the terminal-session won't always
be constructed completely on the first try (we may run out of caps in
the middle of the construction). Therefore, all members of the object
must be properly destructable. Furthermore, the patch replaces the
sliced heap by a heap to avoid allocating a new dataspace for each line
of the cell array.
2017-05-31 13:16:12 +02:00
Christian Prochaska
a731131c09 arora: fix route in run script
Fixes #2416
2017-05-31 13:16:12 +02:00
Christian Prochaska
6a5da8684f qt5: fix 'qt5_jscore' compile error on ARM
Fixes #2414
2017-05-31 13:16:12 +02:00
Martin Stein
c70fed29f7 os/timer: interpolate time via timestamps
Previously, the Genode::Timer::curr_time always used the
Timer_session::elapsed_ms RPC as back end.  Now, Genode::Timer reads
this remote time only in a periodic fashion independently from the calls
to Genode::Timer::curr_time. If now one calls Genode::Timer::curr_time,
the function takes the last read remote time value and adapts it using
the timestamp difference since the remote-time read. The conversion
factor from timestamps to time is estimated on every remote-time read
using the last read remote-time value and the timestamp difference since
the last remote time read.

This commit also re-works the timeout test. The test now has two stages.
In the first stage, it tests fast polling of the
Genode::Timer::curr_time. This stage checks the error between locally
interpolated and timer-driver time as well as wether the locally
interpolated time is monotone and sufficiently homogeneous. In the
second stage several periodic and one-shot timeouts are scheduled at
once. This stage checks if the timeouts trigger sufficiently precise.

This commit adds the new Kernel::time syscall to base-hw. The syscall is
solely used by the Genode::Timer on base-hw as substitute for the
timestamp. This is because on ARM, the timestamp function uses the ARM
performance counter that stops counting when the WFI (wait for
interrupt) instruction is active. This instruction, however is used by
the base-hw idle contexts that get active when no user thread needs to
be scheduled.  Thus, the ARM performance counter is not a good choice for
time interpolation and we use the kernel internal time instead.

With this commit, the timeout library becomes a basic library. That means
that it is linked against the LDSO which then provides it to the program it
serves. Furthermore, you can't use the timeout library anymore without the
LDSO because through the kernel-dependent LDSO make-files we can achieve a
kernel-dependent timeout implementation.

This commit introduces a structured Duration type that shall successively
replace the use of Microseconds, Milliseconds, and integer types for duration
values.

Open issues:

* The timeout test fails on Raspberry PI because of precision errors in the
  first stage. However, this does not render the framework unusable in general
  on the RPI but merely is an issue when speaking of microseconds precision.

* If we run on ARM with another Kernel than HW the timestamp speed may
  continuously vary from almost 0 up to CPU speed. The Timer, however,
  only uses interpolation if the timestamp speed remained stable (12.5%
  tolerance) for at least 3 observation periods. Currently, one period is
  100ms, so its 300ms. As long as this is not the case,
  Timer_session::elapsed_ms is called instead.

  Anyway, it might happen that the CPU load was stable for some time so
  interpolation becomes active and now the timestamp speed drops. In the
  worst case, we would now have 100ms of slowed down time. The bad thing
  about it would be, that this also affects the timeout of the period.
  Thus, it might "freeze" the local time for more than 100ms.

  On the other hand, if the timestamp speed suddenly raises after some
  stable time, interpolated time can get too fast. This would shorten the
  period but nonetheless may result in drifting away into the far future.
  Now we would have the problem that we can't deliver the real time
  anymore until it has caught up because the output of Timer::curr_time
  shall be monotone. So, effectively local time might "freeze" again for
  more than 100ms.

  It would be a solution to not use the Trace::timestamp on ARM w/o HW but
  a function whose return value causes the Timer to never use
  interpolation because of its stability policy.

Fixes #2400
2017-05-31 13:16:11 +02:00
Alexander Boettcher
dc566b7d52 vbox5: allocate memory in larger pieces
to avoid lot of capabilities created for each 2M allocation otherwise

Issue #2398
2017-05-31 13:16:11 +02:00
Christian Helmuth
88b6c085ce libc: extend test for malloc
Issue #754
2017-05-31 13:16:11 +02:00
Christian Helmuth
bf96c4a4da libc: align malloc() allocations at 16-byte
Fixes #754
2017-05-31 13:16:11 +02:00
Alexander Boettcher
6d79d03380 heap: align allocations to 16 byte addresses
Issue #754
2017-05-31 13:16:11 +02:00
Christian Helmuth
307dd5768c Test for part_blk with GPT
Issue #1576
2017-05-31 13:16:11 +02:00
Christian Helmuth
03a1008f2e Use parted in part_blk test
Fixes #1576
2017-05-31 13:16:10 +02:00
Christian Helmuth
fd893a4f9b part_blk: support CHS and LBA extended partitions
Issue #1576
2017-05-31 13:16:10 +02:00
Norman Feske
7c8ed37bd7 fiasco: print addresses in error messages as hex 2017-05-31 13:16:10 +02:00
Norman Feske
2c6729768d base: consider exception during child construction
This patch make sure that a once managed parent RPC object will always be
dissolved if an exception during the remaining child construction
occurs. The original version would miss the dissolve call if one of the
subsequent members throws an exception at construction time.
2017-05-31 13:16:10 +02:00
Martin Stein
4d3d4ecca0 hw core: merge Kernel::Clock and Kernel::Timer
With this, we get rid of platform specific timer interfaces. The new
Timer class does the same as the old Clock class and has a generic
interface. The old Timer class was merely used by the old Clock class.
Also, we get rid of having only one timer instance which we tell with
each method call for which CPU it shall be done. Instead now each Cpu
object has its own Timer member that knows the CPU it works for.

Also, rename all "tics" to "ticks".

Fixes #2347
2017-05-31 13:16:10 +02:00
Stefan Kalkowski
b58b69515c Remove UART specific SPEC identifiers (Ref #2403) 2017-05-31 13:16:10 +02:00
Stefan Kalkowski
9b350e7706 os: move private declarations to driver target
Ref #2403
2017-05-31 13:16:09 +02:00
Emery Hemingway
eaeb77a867 drivers/nic/linux: replace Thread_deprecated
Ref #1987
2017-05-31 13:16:09 +02:00
Christian Helmuth
6d25c614d3 libc: remove deprecated API from malloc() 2017-05-31 13:16:09 +02:00
Christian Prochaska
90b5679332 mixer_gui_qt_test: fix window management routes 2017-05-31 13:16:09 +02:00
Christian Prochaska
e7c2c790de avplay: fix audio_drv route 2017-05-31 13:16:09 +02:00
Christian Prochaska
3f6e0738d1 Qt5: adapt to current staging branch (cap quota, ram quota, slave) 2017-05-31 13:16:09 +02:00
Stefan Kalkowski
10e2e223cd foc: remove obsolete features (ref #2405)
Removes the following Fiasco.OC specific features:
* GDB extensions for Fiasco.OC
* i.MX53 support for Fiasco.OC
* Kernel debugger terminal driver
* Obsolete interface Native_pd
* Obsolete function of interface Native_cpu
2017-05-31 13:16:08 +02:00
Stefan Kalkowski
9e3fc9414f foc: update to recent revision r72 (fix #2405) 2017-05-31 13:16:08 +02:00
Christian Helmuth
24a0810cbc trace: disable out-of-metadata test step 2017-05-31 13:16:08 +02:00
Alexander Boettcher
6d8bfb677e vbox5: support more memory for VMs (4GB++)
Issue #2338
2017-05-31 13:16:08 +02:00
Alexander Boettcher
b1419d7566 vbox4/5: add ubuntu vm as testcase 2017-05-31 13:16:08 +02:00
Martin Stein
60a7fe5586 hw & arm: write whole SPSR in mode transition
Previously we did write the SPSR via an MSR instruction without
additional flags. Unfortunately, this tells the CPU to write the
register only partially. This often isn't a problem as the users PSR
reset value normally is conform to our expectations but in some cases
(e.g. PSR endianess bit on WandBoard core #4) the reset value is bad.
Thus, we have to add the CXSF flags (access Control + eXtension + Status
+ Flags) so the CPU overwrites the entire register.

Fixes #2254
2017-05-31 13:16:08 +02:00
Christian Helmuth
274b7983c1 pistachio: fix compilation with GCC 6
Issue #2372
2017-05-31 13:16:07 +02:00
Norman Feske
433fc6a7f1 base: let 'Local_service' catch all exceptions
This patch eases the debugging of situations where a session-object
constructor wrongly throws an exception type not specified in the
'Local_service::Factory' interface.
2017-05-31 13:16:07 +02:00
Christian Prochaska
7df4497e72 wm: use 'Expanding_ram_session_client'
Use 'env().ram()' instead of a non-expanding 'Ram_session_client'
for 'env().ram_session_cap()'.

Fixes #2408
2017-05-31 13:16:07 +02:00
Norman Feske
4d442bca30 Streamline exception types
This patch reduces the number of exception types by facilitating
globally defined exceptions for common usage patterns shared by most
services. In particular, RPC functions that demand a session-resource
upgrade not longer reflect this condition via a session-specific
exception but via the 'Out_of_ram' or 'Out_of_caps' types.

Furthermore, the 'Parent::Service_denied', 'Parent::Unavailable',
'Root::Invalid_args', 'Root::Unavailable', 'Service::Invalid_args',
'Service::Unavailable', and 'Local_service::Factory::Denied' types have
been replaced by the single 'Service_denied' exception type defined in
'session/session.h'.

This consolidation eases the error handling (there are fewer exceptions
to handle), alleviates the need to convert exceptions along the
session-creation call chain, and avoids possible aliasing problems
(catching the wrong type with the same name but living in a different
scope).
2017-05-31 13:16:07 +02:00
Norman Feske
1f4f119b1e Capability quota accounting and trading
This patch mirrors the accounting and trading scheme that Genode employs
for physical memory to the accounting of capability allocations.

Capability quotas must now be explicitly assigned to subsystems by
specifying a 'caps=<amount>' attribute to init's start nodes.
Analogously to RAM quotas, cap quotas can be traded between clients and
servers as part of the session protocol. The capability budget of each
component is maintained by the component's corresponding PD session at
core.

At the current stage, the accounting is applied to RPC capabilities,
signal-context capabilities, and dataspace capabilities. Capabilities
that are dynamically allocated via core's CPU and TRACE service are not
yet covered. Also, the capabilities allocated by resource multiplexers
outside of core (like nitpicker) must be accounted by the respective
servers, which is not covered yet.

If a component runs out of capabilities, core's PD service prints a
warning to the log. To observe the consumption of capabilities per
component in detail, the PD service is equipped with a diagnostic
mode, which can be enabled via the 'diag' attribute in the target
node of init's routing rules. E.g., the following route enables the
diagnostic mode for the PD session of the "timer" component:

  <default-route>
    <service name="PD" unscoped_label="timer">
      <parent diag="yes"/>
    </service>
    ...
  </default-route>

For subsystems based on a sub-init instance, init can be configured
to report the capability-quota information of its subsystems by
adding the attribute 'child_caps="yes"' to init's '<report>'
config node. Init's own capability quota can be reported by adding
the attribute 'init_caps="yes"'.

Fixes #2398
2017-05-31 13:16:06 +02:00
Norman Feske
773e08976d Assign cap quotas in run scripts and recipes
Issue #2398
2017-05-31 13:16:06 +02:00
Norman Feske
e44f65f3b2 core: RAM service based on 'Session_object'
This patch reworks the implementation of core's RAM service to make use
of the 'Session_object' and to remove the distinction between the
"metadata" quota and the managed RAM quota. With the new implementation,
the session implicitly allocates its metadata from its own account. So
there is not need to handle 'Out_of_metadata' and 'Quota_exceeded' via
different exceptions. Instead, the new version solely uses the
'Out_of_ram' exception.

Furthermore, the 'Allocator::Out_of_memory' exception has become an alias
for 'Out_of_ram', which simplifies the error handling.

Issue #2398
2017-05-31 13:16:06 +02:00
Norman Feske
028e633af4 base: add 'Session_object' class
The 'Session_object' unifies several aspects of server-component
implementations:

* It keeps track of session quotas and is equipped with standardized
  interfaces (Quota_guard) to upgrade (and in the future potentially
  downgrade) session quotas in a uniform way.

* It follows the pattern of modern RPC objects / signal handlers that
  manage/dissolve themselves at the entrypoint given as constructor
  argument. Thereby, the relationship with its entrypoint is always
  coupled with the lifetime of the session-component object.

* It stores the session label, which was previously done manually by
  most but not all server-component implementations.

* It stores the session 'diag' flag.

* It is equipped with output methods 'diag', 'error', and 'warning'.
  All messages printed from the context of a session component is
  automatically prefixed with the session type and client label.
  Messages passed via 'diag' are only printed if the 'diag' flag of
  the session is set.

Issue #2398
2017-05-31 13:16:06 +02:00
Norman Feske
aea5d03691 base: add Child_policy::Route::Diag flag
The 'diag' flag can be defined by a target node of a route in init's
configuration. It is propagated as session argument to the server, which
may evaluate the flag to enable diagnostic output for the corresponding
session.

Issue #2398
2017-05-31 13:16:06 +02:00
Norman Feske
3670f7735d base: use 'Quota_transfer::Account' for 'Service'
This patch makes use of the new 'Quota_transfer::Account' by the service
types in base/service.h and uses 'Quota_transfer' objects in
base/child.cc and init/server.cc.

Furthermore, it decouples the notion of an 'Async_service' from
'Child_service'. Init's 'Routed_service' is no longer a 'Child_service'
but is based on the new 'Async_service' instead.

With this patch in place, quota transfers do no longer implicitly use
'Ram_session_client' objects. So transfers can in principle originate
from component-local 'Ram_session_component' objects, e.g., as used by
noux. Therefore, this patch removes a strumbling block for turning noux
into a single threaded component in the future.

Issue #2398
2017-05-31 13:16:06 +02:00
Norman Feske
5c43074bc6 core: simplify core_env.h
Issue #2398
2017-05-31 13:16:05 +02:00
Norman Feske
f69937deb1 base: new base/quota_transfer.h helper
The 'Quota_transfer' helper facilitated the implementation of quota
transfers between components in a transactional manner. It is designated
for framework-internal use (replacing the 'Transfer' class in child.h).
However, since it is also useful for init, we make it publicly
available.

The 'Quota_transfer::Account' class serves as an interface representing
the donor or receiver of quotas (parent, service, client).

Issue #2398
2017-05-31 13:16:05 +02:00
Norman Feske
f02c8328db init: access Ram_session as const
This is now possible because the new 'used_ram' and 'ram_quota' RPC
functions are declared as const.

Issue #2398
2017-05-31 13:16:05 +02:00
Norman Feske
6609aafb05 Replace Quota_exceeded by Insufficient_ram_quota
This patch replaces the 'Parent::Quota_exceeded',
'Service::Quota_exceeded', and 'Root::Quota_exceeded' exceptions
by the single 'Insufficient_ram_quota' exception type.

Furthermore, the 'Parent' interface distinguished now between
'Out_of_ram' (the child's RAM is exhausted) from
'Insufficient_ram_quota' (the child's RAM donation does not suffice to
establish the session).

This eliminates ambiguities and removes the need to convert exception
types along the path of the session creation.

Issue #2398
2017-05-31 13:16:05 +02:00
Norman Feske
eea493a8ca base: safeguard entrypoint against double manage
This patch adds sanity checks to the RPC entrypoint that detect attempts
to manage or dissolve the same RPC object twice. This is not always a
bug. I.e., if RPC objects are implemented in the modern way where the
object manages/dissolves itself. As the generic framework code (in
particular root/component.h) cannot rely on this pattern, it has to
call manage/dissolve for session objects anyway. For modern session
objects, this double attempt would result in a serious error (double
insertion into the object pool's AVL tree).

Issue #2398
2017-05-31 13:16:05 +02:00
Norman Feske
843dd179d7 base: remove int return types from 'Ram_session'
This patch replaces the existing C-style error codes with C++
exceptions.

Fixes #895
2017-05-31 13:16:04 +02:00
Norman Feske
58f44d39c5 base: use 'Ram_quota' in 'Ram_session' args
This patch replaces the former use of size_t with the use of the
'Ram_quota' type to improve type safety (in particular to avoid
accidentally mixing up RAM quotas with cap quotas).

Issue #2398
2017-05-31 13:16:04 +02:00
Norman Feske
ff68d77c7d base: new 'Ram_allocator' interface
The 'Ram_allocator' interface contains the subset of the RAM session
interface that is needed to satisfy the needs of the 'Heap' and
'Sliced_heap'. Its small size makes it ideal for intercepting memory
allocations as done by the new 'Constrained_ram_allocator' wrapper
class, which is meant to replace the existing 'base/allocator_guard.h'
and 'os/ram_session_guard.h'.

Issue #2398
2017-05-31 13:16:04 +02:00
Norman Feske
5a468919bb base: new session-creation helper types
This patch augments the existing session/session.h with useful types for
the session creation:

* The new 'Insufficient_ram_quota' and 'Insufficient_cap_quota'
  exceptions are meant to supersede the old 'Quota_exceeded' exception
  of the 'Parent' and 'Root' interfaces.

* The 'Session::Resources' struct subsumes the information about the
  session quota provided by the client.

* The boolean 'Session::Diag' type will allow sessions to operate in a
  diagnostic mode.

* The existing 'Session_label' is not also available under the alias
  'Session::Label'.

* A few helper functions ease the extraction of typed session arguments
  from the session-argument string.

Issue #2398
2017-05-31 13:16:04 +02:00
Norman Feske
220890534a base: 'Quota_guard' utility for tracking quotas
* Introduces 'Cap_quota' and 'Ram_quota' types
* Introduces 'Out_of_caps' and 'Out_of_ram' exceptions

Issue #2398
2017-05-31 13:16:04 +02:00
Norman Feske
c1b981ede4 Annotate session interfaces with CAP_QUOTA
The new 'CAP_QUOTA' enum value denotes the capability quota to be
transferred from the client to the server at session-creation time.

Issue #2398
2017-05-31 13:16:04 +02:00
Norman Feske
bc82cce72b core: add Platform::max_caps()
This method returns the kernel-specific system-global limit of the total
number of capabilities.

Issue #2398
2017-05-31 13:16:03 +02:00
Norman Feske
82a98065a0 base-hw: upgrade cap-space slab less eagerly
This patch upgrades the cap-space slab only if the kernel runs out of
entries, instead of consuming as much PD-session quota as possible.
Until now, the behavior worked well because the cap-space slab was the
only consumer of PD-session quota. However, once we start accounting all
PD session meta data - and eventually merging the PD and RAM services -
the aggressive scheme stands in the way.

Issue #2398
2017-05-31 13:16:03 +02:00
Norman Feske
5b1e3466be base: construct 'Tslab' with allocator reference
The new constructor avoids the use of a pointer.
2017-05-31 13:16:03 +02:00
Norman Feske
f5bdab4518 base: add Slab::avail_entries accessor
This accessor is useful to eagerly expand the slab with new slab blocks,
side stepping the slab's built-in policy for the allocation of new slab
blocks.

This is particularly important when using the slab for allocating the
cap space meta-data for the base-hw kernel. To guarantee that the slab
gets never exhausted in the kernel, it is expanded before entering the
kernel.
2017-05-31 13:16:03 +02:00
Norman Feske
67481fdfc3 base: support exceptions during _new_slab_block
With the introduction of the 'Out_of_caps' exception type, the slab
needs to consider exceptions during the call of '_new_slab_block' by
reverting the 'nested' state.
2017-05-31 13:16:03 +02:00
Christian Helmuth
c79155fd7b libc_ffat: zero-init 'struct tm' on stack
This prevents the following runtime error.

  Error: mktime() returned -1, the file modification time reported by stat() will be incorrect
2017-05-31 13:16:03 +02:00
Christian Helmuth
e9b42a127b dde_linux: download libnl from github.com/thom311
The old download location is very shaky resp. currently unavailable and
also other projects (e.g., Gentoo and Linux From Scratch) use this
location. Note, the archive hash does _not_ change.
2017-05-31 13:16:02 +02:00
Alexander Boettcher
106a0db664 vbox5: update to 5.1.22
Issue #2338
2017-05-31 13:16:02 +02:00
Emery Hemingway
f7d80a9bf9 drivers/ahci: clean exit when no controllers are found
Fix #2402
2017-05-31 13:16:02 +02:00
Johannes Kliemann
aac0ac7c63 dde_linux: kernel-version independent file lists
Replace the version dependent file lists with generic ones to simplify
kernel version changes.

Fixes #2368
2017-05-31 13:16:02 +02:00
Norman Feske
03d7208386 Turn posix lib into shared library
By building the posix library as shared object with an ABI, we
effectively decouple posix-using programs from the library
implementation (which happens to depend on several os-level APIs such as
the VFS).
2017-05-31 13:16:02 +02:00
Christian Helmuth
1828f70037 Fix deprecated warnings in servers
Issue #1987
2017-05-31 13:16:02 +02:00
Christian Helmuth
f41d8d6b14 core: fix compiler warnings 2017-05-31 13:16:01 +02:00
Emery Hemingway
01e8f7ea3d libc: do not open stdio descriptors unless configured to do so
Fix #2396
2017-05-31 13:16:01 +02:00
Emery Hemingway
24a9537a27 File_system: replace per-handle signals with notification packets
Replace registration and signaling of per-handle signal capabilities
with CONTENT_CHANGED notification packets.

Fix #2397
2017-05-31 13:16:01 +02:00
Emery Hemingway
29b3fff5eb app/rom_to_file: catch Node_already_exists and overwrite files
Ref #1934
2017-05-31 13:16:01 +02:00
Stefan Kalkowski
6106e64aac base: remove include/spec/* other than ISA
This commit moves the headers residing in `repos/base/include/spec/*/drivers`
to `repos/base/include/drivers/defs` or repos/base/include/drivers/uart`
respectively. The first one contains definitions about board-specific MMIO
iand RAM addresses, or IRQ lines. While the latter contains device driver
code for UART devices. Those definitions are used by driver implementations
in `repos/base-hw`, `repos/os`, and `repos/dde-linux`, which now need to
include them more explicitely.

This work is a step in the direction of reducing 'SPEC' identifiers overall.

Ref #2403
2017-05-31 13:16:01 +02:00
Alexander Boettcher
80eddd8731 usb: add OHCI support
Fixes #2357
2017-05-31 13:16:00 +02:00
Alexander Boettcher
74b790f70b vbox5: add multiple VM test case 2017-05-31 13:16:00 +02:00
Alexander Boettcher
b403bd9d3e vbox5: fix memory allocation by VMM
This is a fixup of c782966 "vbox5: track memory allocation by VMM".

Issue #2338
2017-05-31 13:16:00 +02:00
Alexander Boettcher
0cf18081f9 virtualbox.run: extension to run multiple VMs
set use_gui to get 2 VMs

Issue #2338
2017-05-31 13:16:00 +02:00
Alexander Boettcher
33ab53e42a vbox5: update to 5.1.20
Issue #2338
2017-05-31 13:16:00 +02:00
Alexander Boettcher
1a18c6b727 vbox4/5: enable key/value store for guest addition
required for enable vbox 5 guest additions, which otherwise deny to work

Issue #2338
2017-05-31 13:16:00 +02:00
Alexander Boettcher
b1d35570df vbox5: add shared folder test
Issue #2338
2017-05-31 13:15:59 +02:00
Alexander Boettcher
0d4f4f70d2 vbox5: enable audio support
Issue #2338
2017-05-31 13:15:59 +02:00
Alexander Boettcher
d7f0cb5463 vbox5: use gip thread also for timer watchdog
causes the rem timer callback pending check to run more often (every 1 ms
instead 10 ms). This is essential to met the timeout requirements of the
audio backend, which must be checked&run every 5ms.
2017-05-31 13:15:59 +02:00
Alexander Boettcher
800f9d1e44 vbox5: enable xhci model
Issue #2338
2017-05-31 13:15:59 +02:00
Alexander Boettcher
ecc98c293e qemu-usb: avoid operating on stale memory
during for loop in garbage_collect

Issue #2362
2017-05-31 13:15:59 +02:00
Alexander Boettcher
760c04c53a qemu-usb: respect size of assignment
fixes vbox4 and vbox5 xhci support

Issue #2362
2017-05-31 13:15:59 +02:00
Christian Helmuth
e3d8b6098f netty: do UDP and TCP tests
This commit replaces echo_udp with the netty_udp test. TCP can be tested
via netty_tcp.
2017-05-31 13:15:58 +02:00
Christian Helmuth
4ab2b85437 lxip: support large sendmsg (like recvmsg)
Add missing socket wait-queue head on demand.
2017-05-31 13:15:58 +02:00
Christian Helmuth
9802ae83e0 libc: rework socket fs for O_NONBLOCK 2017-05-31 13:15:58 +02:00
Christian Helmuth
3b5c16e307 lxip: poll/read_ready for all socket fs files 2017-05-31 13:15:58 +02:00
Christian Helmuth
1d99e7ede9 base: classify signals as I/O and application level
Fixes #2363
2017-05-31 13:15:58 +02:00
Christian Helmuth
e33d65aea0 libc: test nested signal handling and RPC
Issue #2363
2017-05-31 13:15:58 +02:00
Christian Helmuth
a65a4c8621 netty: non-blocking server test 2017-05-31 13:15:57 +02:00
Christian Helmuth
b3819f30dc libc: support for O_NONBLOCK in read() 2017-05-31 13:15:57 +02:00
Christian Helmuth
f7313e841d vfs_lxip: always allow broadcast packets for UDP 2017-05-31 13:15:57 +02:00
Alexander Boettcher
3f5c1b3626 top: fix replacement strategy
Issue #2307
2017-05-31 13:15:57 +02:00
Christian Prochaska
623e0be0e1 fiasco: fix compilation with GCC 6
Issue #2372
2017-05-31 13:15:57 +02:00
Norman Feske
9a6c194432 init: fix constness-related warnings by gcc 6.3
Fixes #2374
2017-05-31 13:15:57 +02:00
Norman Feske
4f19e4b6af gems: import run-script ingredients from depot
This patch adjusts the interactive scenarios of the gems repository to
use the depot. This has three immediate benefits. First, once the depot
is populated with binary archives, the start time of the scenarios
becomes very quick because most dependency checks and build steps are
side-stepped. Second, the run scripts become more versatile. In
particular, run scripts that were formerly supported on base-linux only
(nit_fader, decorator, menu_view) have become usable on all base
platforms that have a 'drivers_interactive' package defined. Finally,
the run scripts have become much shorter.

Issue #2339
2017-05-31 13:15:57 +02:00
Norman Feske
b58fbe5ba5 Depot-archive recipes
Issue #2339
2017-05-31 13:15:56 +02:00
Norman Feske
1ed5110d55 wm.run: host window-manager components in sub init 2017-05-31 13:15:56 +02:00
Norman Feske
962c853e67 hw: rename bootstrap.o to bootstrap-hw.o
In order to deliver base-hw as a binary archive, we need to install the
bootstap.o file to bin/. Since bin/ is a global name space shared by all
kernels, this patch renames the object file to bootstap-hw.o and thereby
clarifies the association of the file with base-hw.
2017-05-31 13:15:56 +02:00
Christian Helmuth
f59a5ef258 foc, fiasco: ensure build fails if port build fails 2017-05-31 13:15:55 +02:00
Norman Feske
cd5a03758f base: fix bool retval check in heap
Thanks to gcc 6.3 for reporting!
2017-05-31 13:15:55 +02:00