2144 Commits

Author SHA1 Message Date
Norman Feske
fee2f354dc util/attempt.h: introduce 'Ok' type
This type alleviates the need to re-introduce custom '*_ok' types
whenever a result can be an error but no value.
2025-04-10 14:55:20 +02:00
Norman Feske
689fc1eb93 Introduce new 'Ram' API types
The new types in base/ram.h model different allocation scenarios and
error cases by mere C++ types without using exceptions. They are meant
to replace the former 'Ram_allocator' interface. As of now, the
'Unmapped_allocator' closely captures the former 'Ram_allocator'
semantics. The 'Constrained_allocator' is currently an alias for
'Unmapped_allocator' but is designated for eventually allocating
mapped RAM.

In contrast to the 'Ram_allocator' interface, which talked about
dataspace capabilites but left the lifetime management of the
allocated RAM to the caller, the new API represents an allocation
as a guard type 'Allocation', which deallocates on destruction by
default.

Allocation errors are captured by a 'Result' type that follows
the 'Attempt' pattern.

As a transitionary feature, the patch largely maintains API
compatibility with the original 'Ram_allocator' by providing
the original (exception-based) 'Ram_allocator::alloc' and
'Ram_allocator::free' methods as a wrapper around the new
'Ram::Constrained_allocator'. So components can be gradually
updated to the new 'Ram::' interface.

Issue #5502
2025-04-10 14:55:15 +02:00
boinsoft
7d4b6b6bd5 ports: replace ftp urls to http
Fixes #5505
Fixes #5498
2025-04-10 14:27:21 +02:00
Josef Söntgen
d143ed7e47 libc: extended symbols file needed by fio
Fixes #5507.
2025-04-10 14:27:21 +02:00
Josef Söntgen
b4e6b96a19 libc: implement _SC_CLK_TCK
Return the same value that is used in FreeBSD.

Issue #5507.
2025-04-10 14:27:21 +02:00
Norman Feske
7e420a68a6 Remove C++ exceptions from 'Thread' API
After constructed, a 'Thread' object may remain in a dysfunctional state
should the stack allocation have failed. This condition is no longer
reflected as a C++ exception but as result value of 'Thread::info()'.

Keep 'Thread::name' as public constant because the stack is not always
available for storing the name.

The 'stack_top' accessor has been removed because this information is
already provided by 'Thread::info()'.

Issue #5245
2025-04-10 14:27:21 +02:00
Stefan Kalkowski
3cb76194a1 libusb: remove No_device exception
An exception thrown within `update_urbs` in the Usb::Device of
Usb::Interface utilities can lead to unhandled URBs, because of
the unexpected, early return from the function.
Instead of throwing an exception when the device vanishs, tunnel
an appropriated error return value through the C/C++ call-chain
by using the library-specific URB class derivation as container.
In case of any failure during URB completion, handle it's libusb
specific completion immediatedly.

Ref genodelabs/genode#5434
2025-04-10 14:24:31 +02:00
Norman Feske
ff83de2bbc base: decouple 'Pd_session' from 'Ram_allocator'
With this patch, the 'Pd_session' interface no longer implements the
'Ram_allocator' interface, which allows us to change the
'Genode::Ram_allocator' semantics (as a subsequent step) without
affecting core's PD service.

The patch also replaces the client-local implementation of
'Pd_session_client::dataspace_size' by the proper RPC call 'ram_size' to
core, which mitigates the potential risk of de-referencing a dataspace
cap of an untrusted origin. E.g., in scenarios where the monitor
component requests the size of a dataspace allocated by the debugging
target.

Since 'ram_size' is an RPC call, it cannot be const. Hence, the
'Ram_alloctor::dataspace_size' has become non-const.

The new 'Pd_ram_allocator' implements the 'Ram_allocator' interface by
using a PD session.

Issue #5502
2025-04-10 14:24:31 +02:00
Christian Helmuth
a7af82fd81 Increase cap quota (for lxip) in nic_bridge test 2025-04-10 14:24:11 +02:00
Christian Helmuth
1f181f6ce3 genode_c_api: errors on socket/nic_client init
Prevent uncaught exceptiosn in (NIC-client) initialization but report
as errors from genode_socket_init() / genode_nic_client_create().
2025-04-10 14:24:11 +02:00
Christian Helmuth
5619ccd940 Set USB bios_handoff="no" in run scripts
This is the default setting in Sculpt currently, so use it also
for testing.
2025-04-10 14:24:11 +02:00
Norman Feske
eb572914b1 libports: don't copy Xml_node
Issue #5411
2025-04-10 14:19:03 +02:00
Norman Feske
368509ff9b libc: don't copy Xml_node
This patch reworks the libc's internal config handling by replacing
scattered Xml_node accesses by the new 'Config' type that is parsed
at once. The config ROM has been moved from 'Env_implementation' to
the libc kernel.

Issue #5411
2025-04-10 14:18:41 +02:00
Norman Feske
636eb7b53f os: don't copy Xml_node
As this patch changes 'Vfs::File_system_factory::create', the
VFS plugins must be adapted, now taking 'Xml_node const &' as
argument.

Issue #5411
2025-04-10 14:18:41 +02:00
Norman Feske
05d69a0bb3 os: increase mtime resolution to milliseconds
This patch changes the 'Timestamp' type of the VFS and file-system
session to an unsigned 64-bit value holding the number of milliseconds
since the UNIX epoch (beginning of 1970).

The special case of an invalid timestamp has been removed as it was
never consistently handled anyway.

In contrast to the POSIX timespec, which represents tv_sec and tv_nsec
both as signed values, this patch uses an unsigned value because the
interpretation of negative tv_sec and tv_nsec values is muddy.
Hypothetical modification times older that 1970 are capped at 1970.

Fixes #3511
2025-04-10 14:14:07 +02:00
Alexander Boettcher
56dca5eea5 ports: fix assert in libc_integration
Issue #5432
2025-04-10 14:13:26 +02:00
Sebastian Sumpf
e985e1c7b1 nic_bridge.run: use lxip and lwip
* use both IP-stacks with and without labels
* adjust matching rules

issue #5471
2025-04-10 14:13:26 +02:00
Sebastian Sumpf
92086cce68 genode_c_api/socket: add label to socket init
Add label argument to genode_socket_init that can be/is used to label
possible connecions.

issue #5471
2025-04-10 14:13:26 +02:00
Christian Prochaska
a7bd01bd4a stdcxx: define _GTHREAD_USE_MUTEX_INIT_FUNC
Fixes #5473
2025-04-10 14:13:25 +02:00
Sebastian Sumpf
ed77207963 os: move vfs/lxip to vfs/ip from dde_linux
Because the sources are now used by lwip/lxip, make them accessible in a
public place.

issue #5471
2025-04-10 14:13:25 +02:00
Sebastian Sumpf
9881ba1364 libports: lwip with socket C-API
Implement socket C-API and move lwip specific parts present in vfs_lwip
to the library.

issue #5471
2025-04-10 14:12:38 +02:00
Sebastian Sumpf
e46bc6159d test/ip_raw: add support for lwip
Add lwIP requiremnts to the ip_raw test.

issue #5471
2025-04-10 14:12:38 +02:00
Sebastian Sumpf
503f9fae7a libports: move vfs_lwip to vfs_legacy_lwip
* src/lib/lwip -> legacy_lwip
* src/lib/vfs/lwip -> legacy_lwip
* recipes/src/vfs_lwip -> vfs_legacy_lwip
* recipes/api/lwip -> legacy_lwip

issue #5471
2025-04-10 14:12:37 +02:00
Christian Helmuth
720488c49b test-pthread: add pseudo rtc to prevent warning 2025-04-10 14:12:37 +02:00
Sebastian Sumpf
5240de481f libc: use monitor for blocking in read_sockaddr_in
The suspend mechanism is obsolete, use monitor call to wait for data for
blocking sockets. The old implementation using 'suspend' will not block for
pthreads because the 'suspend' functor issues a 'monitor' call itself.

issue #5471
2025-04-10 14:12:37 +02:00
Stefan Kalkowski
c053c46fae libusb: avoid active polling of control URBs
Some control URBs have to be handled synchronously within the
libusb, to meet the semantics of get_device_descriptor, set_interface,
etc., but this was using the VFS libusb plugin in a way that it
polled actively during the control URB being active. This commit
removes the not desired polling behaviour.

Fix genodelabs/genode#5469
2025-04-10 14:12:21 +02:00
Christian Helmuth
2d89b53b0c depot: update recipe hashes 2025-02-27 12:53:40 +01:00
Christian Helmuth
cd40a5be96 tool: have_cmd_arg -> have_cmd_switch (run, autopilot, dts)
Issue #5432
2025-02-27 12:53:40 +01:00
Christian Prochaska
472112fe0d qt6_declarative: install libqtqmlcoreplugin.lib.so
Fixes #5466
2025-02-27 12:53:40 +01:00
Josef Söntgen
48f37b4a46 libc: use original 'gai_strerror()' implementation
This commit removes the dummy 'gai_strerror()' implementation in
favor of the one provided in the contrib sources to allow for better
diagnosing of DNS related problems.

As long as NLS is not set the implementation looks up the error string
via the error-code directly.

Fixes #5464.
2025-02-24 16:39:56 +01:00
Christian Prochaska
9cebdeb1a9 qt6_base: no mmap for sqlite3 files, reduce warnings
Fixes #5463
2025-02-24 16:39:56 +01:00
Josef Söntgen
89c63604ba api/openssl: add pkg-config files
Issue genodelabs/goa#81
2025-02-24 16:39:56 +01:00
Josef Söntgen
581ee3eda6 api/curl: add pkg-config file
Issue genodelabs/goa#81
2025-02-24 16:39:56 +01:00
Christian Prochaska
c0f82a0048 qt6: set CMAKE_PLATFORM_NO_VERSIONED_SONAME variable
Fixes #5462
2025-02-24 16:39:56 +01:00
Johannes Schlatow
adcad2118f api/zlib: add pkg-config file
genodelabs/goa#81
2025-02-24 16:39:56 +01:00
Johannes Schlatow
889fe955aa depot/openssl: mirror opensslconf.h at include/
Since Goa expects include files to reside at include/ or
include/spec/{x86,x86_64,arm_64,64bit}, the src/lib/.../opensslconf.h is
missed by Goa. This commit adds Goa compatibility for the openssl api
archive.

genodelabs/goa#81
2025-02-24 16:39:56 +01:00
Christian Prochaska
b0f0e63b9f qt6: add qtwebchannel and qtwebengine APIs
Fixes #5459
2025-02-24 16:39:55 +01:00
Christian Prochaska
dbf23a7a0c qt6: add qt5compat module
Fixes #5458
2025-02-24 16:39:55 +01:00
Christian Prochaska
c9406c246e qt6: fix "file name too long" error in gn tool
Fixes #5456
2025-02-24 16:39:55 +01:00
Roman Iten
a207a5491c libports: use 'assert'-proc in run scripts
Issue #5432
2025-02-24 16:39:20 +01:00
Christian Prochaska
db0d76ba2f qt: support extra CMake flags
Fixes #5454
2025-02-24 16:39:20 +01:00
Christian Prochaska
9c786fcfa9 qt5: set CMAKE_SHARED_LIBRARY_SONAME_C_FLAG variable
Fixes #5453
2025-02-24 16:39:20 +01:00
Christian Prochaska
58f4a84f60 qt5: move WebEngine-related API recipes to genode-world
Fixes #5452
2025-02-24 16:39:20 +01:00
Norman Feske
2c8beb462f file-system session: root dir via session label
This patch changes the way of how the client-selected sub directory is
communicated to the server. The former opaque session argument is now
passed as last label element, which allows for the flexible tweaking
of this argument by init's session-routing and label-rewriting
mechansims. In particular, it alleviates the need for creating chroot
component instances.

This change requires the following four adaptations at the
configuration level:

- Each file-system session request must now carry a path starting
  with / as last session arguments. Hence, <vfs> <fs> nodes that
  feature a 'label' attributes must extend the attribute value
  with " -> /". For <fs> nodes with no label attribute, "/" is
  used as last label argument by default.

- For matching session-routing rules at init's configuration,
  the matching of full labels should be replaced by 'label_prefix'
  matches, excluding the last (path) argument.

- Wherever a label of a file-system session is rewritten by using
  init's 'label' attribute of a <parent> or <child> target node,
  the new attribute 'identity' should be used instead. This replaces
  the identity part of the label while preserving the client's
  directory argument.

- Analogously to the matching of session-routing rules, server-side
  policy-selection rules that formerly matched a concrete 'label'
  must be changed to match a 'label_prefix' instead.

As a good practice, 'label_prefix' values should end with " ->" if
possible, which clearly delimits the identity part of the label
used by the matching.

Issue #5445
2025-02-24 16:39:20 +01:00
Norman Feske
2719b37107 run: use ram attribute in start nodes
Issue #5448
2025-02-24 16:39:20 +01:00
Christian Prochaska
cec3a82401 libc: use more tool chain types for arm_64 and riscv
Use the unsigned long tool chain types for types previously
derived from unsigned long '__uint64_t', which is now
unsigned long long.

Issue #5431
2025-02-24 16:39:20 +01:00
Norman Feske
d2adfa150b libc: avoid nesting of atexit handler calls
In some situations, atexit handlers perform I/O (e.g., closing a file),
which entails the handling of signals. Should SIGTERM be pending, the
handling of this signal will in turn trigger the execution of atexit
handlers. To break this cycle, this patch removes atexit handlers from
the list before executing them. So no atexit handler is entered more
than once.

Fixes #5444
2025-02-24 16:39:19 +01:00
Norman Feske
7fc060438a window_layouter: handle drag/drop as actions
This patch moves the formerly hard-wired drag-and-drop handling
to the configuration level by introducing the actions "drag" and "drop".

To aid the robust handling of release events matching their
corresponding press events, the patch refines the policy-matching of the
current combination of keys against the hierarchy of <press> and
<release> nodes. If no policy for a concrete combination exists, a
release event also considers the policy of its matching <press> node.
This way, the regular drag-and-drop rules can be expressed as

  <press key="BTN_LEFT" action="drag">
     <release key="BTN_LEFT" action="drop"/>
  </press>

This also works when releasing BTN_LEFT while pressing additional keys,
for which no policy exists.

With this change, the layouter supports the matching of multiple key
sequences instead of only one, thereby supporting multiple actions at
once and allowing for decoupling different user interactions in the
configuration.

Issue #5403
2025-02-24 16:39:19 +01:00
Norman Feske
a5ae1e12bd Capture::Connection::Screen: use Blit::back2front
Issue #5428
2025-02-24 16:39:19 +01:00
Christian Helmuth
5076554f20 depot: update recipe hashes 2025-01-30 16:32:35 +01:00