Commit Graph

5053 Commits

Author SHA1 Message Date
Christian Helmuth
abdd1d7715 Adapt network run scripts for recent Qemu (3.1)
-netdev and -device should work with Qemu versions >= 2.5 at least but
3.0 dropped support for legacy -net completely.
2019-02-19 11:12:10 +01:00
Norman Feske
00fa48a886 os: new Block::Request_stream API
Issue #3092
2019-02-19 11:12:10 +01:00
Josef Söntgen
f9523c32d5 os: accessor for addr and size of packet stream 2019-02-19 11:08:18 +01:00
Norman Feske
3858e1df51 os: support for deferred packet-stream signals
This patch enhances the packet-stream API with the principle ability to
side-step the built-in implicity data-flow signals and manage the
signals manually. This allows for a more efficient batching of packet
processing.

Issue #3092
2019-02-19 11:08:18 +01:00
Norman Feske
69d6145f5a os: don't hide tx_cap from block-session interface
The 'tx_cap' RPC function is only used at session-creation time. For
this reason, it was not listed in the "official" RPC interface in
'block_session.h'. However, this makes the interface more obscure than
it needs to be. So this patch promotes it to a regular RPC function.

Issue #3092
2019-02-19 11:08:18 +01:00
Norman Feske
aa66b5d62f base: remove dependency from deprecated APIs
This patch adjusts the implementation of the base library and core such
that the code no longer relies on deprecated APIs except for very few
cases, mainly to keep those deprecated APIs in tact for now.

The most prominent changes are:

- Removing the use of base/printf.h

- Removing of the log backend for printf. The 'Console' with the
  format-string parser is still there along with 'snprintf.h' because
  the latter is still used at a few places, most prominently the
  'Connection' classes.

- Removing the notion of a RAM session, which does not exist in
  Genode anymore. Still the types were preserved (by typedefs to
  PD session) to keep up compatibility. But this transition should
  come to an end now.

- Slight rennovation of core's tracing service, e.g., the use of an
  Attached_dataspace as the Argument_buffer.

- Reducing the reliance on global accessors like deprecated_env() or
  core_env(). Still there is a longish way to go to eliminate all such
  calls. A useful pattern (or at least a stop-gap solution) is to
  pass the 'Env' to the individual compilation units via init functions.

- Avoiding the use of the old 'Child_policy::resolve_session_request'
  interface that returned a 'Service' instead of a 'Route'.

Issue #1987
2019-02-19 11:08:17 +01:00
Norman Feske
c629a92aa2 base: init_env_ram_session -> init_env_pd_session
The notion of a RAM session does not exist anymore. Hence, we have to
adjust the name of 'init_env_ram_session'. Since this change modifies
the ABI, it comes as separate commit.

Issue #2407
2019-02-19 11:08:17 +01:00
22327b43ae Refactor terminal for intrinsic Unicode support
Refactor the graphical terminal server to internally represent
characters as 16-bit codepoints and handle the duplex terminal stream as
UTF-8.

- Make the Codepoint class printable to the Output interface
- Decode data received at the Terminal session from UTF-8 to a 16-bit
  character
- Pass 16-bit characters through terminal decoder and char-cell arrays
- Send Unicode through terminal session in a burst of UTF-8 bytes

Fix #3148
2019-02-19 11:08:17 +01:00
Alexander Boettcher
0c24e1efdc vm_session: extensions
- support to create multiple vCPUs
- support to implement Vm_session methods client side within base library
- adjust muen specific virtualbox4 version to compile/link

Issue #3111
2019-02-19 11:08:17 +01:00
c5786b212b Update Seoul contrib code for new Fifo accessors
Ref #3135
2019-02-19 11:08:17 +01:00
38ab456c78 Remove pointers from Genode::Fifo interface
Replace methods of Genode::Fifo returning pointers with methods which
call lambdas with references.

Ref #3135
2019-02-19 11:08:17 +01:00
Stefan Kalkowski
161f39f7af imx6q_sabrelite: enable sd_card_drv 2019-02-19 11:08:17 +01:00
Stefan Kalkowski
da502dd036 muen: disable SMP test on Muen 2019-02-19 11:08:17 +01:00
Alexander Boettcher
6bb145bdd8 Remove virtualbox 4 vmm
Fixes #3141
2019-02-19 11:08:17 +01:00
Christian Prochaska
87d526968c usb_hid: test both USB host drivers
Fixes #3152
2019-02-19 11:08:17 +01:00
Alexander Senier
5ccae43552 Rename Ada runtime to SPARK runtime
The minimal-footprint Ada runtime for implementing library-like
functionality in SPARK is now called "spark" runtime.

The full Ada runtime for entire components written in Ada and using the
libc as glue to the underlying system will move to the world repository
as "ada" runtime.

Issue #3144
2019-02-19 11:08:17 +01:00
Alexander Senier
3b41e02ea5 Create make dependencies using ali2dep 2019-02-19 10:50:51 +01:00
Alexander Senier
80a607ee0c Abandon gnatmake and generate elaboration code 2019-02-19 10:50:51 +01:00
253d6b0b92 Runtime package of clipboard service
Fix #3150
2019-02-19 10:50:51 +01:00
Christian Helmuth
271e2398f9 depot: update recipe hashes 2019-02-12 14:24:12 +01:00
Christian Prochaska
106cd86375 smartcard.run: increase cap quota of test component
Fixes #3151
2019-02-12 10:33:32 +01:00
Norman Feske
5d66bfbd19 netperf.run: increase caps of netserver_genode
This is needed for seL4/x86_64.
2019-02-12 10:33:32 +01:00
Christian Helmuth
193c1aa533 wifi: refactor config generation in run script
Now sophisticated test scripts can be easily generated like documented.
2019-02-12 10:33:32 +01:00
Christian Helmuth
2b1732bdec Adapt usb_drv RAM quota to 12M
All autopilot scripts use 12 or more MiB for the usb_drv and my personal
tests never succeeded with less on x86 test machines.
2019-02-12 10:33:32 +01:00
Christian Helmuth
dbac453a39 smartcard: declare vendor/product IDs at one place
Also added a report_rom for USB devices and let the driver report like
in a real scenario. Can also be used for debugging by setting
verbose="yes" in report_rom.
2019-02-12 10:33:31 +01:00
Josef Söntgen
3ada4f4733 noux: increase argv buffer to 16KiB
And most importantly: use the same size everywhere.

Note, this commit also configures the stack size of noux-process threads
to 64 KiB independently of the CPU architecture. The reason is the
increased stack usage because of the additional argument space in
Execve_child_env in syscall(SYSCALL_EXECVE), which crafts a child
environment on stack for the creation of the new child.

Fixes #3145.
2019-02-12 10:33:16 +01:00
Christian Helmuth
afc95e36e1 netperf: 'times_up' mechanism based on pthread 2019-02-12 10:33:16 +01:00
Norman Feske
9e9614af13 test-init: increase timeout
The original timeout is one second too short to let the test pass on
NOVA/32bit. This patch increases the timeout by 10 seconds.
2019-02-12 10:33:16 +01:00
Christian Prochaska
ddacb1400c Do not disable USB BIOS handoff in tests
Fixes #3140
2019-02-12 10:33:15 +01:00
Norman Feske
2e1e7b8270 recipes/src/base-hw-muen: add static ACPI ROM
As we don't execute the acpi_drv on Muen, we have to supply a static
'acpi' info as boot module. This is normally done by the
base/run/platform.inc include. However, when using base-hw-muen kernel
from a depot archive - as done by modern run scripts like
depot_download.run - the platform.inc magic is not applied.

This patch enhances the src archive of base-hw-muen with a mechanism
that creates a pre-defined acpi info at the bin directory via an
artificial src/acpi/target.mk file. This way, the static acpi ROM ends
up as boot module when importing the base-hw-muen archive into a
run script.
2019-02-12 10:33:15 +01:00
Christian Helmuth
03da438fa4 foc: fix parallel build of kernel libuart
This incorporates a patch from upstream.
2019-02-12 10:33:15 +01:00
Josef Söntgen
ac59b68257 wifi_drv: split front end notification
Issue #3139.
2019-02-12 10:33:15 +01:00
Josef Söntgen
8f47609024 wifi_drv: fix explicit SCAN request handling
* Increase the CMD length to accomodate the limit of the wpa_supplicant
* Fix case where multiple SSIDs with 32 bytes are used
* Use Expanding_reporter for accesspoints report

Fixes #3139.
2019-02-12 10:33:15 +01:00
Josef Söntgen
1c0541e7cb run: add power cycle procedure
The 'run_genode_until' procedure only called 'run_power_on' to reset
the target machine. That works will with the softreset module, which
is used by all x86-based test system but falls short regarding ARM
boards. The way those boards are connected requires turning the power
off and on for a complete cycle.
2019-02-12 10:33:15 +01:00
Christian Prochaska
369d60bc21 dde_linux: iterate over PCI devices in ascending BDF order
On a Lenovo ThinkCentre M57p, the system locks up when the UHCI controller
BIOS handoff (disabling bit 4 in the LEGSUP register) for the controller
with PCI BDF 00:1d:2 is attempted before the handoff for the controller
with BDF 00:1a:0.

Fixes #3138
2019-02-12 10:33:15 +01:00
Christian Prochaska
e9e048c4ea dde_linux: fix timer callback compatibility with older drivers
Fixes #3137
2019-02-12 10:33:15 +01:00
Christian Helmuth
845253af3a dde_linux: prevent truncation in update_jiffies()
Before, jiffies wrapped after 2**32 microseconds (71.5 minutes) to 0.
2019-02-12 10:33:15 +01:00
Christian Helmuth
bcef3aeb1e dde_linux: fix calculation of ktime from jiffies 2019-02-12 10:33:15 +01:00
47c6377ac0 Remove libc_lxip
The libc_lxip library is superceded by vfs_lwip.

Fix #2960
Fix #2535
2019-02-12 10:33:14 +01:00
Christian Prochaska
db9ff821a2 libc: sync 'listen' socket fs control file
Fixes #3124
2019-02-12 10:33:14 +01:00
968e220fd2 Update jbig2dec to version 0.15
Ref #3131
2019-02-12 10:33:14 +01:00
13268ec401 Update libpng to version 1.6.36
Fix #3131
2019-02-12 10:33:14 +01:00
Alexander Boettcher
2c969f1167 nova: skip smp revoke test in Qemu 2019-02-12 10:33:14 +01:00
Norman Feske
bcb24e316c base: fix warnings reported by LLVM analyzer
The warnings were false positives though.
2019-02-12 10:33:14 +01:00
Norman Feske
6b289a1423 base/core: use references instead of pointers
This patch replaces the former prominent use of pointers by references
wherever feasible. This has the following benefits:

* The contract between caller and callee becomes more obvious. When
  passing a reference, the contract says that the argument cannot be
  a null pointer. The caller is responsible to ensure that. Therefore,
  the use of reference eliminates the need to add defensive null-pointer
  checks at the callee site, which sometimes merely exist to be on the
  safe side. The bottom line is that the code becomes easier to follow.

* Reference members must be initialized via an object initializer,
  which promotes a programming style that avoids intermediate object-
  construction states. Within core, there are still a few pointers
  as member variables left though. E.g., caused by the late association
  of 'Platform_thread' objects with their 'Platform_pd' objects.

* If no pointers are present as member variables, we don't need to
  manually provide declarations of a private copy constructor and
  an assignment operator to avoid -Weffc++ errors "class ... has
  pointer data members [-Werror=effc++]".

This patch also changes a few system bindings on NOVA and Fiasco.OC,
e.g., the return value of the global 'cap_map' accessor has become a
reference. Hence, the patch touches a few places outside of core.

Fixes #3135
2019-02-12 10:33:13 +01:00
Norman Feske
f9373b4430 base: new Allocator_avl::construct_metadata method
The new method allows for the construction of a meta-data object inside
the reserved space of the allocator's meta data. It thereby alleviates
the need to copy the meta data object (via the assignment operator) as
done by the traditional 'metadata' setter method. This, in turn, allows
one to use non-copyable objects (like objects with constant member
variables) as meta data.
2019-02-12 10:33:12 +01:00
Norman Feske
437e6c5653 core: make ASSERT_NEVER_CALLED a single statement
This way, the macro can be used as a body of an if statement with no
curly braces.
2019-02-12 10:33:12 +01:00
Norman Feske
3a169d3a78 depot: update recipe hashes 2019-01-30 13:55:20 +01:00
Norman Feske
237d2bff3a base: fix deadlock during signal-context dissolve
This patch moves the removal of the signal context from the
'_platform_finish_dissolve' to the '_platform_begin_dissolve'
method. This is needed because the removal involves taking
the signal-registry lock. The latter must adhere the same
locking order as the code path used for signal delivery.

Fixes #3109
2019-01-30 13:55:19 +01:00
Norman Feske
158650ff01 base-nova: remove signal-delivery failure warning
Fixes #3136
2019-01-30 13:55:19 +01:00
Norman Feske
9859df8c6c test-fs_report: increase timeout (foc/x86_64/qemu) 2019-01-30 13:55:19 +01:00
Christian Prochaska
210fbcc4c2 gdb_monitor: fix possible page fault on thread removal
Fixes #3133
2019-01-30 13:54:54 +01:00
4f88b664e2 Improve VFS server session quota management
Move the allocation of the session packet buffer into a subclass that is
constructed before the File_system RPC object. This allows the buffer
allocation to be wrapped in a constructor/destructor class and clearly
accounted for.

Fix #3134
2019-01-30 13:54:54 +01:00
Christian Helmuth
37b2aaa051 Equalize RAM quantum in acpi_drv configs
While the managed drivers already used 4M, interactive and nic failed on
hardware with larger ACPI tables.
2019-01-30 13:54:54 +01:00
Christian Helmuth
87c9186efd ports: enable basic clock support in tclsh 2019-01-30 13:54:53 +01:00
Christian Helmuth
f7f1509a27 Re-enable network tests on all platforms 2019-01-30 13:54:53 +01:00
Norman Feske
27bb44d39c launcher.run: adaptation to new window layouter 2019-01-30 13:54:53 +01:00
Norman Feske
431c80bbca Add missing 'root' attribute to vfs policies
The commit "os: avoid using deprecated APIs" tightens the policy
configuration of the VFS server such that the 'root' attribute is no
longer optional.
2019-01-30 13:54:53 +01:00
Martin Stein
f3dfe88477 build system: show full paths on ADA errors
Add '-gnatef' to the default 'CUSTOM_ADA_OPT' in generic.mk to ensure that, on
compile errors, the full source path is shown.
2019-01-30 13:49:55 +01:00
Christian Prochaska
342ddcf71a libsanitizer: replace use of 'Genode::printf()'
Fixes #3129
2019-01-30 13:49:55 +01:00
Christian Prochaska
4b805ccde9 base: move 'Buffered_output' class into public header
Fixes #3128
2019-01-30 13:49:55 +01:00
Norman Feske
d3759811b6 os/session_policy: warn if no policy exists
The situation where a 'Session_policy' is constructed for a label with
no matching policy is in almost all cases a configuration problem.
A diagnostic message eases pin-pointing such mistaks. By adding the
message to the 'Session_policy', servers don't need to manually handle
the exception to provide diagnostic information. This simplifies the
server code in many components.
2019-01-30 13:49:55 +01:00
f529871162 Add [depot_user] to run tool builtins
Now that the depot_user procedure has found use in the depot_autopilot
it has become a convention.

Fix #3127
2019-01-30 13:49:55 +01:00
Norman Feske
6154d9067e libports: avoid using deprecated APIs
Issue #1987
Issue #3125
2019-01-30 13:49:55 +01:00
Norman Feske
ba2b0b8360 gems: remove the use of deprecated APIs
This patch also updates os/slave.h because the app/launcher cannot be
reasonably updated without it.

Issue #1987
Issue #3125
2019-01-30 13:49:54 +01:00
Norman Feske
f23579532e dde_*: remove the use of deprecated APIs
Issue #1987
Issue #3125
2019-01-30 13:49:54 +01:00
Norman Feske
954aff7002 demo: avoid using deprecated APIs
Issue #1987
Issue #3125
2019-01-30 13:49:54 +01:00
Norman Feske
6b94e65a95 os: avoid using deprecated APIs
Issue #1987
Issue #3125
2019-01-30 13:49:54 +01:00
Norman Feske
cb36d96569 netperf: remove mechanism to update 'times_up'
The mechanism relied on deprecated Genode APIs. To revive the mechanism,
we could use pthread_create.
2019-01-30 13:49:54 +01:00
Norman Feske
486e534df0 gdb_monitor: remove use of deprecated APIs
Issue #1987
2019-01-30 13:49:54 +01:00
Norman Feske
5f1f67153b Xml_node: safe alternatives to unsafe accessors
Issue #3125
2019-01-30 13:49:54 +01:00
Norman Feske
8cc11d6cc6 libc_terminal: remove use of deprecated APIs
Issue #1987
2019-01-30 13:49:54 +01:00
Norman Feske
fdbf30fc4c Xml_node: replace value(T *out) by value(T &out)
Promote the use of references instead of pointers.

Issue #1987
2019-01-30 13:49:54 +01:00
Norman Feske
98a75b1a78 noux: remove use of deprecated APIs
Issue #1987
2019-01-30 13:49:54 +01:00
Norman Feske
d7e552a169 libusb: remove use of deprecated APIs
Issue #1987
2019-01-30 13:49:53 +01:00
Norman Feske
3da6aab353 noux: enable strict warnings 2019-01-30 13:35:29 +01:00
Norman Feske
e889c58bbc noux: remove dependency from alarm library
Fixes #3123
2019-01-30 13:35:29 +01:00
Martin Stein
ffd4e231d7 run/depot_autopilot: less interactive mode
In less interactive mode, the run script doesn't give up on missing test
archives but instead removes the corresponding tests and marks them "missing".
This mode avoids total failure of a platform in automated test infrastructures
when only a few archives are missing.

Fixes #3120
2019-01-30 13:35:29 +01:00
Norman Feske
af146e7dcd Remove base/timed_semaphore.h from API
The former 'Genode::Timed_semaphore' mechanism is moved to the private
part of the two remaining users, namely dde_rump and the libc. Note
there are now two private copies of 'timed_semaphore.h'. This should be
regarded as an interim step until the use of this mechanism is removed
from both users.

This patch also cleans up the mechanism from legacy Genode API calls and
global side effects (alarm-thread singleton). The test/timed_semaphore
is now located at the libports repository as it now tests a mechanism of
the libc. The former timed_semaphore library is no more.

Fixes #3121
2019-01-30 13:35:29 +01:00
Christian Prochaska
a155d0e531 qt5: fix parallel build issues related to generated files
Store all files generated by moc and rcc in the application's build
directory to prevent the use of unfinished generated files for other
applications built at the same time.

Issue #3115
2019-01-30 13:35:28 +01:00
Martin Stein
e0af049124 depot_autopilot: fix regression with nr. of tests
The output of the number of tests to run was removed accidentally with the
commit "depot_autopilot: provide repeat mode".
2019-01-30 13:35:28 +01:00
Martin Stein
f69d3020fd remove unused repos/app-file_cache* files
These files sneaked in accidentally with the commit "Support GNAT.IO in Ada
programs".
2019-01-30 13:35:28 +01:00
Alexander Boettcher
9a2bdf8798 vm_session: move from base-hw to base
Issue #3111
2019-01-30 13:35:28 +01:00
Alexander Boettcher
9f8198d946 hw: deny to attach managed dataspaces to VMs
Issue #3111
2019-01-30 13:35:28 +01:00
Stefan Kalkowski
5b8e1cdbbb foc: add recipe for imx6q_sabrelite base lib 2019-01-30 13:35:28 +01:00
Stefan Kalkowski
b765cef359 replace Wandboard by i.MX6 reference board
Instead of using the Wandboard Quad, the reference hardware from NXP
i.MX6 Quad Sabrelite will be used by Fiasco.OC, sel4 and hw by default.
2019-01-30 13:35:28 +01:00
Stefan Kalkowski
c65860ee53 enable i.MX6 Quad Sabrelite board for hw and foc 2019-01-30 13:35:28 +01:00
Norman Feske
3bd4197951 gems: enable strict warnings for more components
Issue #465
2019-01-30 13:35:28 +01:00
Christian Prochaska
21ed41da9a usb_hid_drv: wait for keyboard LED registry in 'led_connect()'
It can happen that a keyboard gets plugged in and 'led_connect()' is
called while the keyboard LED of another keyboard is just being updated
(and the registry is locked).

Fixes #3118
2019-01-30 13:35:28 +01:00
Norman Feske
ece5cbbbb5 gems: utility for implementing LRU-based caches
This patch extracts the LRU cache implementation from the 'Cached_font'
so that it becomes reusable for other applications.

Fixes #3117
2019-01-30 13:35:28 +01:00
Stefan Kalkowski
6b4d76739e base: remove Signal_receiver::pending() method
Fix #1864
2019-01-30 13:35:28 +01:00
Christian Prochaska
e8ea28d897 socket fs: support non-blocking 'connect()'
Fixes #3113
2019-01-30 13:35:28 +01:00
Christian Prochaska
12c10dbcd1 libc: 'connect()' test
Fixes #3114
2019-01-30 13:35:28 +01:00
Norman Feske
ed65267bc5 depot: update recipe hashes 2019-01-14 12:34:41 +01:00
Norman Feske
97e3d05f37 base-foc: fix placement of utcb area stack area
This commit ensures that UTCB areas of PDs are positioned relative to
the stack areas of regular components, not the one of core.

Fixes #3108
2019-01-14 12:34:41 +01:00
Martin Stein
3f60dcfae8 sel4 run/depot_autopilot: handle resource leak
After a certain number of tests, presumably some resource in core is exceeded
and loading the successive test fails. This quickfix looks out for the
characteristic Core error and then reboots to avoid that all successive tests
are marked as failed.
2019-01-14 12:34:41 +01:00
Christian Prochaska
8aaffe829a usb_hid.run: enable more platforms for autopilot test
Fixes #3105
2019-01-14 12:34:41 +01:00
Norman Feske
81fb10daaa Consistently name block components
This patch replaces abbreviations like "blk", "cli", and "srv" by their
full forms "block", "client", and "server".

Fixes #1258
2019-01-14 12:34:39 +01:00
Norman Feske
bf62d6b896 Move timer from os to base repository
Since the timer and timeout handling is part of the base library (the
dynamic linker), it belongs to the base repository.

Besides moving the timer and its related infrastructure (alarm, timeout
libs, tests) to the base repository, this patch also moves the timer
from the 'drivers' subdirectory directly to 'src' and disamibuates the
timer's build locations for the various kernels. Otherwise the different
timer implementations could interfere with each other when using one
build directory with multiple kernels.

Note that this patch changes the include paths for the former os/timer,
os/alarm.h, os/duration.h, and os/timed_semaphore.h to base/.

Issue #3101
2019-01-14 12:33:57 +01:00
Alexander Senier
14cd115c82 Support GNAT.IO in Ada programs 2019-01-14 12:21:10 +01:00