mirror of
https://github.com/mmueller41/genode.git
synced 2026-01-22 13:02:56 +01:00
Compare commits
434 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8d31590a66 | ||
|
|
8a5277d53f | ||
|
|
fb6549a092 | ||
|
|
c649307720 | ||
|
|
bf0f3b65b4 | ||
|
|
b9a21ee3ae | ||
|
|
8d790010bf | ||
|
|
e29485fa59 | ||
|
|
ace172ebf3 | ||
|
|
bbfda019df | ||
|
|
5cc2adb421 | ||
|
|
90b3b72a91 | ||
|
|
dd4a3b0263 | ||
|
|
7d0cb9620b | ||
|
|
2c29bf5a21 | ||
|
|
80bc1cff5f | ||
|
|
a5f6d0f081 | ||
|
|
e223be32ce | ||
|
|
73d3698e2f | ||
|
|
5f5ad41ad3 | ||
|
|
7ba31d4447 | ||
|
|
224f5907b2 | ||
|
|
70f98fcc44 | ||
|
|
06edc0d52b | ||
|
|
af6d2a8c54 | ||
|
|
157f4b1270 | ||
|
|
66ff18a53e | ||
|
|
2a4adc895c | ||
|
|
d21bc8268b | ||
|
|
8b556a9435 | ||
|
|
a68a6665ac | ||
|
|
1e7c94759d | ||
|
|
9ec2a19cc0 | ||
|
|
9bc6b8be5a | ||
|
|
f8f8b665c3 | ||
|
|
31397d67ae | ||
|
|
dd8777093d | ||
|
|
2f55ffdf20 | ||
|
|
7c1a4522d6 | ||
|
|
3e8824908d | ||
|
|
28714979bd | ||
|
|
658091bfad | ||
|
|
e8e14ad1bf | ||
|
|
e544464354 | ||
|
|
969e59c599 | ||
|
|
f2d7f7aa6e | ||
|
|
a59b69758b | ||
|
|
c7d9b2ca92 | ||
|
|
2437d759b6 | ||
|
|
0434cb6fd6 | ||
|
|
556a5c8086 | ||
|
|
852ab79359 | ||
|
|
66063e5137 | ||
|
|
f03917ab7c | ||
|
|
5ed528a2ad | ||
|
|
81ae4599ae | ||
|
|
82090d2ea1 | ||
|
|
2e3b11b354 | ||
|
|
f3eaeb08ef | ||
|
|
3f97269988 | ||
|
|
1aed881313 | ||
|
|
3c78265e66 | ||
|
|
fcb21732e0 | ||
|
|
db0e86fa41 | ||
|
|
2e22498e5a | ||
|
|
264f695373 | ||
|
|
a2381c7e4c | ||
|
|
974118acec | ||
|
|
08ef528577 | ||
|
|
50b367c076 | ||
|
|
36b6ebc030 | ||
|
|
a89d61acf2 | ||
|
|
9e42a9ac7e | ||
|
|
19690193a4 | ||
|
|
78047b5bd8 | ||
|
|
9662d89cfb | ||
|
|
bc5b161260 | ||
|
|
c502e1d095 | ||
|
|
6c4ce86a34 | ||
|
|
7bac1ec7e5 | ||
|
|
7932c76d85 | ||
|
|
66c520cdae | ||
|
|
9453287a6b | ||
|
|
40e936911f | ||
|
|
d9121e50c3 | ||
|
|
cb15f40028 | ||
|
|
ce1d0464b8 | ||
|
|
bed531b604 | ||
|
|
257b3b6775 | ||
|
|
420ed91480 | ||
|
|
c6b17be744 | ||
|
|
d266f44ef3 | ||
|
|
5a2ac73b69 | ||
|
|
7996fc45f3 | ||
|
|
a03a37b1d9 | ||
|
|
76ac94f4f2 | ||
|
|
f4d3231034 | ||
|
|
b7ffeb51aa | ||
|
|
ed15a46ca4 | ||
|
|
c55a499009 | ||
|
|
d1be1281bc | ||
|
|
377dadd461 | ||
|
|
353baa9251 | ||
|
|
60106ac2c8 | ||
|
|
de7d4a5523 | ||
|
|
9b6cc75f1c | ||
|
|
18b26ff595 | ||
|
|
e44ffa02c9 | ||
|
|
5122917d62 | ||
|
|
3639a1af80 | ||
|
|
851b842033 | ||
|
|
072a00ba18 | ||
|
|
7e0b66835b | ||
|
|
73e671893b | ||
|
|
fd682cd470 | ||
|
|
bfd94d64ba | ||
|
|
d8539af412 | ||
|
|
cd7a6fc9fe | ||
|
|
41380ff769 | ||
|
|
0ed7367c97 | ||
|
|
eab09a2f7c | ||
|
|
de795b1a6e | ||
|
|
73546a135a | ||
|
|
c888d856ee | ||
|
|
c81af531a3 | ||
|
|
6743669ab8 | ||
|
|
320387db89 | ||
|
|
4cad1a87df | ||
|
|
22cb6dded7 | ||
|
|
537b317273 | ||
|
|
795a817a33 | ||
|
|
067a7ad7e9 | ||
|
|
3863de9589 | ||
|
|
443d3c98dd | ||
|
|
602def9bdd | ||
|
|
3d1d1b439d | ||
|
|
49e907e5f6 | ||
|
|
c4a8c6798b | ||
|
|
21e48a8e12 | ||
|
|
a7d170adda | ||
|
|
91b71f7a9f | ||
|
|
641679f7e7 | ||
|
|
ed4594c76b | ||
|
|
997a77b3de | ||
|
|
6fa4307005 | ||
|
|
f3efbe50bb | ||
|
|
ce6f4dffe5 | ||
|
|
a0b0892df3 | ||
|
|
e163055f6a | ||
|
|
7acc34b48b | ||
|
|
a9827c662e | ||
|
|
9a8a42e819 | ||
|
|
5516dbcb1f | ||
|
|
b7cdb5840a | ||
|
|
61d798c629 | ||
|
|
973fbc98be | ||
|
|
3d634df34d | ||
|
|
ad284491e6 | ||
|
|
f946de4450 | ||
|
|
377c6ed0ce | ||
|
|
1609d8a92f | ||
|
|
169cad6059 | ||
|
|
bba4790002 | ||
|
|
c943e26913 | ||
|
|
7d1fd0b0a3 | ||
|
|
6d653b3c0f | ||
|
|
5936d00b5e | ||
|
|
5af4552511 | ||
|
|
0310c733d5 | ||
|
|
0e6c32f75e | ||
|
|
93ab972ddc | ||
|
|
35c3acdf05 | ||
|
|
103236fdca | ||
|
|
62848b1a68 | ||
|
|
64ef651d4d | ||
|
|
1a620acc17 | ||
|
|
6e71208db3 | ||
|
|
8e205e0324 | ||
|
|
9578fadae2 | ||
|
|
1ec823bf5e | ||
|
|
2471410fe5 | ||
|
|
3fb5ae4fdc | ||
|
|
4450b37ff5 | ||
|
|
309597bbda | ||
|
|
7dbf836217 | ||
|
|
5249f3358f | ||
|
|
1f91fd3f7d | ||
|
|
01676717e2 | ||
|
|
1cfb1af56e | ||
|
|
ef741ef80d | ||
|
|
6119e03081 | ||
|
|
6d945e6a61 | ||
|
|
6fc7ed55cf | ||
|
|
8b590e2330 | ||
|
|
ec711b008e | ||
|
|
e5b00d89fb | ||
|
|
be55f080e4 | ||
|
|
e1aab829ca | ||
|
|
e56dd15a4b | ||
|
|
103ae9df4a | ||
|
|
b5f0c07eb3 | ||
|
|
eb3a81a874 | ||
|
|
1e96510815 | ||
|
|
04d8c859d8 | ||
|
|
b11da67679 | ||
|
|
c8322ffd2a | ||
|
|
f63713694c | ||
|
|
7a97cd70aa | ||
|
|
48b4891f6e | ||
|
|
5d40c0c1ce | ||
|
|
e8f5706382 | ||
|
|
98f39c698f | ||
|
|
c6eda9bd80 | ||
|
|
87b08d6c7f | ||
|
|
5f7e670ebc | ||
|
|
e8fec3eed6 | ||
|
|
dc8b4eeb40 | ||
|
|
4f87fbd5ae | ||
|
|
df3f7dc1bc | ||
|
|
8e85d889f1 | ||
|
|
f687b0f3b9 | ||
|
|
5b87f68900 | ||
|
|
7221199f74 | ||
|
|
6006051fb9 | ||
|
|
63048fb89f | ||
|
|
a90aa78c6e | ||
|
|
70acd4b2d5 | ||
|
|
1a80f166c5 | ||
|
|
935dcf8b18 | ||
|
|
b915b0adc4 | ||
|
|
6e6b671a66 | ||
|
|
e1333c9421 | ||
|
|
ab8ef5750d | ||
|
|
7c20ba84e4 | ||
|
|
78497c03ca | ||
|
|
128ba65109 | ||
|
|
f80b4b9fd9 | ||
|
|
7f6b6d7e13 | ||
|
|
51104454aa | ||
|
|
2f47bbde30 | ||
|
|
b078224753 | ||
|
|
0f27d139bd | ||
|
|
77a875735a | ||
|
|
32753c3f69 | ||
|
|
7d2eb71094 | ||
|
|
0de54cddaa | ||
|
|
4002653334 | ||
|
|
adb48b5c9e | ||
|
|
7f928a6573 | ||
|
|
f1427fc02a | ||
|
|
8ce798abed | ||
|
|
dd0c1575f5 | ||
|
|
4b9c1d8f2b | ||
|
|
be65c4acd2 | ||
|
|
d22b95ded3 | ||
|
|
c11d9b7b5c | ||
|
|
42fddf8390 | ||
|
|
589b416ca8 | ||
|
|
4738d77c88 | ||
|
|
64bc008c3a | ||
|
|
236e02a2dd | ||
|
|
cb5b688eb9 | ||
|
|
c39a342fe5 | ||
|
|
07502ce6bb | ||
|
|
48b2456845 | ||
|
|
894c7411e7 | ||
|
|
ea78d85d35 | ||
|
|
04aeaa25e5 | ||
|
|
9d67f9fc8e | ||
|
|
1cc7277996 | ||
|
|
a9f0e47ea3 | ||
|
|
bbc21cf063 | ||
|
|
f722aa3325 | ||
|
|
eb0a33302a | ||
|
|
151828752c | ||
|
|
6a8fb48c13 | ||
|
|
07b87f6f1f | ||
|
|
905b0c4aef | ||
|
|
6505ce47ae | ||
|
|
31d7b3eb97 | ||
|
|
80d89c20fd | ||
|
|
1a94338389 | ||
|
|
dd899fde29 | ||
|
|
1bf796d69a | ||
|
|
c12d76686e | ||
|
|
199821a247 | ||
|
|
840f383e46 | ||
|
|
1459085a4d | ||
|
|
6f6340644b | ||
|
|
b134867f31 | ||
|
|
01bf32b998 | ||
|
|
f14cc2edab | ||
|
|
f0c4fc1e22 | ||
|
|
f891f4c963 | ||
|
|
9f28f4f803 | ||
|
|
0e49336b96 | ||
|
|
941e918b46 | ||
|
|
74e75d7fbc | ||
|
|
58db6542f8 | ||
|
|
fca2a05adf | ||
|
|
4639978b3a | ||
|
|
870d348d77 | ||
|
|
db8ec81e9f | ||
|
|
1d9a2dce94 | ||
|
|
12ea494477 | ||
|
|
b60b591d06 | ||
|
|
9fbc68bda1 | ||
|
|
132569d12b | ||
|
|
319d2be1af | ||
|
|
29911cf114 | ||
|
|
8be72b0be1 | ||
|
|
6359445a8e | ||
|
|
c783764d0b | ||
|
|
ff378a8c5b | ||
|
|
03c3040a1d | ||
|
|
cc4e21e7a7 | ||
|
|
bb34aafa45 | ||
|
|
6dfd268ef1 | ||
|
|
838c5ba7de | ||
|
|
4ab990ad5b | ||
|
|
13cd25e7b0 | ||
|
|
2b41323fe6 | ||
|
|
7bf47b1982 | ||
|
|
22d71d5a8b | ||
|
|
3956530634 | ||
|
|
e87d60ddf7 | ||
|
|
85a1f91f59 | ||
|
|
dc90740549 | ||
|
|
d111af922a | ||
|
|
40c21b6d0f | ||
|
|
4dd110ce5e | ||
|
|
d6bdeed38f | ||
|
|
e8fb7ad470 | ||
|
|
5b68286e07 | ||
|
|
bb12d79ae9 | ||
|
|
d657b61f1b | ||
|
|
42a77c531a | ||
|
|
5347278136 | ||
|
|
ca5c25ac04 | ||
|
|
bb35b997b8 | ||
|
|
9c95e4bb4f | ||
|
|
e63195a940 | ||
|
|
0836293d1a | ||
|
|
330672e030 | ||
|
|
150d143755 | ||
|
|
e63c5e6c69 | ||
|
|
69080014b0 | ||
|
|
f051065582 | ||
|
|
585c4b8c69 | ||
|
|
dad1de1865 | ||
|
|
6f1357c6f8 | ||
|
|
336228f357 | ||
|
|
df553e9360 | ||
|
|
ddc0caa605 | ||
|
|
0df358a550 | ||
|
|
9da428dccf | ||
|
|
46fa8197a2 | ||
|
|
52d798ff40 | ||
|
|
256b2fa3e1 | ||
|
|
d8bcaa4fa4 | ||
|
|
7a5841b637 | ||
|
|
358fdd54b9 | ||
|
|
45a74023a7 | ||
|
|
6f3f46c7ba | ||
|
|
2064ffd64b | ||
|
|
685bd763f9 | ||
|
|
0f3ac4cb9f | ||
|
|
208294b0d3 | ||
|
|
cf052996d3 | ||
|
|
4961c84f12 | ||
|
|
2f598e5680 | ||
|
|
951f484fad | ||
|
|
c086bba71a | ||
|
|
5a02b5fd23 | ||
|
|
50a1e540a0 | ||
|
|
b8738dee90 | ||
|
|
a7e7eeec38 | ||
|
|
1d480e3329 | ||
|
|
3b427824a7 | ||
|
|
3a1f5bc13a | ||
|
|
923c38f7cd | ||
|
|
ee6d38a770 | ||
|
|
dd524b56fa | ||
|
|
4fe4c9aa63 | ||
|
|
e3bc77c386 | ||
|
|
cacbad1bd8 | ||
|
|
cc8552f81e | ||
|
|
34a60b56f6 | ||
|
|
25f7fdcb40 | ||
|
|
b6d3063ada | ||
|
|
c2cf0ae8c6 | ||
|
|
7f5186d489 | ||
|
|
e67f389da1 | ||
|
|
4ebc164c11 | ||
|
|
886d0da57c | ||
|
|
2912096f6e | ||
|
|
ba55409c86 | ||
|
|
f3185de7f5 | ||
|
|
c1b6000248 | ||
|
|
0a468a07a7 | ||
|
|
6d48b5484d | ||
|
|
3a862334fc | ||
|
|
cd1c0aace3 | ||
|
|
6e54cad44c | ||
|
|
a71ef16423 | ||
|
|
2495a86aff | ||
|
|
5225d12381 | ||
|
|
e096202b1f | ||
|
|
44ace04b95 | ||
|
|
507a34b3d0 | ||
|
|
677d9abd07 | ||
|
|
e66726e931 | ||
|
|
cda778a94d | ||
|
|
a799a5f978 | ||
|
|
f5a6d85bc2 | ||
|
|
8535688605 | ||
|
|
8788f13e11 | ||
|
|
aee5b59c51 | ||
|
|
66a7e749e8 | ||
|
|
e2b9308b11 | ||
|
|
97bbad5aea | ||
|
|
d452094f43 | ||
|
|
139f390317 | ||
|
|
9ee1045aad | ||
|
|
25c85fab18 | ||
|
|
095a0a6439 | ||
|
|
bf36d9eb48 | ||
|
|
9d24e906a8 | ||
|
|
44e4d1bd6c | ||
|
|
ab5770c492 | ||
|
|
a90eab8b9a | ||
|
|
e54e4dd532 | ||
|
|
c856ba2a49 | ||
|
|
1087e3f59e |
6
LICENSE
6
LICENSE
@@ -41,7 +41,7 @@
|
||||
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
Version 3, 19 November 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
@@ -683,7 +683,7 @@ the "copyright" line and a pointer to where the full notice is found.
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
@@ -698,4 +698,4 @@ specific requirements.
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU AGPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
||||
@@ -98,10 +98,10 @@ Applications and library infrastructure
|
||||
Thanks to the C runtime, the flexible per-component VFS, the standard
|
||||
C++ library, and the Noux runtime (for UNIX software), porting software
|
||||
to Genode is relatively straight forward. The
|
||||
[http://genode.org/documentation/developer-resources/porting - porting guide]
|
||||
[https://genode.org/documentation/developer-resources/porting - porting guide]
|
||||
explains the typical steps. A wish list of software that we'd like to
|
||||
have available on Genode is available at
|
||||
[http://usr.sysret.de/jws/genode/porting_wishlist.html].
|
||||
[https://usr.sysret.de/jws/genode/porting_wishlist.html].
|
||||
|
||||
:Native Open-Street-Maps (OSM) client:
|
||||
|
||||
@@ -121,7 +121,7 @@ Application frameworks and runtime environments
|
||||
|
||||
:OpenJDK:
|
||||
|
||||
[http://openjdk.java.net/ - OpenJDK] is the reference implementation of the
|
||||
[https://openjdk.java.net/ - OpenJDK] is the reference implementation of the
|
||||
Java programming language and hosts an enormous ecosystem of application
|
||||
software.
|
||||
|
||||
@@ -190,8 +190,8 @@ Application frameworks and runtime environments
|
||||
analyzing such components with formal methods.
|
||||
|
||||
The use of Haskell for systems development was pioneered by the
|
||||
[http://programatica.cs.pdx.edu/House/ - House Project]. A more recent
|
||||
development is [http://halvm.org - HalVM] - a light-weight OS runtime for
|
||||
[https://programatica.cs.pdx.edu/House/ - House Project]. A more recent
|
||||
development is [https://halvm.org - HalVM] - a light-weight OS runtime for
|
||||
Xen that is based on Haskell.
|
||||
|
||||
:Xlib compatibility:
|
||||
@@ -310,7 +310,7 @@ Device drivers
|
||||
Genode utilizes the network device drivers of the iPXE project, which
|
||||
perform reasonably well for everyday use cases but are obviously not
|
||||
designated for high-performance networking.
|
||||
The [http://dpdk.org/ - DPDK] is a vendor-supported suite of network device
|
||||
The [https://dpdk.org/ - DPDK] is a vendor-supported suite of network device
|
||||
drivers that is specifically developed for high-performance applications.
|
||||
It presents an attractive alternative to iPXE-based drivers. This project
|
||||
has the goal to make DPDK drivers available as a Genode component.
|
||||
|
||||
@@ -14,6 +14,11 @@ Genode comes with a growing number of components apparently scattered across
|
||||
various repositories. This document provides an overview of these components
|
||||
and outlines the systematics behind them.
|
||||
|
||||
The scope of this document is limited to the Genode main repository maintained
|
||||
by Genode Labs. Many additional components and device drivers can be found in
|
||||
the community-maintained
|
||||
[https://github.com/genodelabs/genode-world/ - Genode-World] repository.
|
||||
|
||||
|
||||
Categorization of components
|
||||
############################
|
||||
@@ -26,9 +31,9 @@ of them is briefly characterized as follows:
|
||||
session interfaces. Naturally, a device driver is specific to a
|
||||
particular hardware platform. The hardware resources are accessed
|
||||
via core's IO_MEM, IO_PORT, and IRQ services. The functionality of
|
||||
the driver is made available to other system components by announcing
|
||||
the driver is made available to other system components via
|
||||
one of Genode's device-independent session interfaces, which are
|
||||
'platform_session', 'framebuffer_session', 'input_session', 'block_session',
|
||||
'platform_session', 'capture_session', 'event_session', 'block_session',
|
||||
'audio_out_session', 'log_session', 'nic_session', and 'timer_session'
|
||||
(see 'os/include/' for the interface definitions). Those interfaces are
|
||||
uniform across hardware platforms and kernel base platforms. Usually,
|
||||
@@ -79,6 +84,10 @@ Platform devices
|
||||
this simple ACPI parser traverses the ACPI tables and reports device-resource
|
||||
information (e.g., interrupt lines of PCI devices).
|
||||
|
||||
:'os/src/app/smbios_decoder':
|
||||
A component that parses SMBIOS information on x86 platforms and makes the
|
||||
result available as a report.
|
||||
|
||||
:'libports/src/app/acpica':
|
||||
In addition to our ACPI base driver, the acpica component uses the
|
||||
ACPICA library to provide access to dynamic functions like battery
|
||||
@@ -93,35 +102,24 @@ UART devices
|
||||
|
||||
The UART device drivers implement the UART-session interface.
|
||||
|
||||
:'os/src/drivers/uart/spec/pl011':
|
||||
:'os/src/drivers/uart/spec/pbxa9':
|
||||
Driver for the PL011 UART as found on many ARM-based platforms.
|
||||
|
||||
:'os/src/drivers/uart/spec/i8250':
|
||||
:'os/src/drivers/uart/spec/x86':
|
||||
Driver for the i8250 UART as found on PC hardware.
|
||||
|
||||
:'os/src/drivers/uart/spec/omap4':
|
||||
Driver for the UART as found on OMAP4-based hardware.
|
||||
|
||||
:'os/src/drivers/uart/spec/exynos5':
|
||||
Driver for the UART as found on Exynos-5-based hardware.
|
||||
|
||||
|
||||
Framebuffer and input drivers
|
||||
=============================
|
||||
|
||||
Framebuffer and input drivers implement the framebuffer-session interface and
|
||||
input-session interfaces respectively.
|
||||
Framebuffer and input drivers are implemented as clients of the
|
||||
capture-session and event-session interfaces respectively.
|
||||
|
||||
:'os/src/drivers/input/dummy':
|
||||
Pseudo input driver without accessing any hardware. This component is useful
|
||||
to resolve a dependency from an input session for scenarios where no user
|
||||
input is required.
|
||||
|
||||
:'os/src/drivers/input/spec/ps2/x86':
|
||||
:'os/src/drivers/ps2/x86':
|
||||
Driver for the 'i8042' PS/2 controller as found in x86 PCs. It supports both
|
||||
mouse (including ImPS/2, ExPS/2) and keyboard.
|
||||
|
||||
:'os/src/drivers/input/spec/ps2/pl050':
|
||||
:'os/src/drivers/ps2/pl050':
|
||||
Driver for the PL050 PS/2 controller as found on ARM platforms such as
|
||||
VersatilePB. The physical base address used by the driver is obtained at
|
||||
compile time from a header file called 'pl050_defs.h'. The version of the
|
||||
@@ -129,10 +127,6 @@ input-session interfaces respectively.
|
||||
is made available to the driver via the SPECS machinery of the Genode build
|
||||
system.
|
||||
|
||||
:'os/src/drivers/input/spec/imx53':
|
||||
Input driver for Egalaxy touchscreen and Freescale's MPR121
|
||||
capacitative touch buttons on i.MX53.
|
||||
|
||||
:'libports/src/drivers/framebuffer/vesa':
|
||||
Driver using VESA mode setting on x86 PCs. For more information, please refer
|
||||
to the README file in the driver directory.
|
||||
@@ -141,38 +135,35 @@ input-session interfaces respectively.
|
||||
Driver for boot-time initialized framebuffers (e.g., UEFI GOP)
|
||||
discovered from the 'platform_info' ROM
|
||||
|
||||
:'os/src/drivers/framebuffer/spec/pl11x':
|
||||
:'os/src/drivers/framebuffer/pl11x':
|
||||
Driver for the PL110/PL111 LCD display.
|
||||
|
||||
:'os/src/drivers/framebuffer/spec/omap4':
|
||||
Driver for HDMI output on OMAP4 SoCs.
|
||||
|
||||
:'os/src/drivers/framebuffer/spec/exynos5':
|
||||
Driver for HDMI output on Exynos-5 SoCs.
|
||||
|
||||
:'os/src/drivers/framebuffer/spec/imx53':
|
||||
:'os/src/drivers/framebuffer/imx53':
|
||||
Driver for LCD output on i.MX53 SoCs.
|
||||
|
||||
:'os/src/drivers/framebuffer/spec/rpi':
|
||||
:'os/src/drivers/framebuffer/rpi':
|
||||
Driver for the HDMI output of the Raspberry Pi.
|
||||
|
||||
:'os/src/drivers/framebuffer/spec/sdl':
|
||||
:'os/src/drivers/framebuffer/sdl':
|
||||
Serves as both framebuffer and input driver on Linux using libSDL. This
|
||||
driver is only usable on the Linux base platform.
|
||||
|
||||
:'os/src/drivers/gpu/intel':
|
||||
Intel Graphics GPU multiplexer for Broadwell and newer.
|
||||
An experimental Intel Graphics GPU multiplexer for Broadwell and newer.
|
||||
|
||||
:'dde_linux/src/drivers/framebuffer/intel':
|
||||
Framebuffer driver for Intel i915 compatible graphic cards based on
|
||||
the Linux Intel KMS driver.
|
||||
|
||||
:'dde_linux/src/drivers/usb':
|
||||
USB driver that makes USB HID and USB storage devices available as input
|
||||
sessions and block session respectively. For examples of using this driver,
|
||||
refer to the run scripts at 'dde_linux/run/usb_hid' and
|
||||
USB driver that makes USB HID and USB storage devices available as an input
|
||||
event stream and a block session respectively. For examples of using this
|
||||
driver, refer to the run scripts at 'dde_linux/run/usb_hid' and
|
||||
'dde_linux/run/usb_storage'.
|
||||
|
||||
:'dde_linux/src/drivers/usb_hid':
|
||||
USB Human Interface Device driver using the USB session interface.
|
||||
|
||||
|
||||
Timer drivers
|
||||
=============
|
||||
@@ -220,12 +211,6 @@ All block drivers implement the block-session interface defined at
|
||||
Driver for SD-cards connected via the PL180 device as found on the PBX-A9
|
||||
platform.
|
||||
|
||||
:'os/src/drivers/sd_card/spec/omap4':
|
||||
Driver for SD-cards connected to the SD-card controller of the OMAP4 SoC.
|
||||
|
||||
:'os/src/drivers/sd_card/spec/exynos5':
|
||||
Driver for SD-cards and eMMC connected to Exynos-5-based platforms.
|
||||
|
||||
:'os/src/drivers/sd_card/spec/imx53':
|
||||
Driver for SD-cards connected to the Freescale i.MX53 platform like the
|
||||
Quick Start Board or the USB armory device.
|
||||
@@ -241,6 +226,9 @@ All block drivers implement the block-session interface defined at
|
||||
:'os/src/drivers/ahci':
|
||||
Driver for SATA disks and CD-ROMs on x86 PCs.
|
||||
|
||||
:'os/src/drivers/nvme':
|
||||
Driver for NVMe block devices on x86 PCs.
|
||||
|
||||
:'os/src/drivers/usb_block':
|
||||
USB Mass Storage Bulk-Only driver using the USB session interface.
|
||||
|
||||
@@ -259,10 +247,6 @@ defined at 'os/include/nic_session'.
|
||||
Native device driver for the LAN9118 network adaptor as featured on the
|
||||
PBX-A9 platform.
|
||||
|
||||
:'os/src/drivers/nic/gem':
|
||||
Device driver for Cadence EMAC PS network adaptor as featured on the
|
||||
Xilinx Zynq.
|
||||
|
||||
:'dde_ipxe/src/drivers/nic':
|
||||
Device drivers ported from the iPXE project. Supported devices are Intel
|
||||
E1000 and pcnet32.
|
||||
@@ -281,19 +265,12 @@ defined at 'os/include/nic_session'.
|
||||
General-purpose I/O drivers
|
||||
===========================
|
||||
|
||||
:'os/src/drivers/gpio/spec/omap4':
|
||||
Driver for accessing the GPIO pins of OMAP4 platforms.
|
||||
|
||||
:'os/src/drivers/gpio/spec/imx53':
|
||||
Driver for accessing the GPIO pins of i.MX53 platforms.
|
||||
|
||||
:'os/src/drivers/gpio/spec/rpi':
|
||||
Driver for accessing the GPIO pins of Raspberry Pi platforms.
|
||||
|
||||
:'os/src/drivers/gpio/spec/exynos5':
|
||||
Driver for accessing the GPIO pins of Exynos4 platforms, e.g.,
|
||||
Odroid-X2.
|
||||
|
||||
|
||||
Resource multiplexers
|
||||
#####################
|
||||
@@ -301,13 +278,14 @@ Resource multiplexers
|
||||
By convention, resource multiplexers are located at the 'src/server'
|
||||
subdirectory of a source repository.
|
||||
|
||||
:Framebuffer and input: The framebuffer and input session interfaces can be
|
||||
multiplexed using the Nitpicker GUI server, which allows multiple clients to
|
||||
create and manage rectangular areas on screen. Nitpicker uses one input
|
||||
session and one framebuffer session as back end and, in turn, provides
|
||||
so-called nitpicker sessions to one or multiple clients. Each nitpicker
|
||||
session contains a virtual framebuffer and a virtual input session. Nitpicker
|
||||
(including a README file) is located at 'os/src/server/nitpicker'.
|
||||
:Framebuffer and input: Framebuffer and input devices can be multiplexed using
|
||||
the Nitpicker GUI server, which allows multiple clients to create and manage
|
||||
rectangular areas on screen. Nitpicker serves as broker between input
|
||||
devices, output devices, and graphical applications. It provides an event
|
||||
service for input drivers, a capture service for output drivers, and a GUI
|
||||
service for the applications. Each GUI session contains a virtual
|
||||
framebuffer and a virtual input interface. Nitpicker (including a README
|
||||
file) is located at 'os/src/server/nitpicker'.
|
||||
|
||||
:Audio output: The audio mixer located at 'os/src/server/mixer' enables
|
||||
multiple clients to use the audio-out interface. The mixing is done by simply
|
||||
@@ -319,14 +297,21 @@ subdirectory of a source repository.
|
||||
the physical network. DHCP requests originating from the virtual NIC sessions
|
||||
are delegated to the physical network.
|
||||
|
||||
The NIC router located at 'os/src/server/nic_router' multiplexes one NIC
|
||||
session to multiple virtual NIC sessions by applying network address
|
||||
translation (NAT).
|
||||
|
||||
:Block: The block-device partition server at 'os/src/server/part_block' reads
|
||||
the partition table of a block session and exports each partition found as
|
||||
separate block session. For using this server, please refer to the run
|
||||
script at 'os/run/part_block'.
|
||||
|
||||
:File system: The FAT file-system service allows multiple clients to
|
||||
concurrently access the same FAT-formatted block device. It is located
|
||||
at 'libports/src/server/fatfs_fs' and supports FAT, FAT32, and exFAT.
|
||||
:File system: The VFS file-system server allows multiple clients to
|
||||
concurrently access the same virtual file system. It is located at
|
||||
'os/src/server/vfs'. The VFS can be assembled out of several builtin
|
||||
file-system types (like a RAM file system, or pseudo file systems for
|
||||
various Genode session interfaces) as well as external plugins such as rump
|
||||
(mounting file systems supported by the NetBSD kernel).
|
||||
|
||||
:Terminal: The terminal_mux service located at gems/src/server/terminal_mux
|
||||
is able to provide multiple terminal sessions over one terminal-client
|
||||
@@ -340,23 +325,24 @@ Protocol stacks
|
||||
Protocol stacks come either in the form of separate components that translate
|
||||
one session interface to another, or in the form of libraries.
|
||||
|
||||
Separate components:
|
||||
Separate components
|
||||
===================
|
||||
|
||||
:'os/src/server/nit_fb':
|
||||
Translates a nitpicker session to a pair of framebuffer and input sessions.
|
||||
Each 'nit_fb' instance is visible as a rectangular area on screen presenting
|
||||
:'os/src/server/gui_fb':
|
||||
Translates a GUI session to a pair of framebuffer and input sessions.
|
||||
Each 'gui_fb' instance is visible as a rectangular area on screen presenting
|
||||
a virtual frame buffer. The area is statically positioned. For more
|
||||
information, please refer to 'os/src/server/nit_fb/README'.
|
||||
information, please refer to 'os/src/server/gui_fb/README'.
|
||||
|
||||
:'gems/src/server/wm':
|
||||
Window manager that implements the nitpicker session interface but manages
|
||||
Window manager that implements the GUI session interface but manages
|
||||
each client view as a separate window. The window decorations are provided
|
||||
by a so-called decorator (e.g., 'gems/src/app/decorator'). The behaviour
|
||||
is defined by a so-called window layouter such as the floating window
|
||||
layouter located at 'gems/src/app/floating_window_layouter/'.
|
||||
|
||||
:'demo/src/server/liquid_framebuffer':
|
||||
Implements the same translation as 'nit_fb' but by presenting an interactive
|
||||
Implements the same translation as 'gui_fb' but by presenting an interactive
|
||||
window rather than a statically positioned screen area.
|
||||
|
||||
:'os/src/server/tar_rom':
|
||||
@@ -367,21 +353,10 @@ Separate components:
|
||||
Provides each file of an ISO9660 file system accessed via a block session as
|
||||
separate ROM session.
|
||||
|
||||
:'os/src/server/ram_fs':
|
||||
A file-system implementation that keeps all data in memory.
|
||||
|
||||
:'dde_rump/src/server/rump_fs':
|
||||
A file-system server that contains various file-systems ported from the
|
||||
NetBSD kernel.
|
||||
|
||||
:'os/src/server/lx_fs':
|
||||
A file system server that makes the file system of a Linux base platform
|
||||
available to Genode.
|
||||
|
||||
:'os/src/server/trace_fs':
|
||||
A pseudo file system that can be used as a front end to core's TRACE
|
||||
service.
|
||||
|
||||
:'os/src/server/rom_block':
|
||||
Provides the content of a ROM file as a block session, similar to the
|
||||
loop-mount mechanism on Linux
|
||||
@@ -400,8 +375,7 @@ Separate components:
|
||||
Adapter that writes LOG messages to files on a file system.
|
||||
|
||||
:'demo/src/server/nitlog':
|
||||
Provides a LOG session, printing log output on screen via a nitpicker
|
||||
session.
|
||||
Provides a LOG session, printing log output on screen via a GUI session.
|
||||
|
||||
:'os/src/app/rom_logger':
|
||||
The rom_logger component requests a ROM session and writes the
|
||||
@@ -413,9 +387,6 @@ Separate components:
|
||||
switching between configuration variants dependent on the state of
|
||||
the system.
|
||||
|
||||
:'os/src/server/vfs':
|
||||
A file-system server using the VFS library and plugins as backend.
|
||||
|
||||
:'os/src/server/log_terminal':
|
||||
Forwards terminal output to a LOG session.
|
||||
|
||||
@@ -444,6 +415,15 @@ Separate components:
|
||||
up an equally named file on the file system.
|
||||
Please refer to 'os/src/server/fs_rom' for more information.
|
||||
|
||||
For use cases where ROMs are known to be static, the
|
||||
'os/src/server/cached_fs_rom' can be considered as a faster alternative to
|
||||
the regular 'fs_rom' server. Note that 'cached_fs_rom' is not supported
|
||||
in base-linux though.
|
||||
|
||||
:'os/src/server/chroot':
|
||||
An intermediate file-system server that makes a sub directory of a file
|
||||
system available as the root of a file system handed out to its client.
|
||||
|
||||
:'os/src/server/dynamic_rom':
|
||||
A simple ROM service that provides ROM modules that change in time according
|
||||
to a configured timeline.
|
||||
@@ -461,36 +441,67 @@ Separate components:
|
||||
is then propagated to the clients of the ROM service according to a
|
||||
configurable information-flow policy.
|
||||
|
||||
:'ports/src/app/openvpn':
|
||||
OpenVPN enables access to remote network resources through a secure tunnel
|
||||
by providing an encrypted connection to a remote host. It is plugged between
|
||||
NIC server (such as a network driver) and NIC client.
|
||||
:'os/src/server/event_filter':
|
||||
A component that transforms and merges input events from multiple sources
|
||||
into a single event stream.
|
||||
|
||||
:'os/src/server/input_merger':
|
||||
A component that merges input events from multiple sources into a single
|
||||
stream.
|
||||
|
||||
:'libports/src/server/acpi_input':
|
||||
:'libports/src/app/acpi_event':
|
||||
A component that transforms ACPI events into Genode input events.
|
||||
|
||||
:'gems/src/server/nit_fader':
|
||||
A wrapper for nitpicker's session interface that applies alpha-blending to
|
||||
the of views a nitpicker client.
|
||||
:'gems/src/server/gui_fader':
|
||||
A wrapper for nitpicker's GUI session interface that applies alpha-blending
|
||||
to the of views a GUI client.
|
||||
|
||||
Libraries:
|
||||
|
||||
VFS plugins
|
||||
===========
|
||||
|
||||
VFS plugins are file-system drivers in the form of shared libraries that
|
||||
implement the VFS-plugin interface. They can be combined with any application
|
||||
based on Genode's C runtime, with the VFS server, and with non-POSIX
|
||||
components that use the Genode's VFS library directly.
|
||||
|
||||
:'gems/src/lib/vfs/trace':
|
||||
A VFS plugin that makes core's TRACE service accessible as a pseudo
|
||||
file system.
|
||||
|
||||
:'gems/src/lib/vfs/import':
|
||||
A VFS plugin that pre-populates a VFS with initial content.
|
||||
|
||||
:'gems/src/lib/vfs/pipe':
|
||||
A VFS plugin that provides bi-directional pipes for exchanging streamed
|
||||
data between components.
|
||||
|
||||
:'gems/src/lib/vfs/ttf':
|
||||
A VFS plugin that makes rendered pixel data of the glyphs of Truetype fonts
|
||||
available as a pseudo file system.
|
||||
|
||||
:'libports/src/lib/vfs/jitterentropy':
|
||||
A VFS plugin that provides random numbers based on the jitter of executing
|
||||
CPU instructions.
|
||||
|
||||
:'libports/src/lib/vfs/lwip':
|
||||
A VFS plugin that uses the light-weight IP (lwIP) stack to provide a
|
||||
network socket interface as a pseudo file system.
|
||||
|
||||
:'dde_linux/src/lib/vfs/lxip':
|
||||
A VFS plugin that uses the TCP/IP stack ported from the Linux kernel to
|
||||
provide a network socket interface as a pseudo file system.
|
||||
|
||||
:'libports/src/lib/vfs/fatfs':
|
||||
A VFS plugin that allows for the mounting of FAT-formatted block devices.
|
||||
|
||||
:'dde_rump/src/lib/vfs/rump':
|
||||
A VFS plugin that enables the use of NetBSD's file-system drivers such
|
||||
as ext2 or msdos.
|
||||
|
||||
|
||||
Libraries
|
||||
=========
|
||||
|
||||
:'libports/lib/mk/libc':
|
||||
C runtime ported from FreeBSD.
|
||||
|
||||
:'libports/lib/mk/libc_fatfs':
|
||||
Accesses files on a block device that contains a FAT32 file system.
|
||||
|
||||
:'libports/lib/mk/libc_fuse_exfat':
|
||||
Accesses files on a block device that contains an exFAT file system.
|
||||
|
||||
:'libports/lib/mk/libc_fuse_ext2':
|
||||
Accesses files on a block device that contains an ext2 file system.
|
||||
|
||||
:'libports/lib/mk/stdcxx':
|
||||
Standard C++ library
|
||||
|
||||
@@ -498,30 +509,15 @@ Libraries:
|
||||
Mesa OpenGL API with backends for software rasterization (egl_swrast)
|
||||
and Intel Graphics (egl_i965)
|
||||
|
||||
:'libports/lib/mk/pthread':
|
||||
Subset of the POSIX thread and semaphore API.
|
||||
|
||||
:'libports/lib/mk/python':
|
||||
Runtime of the Python scripting language.
|
||||
|
||||
:'libports/lib/mk/mupdf':
|
||||
PDF rendering engine.
|
||||
|
||||
:'libports/lib/mk/sdl':
|
||||
Translates the libSDL API to framebuffer and input sessions.
|
||||
|
||||
:'libports/lib/mk/ncurses':
|
||||
Library for implementing pseudo-graphical applications (i.e., VIM) that
|
||||
run on a text terminal.
|
||||
|
||||
:'libports/lib/mk/avcodec':
|
||||
A library for video decoding, conversion, and streaming.
|
||||
|
||||
:'libports/lib/mk/lua':
|
||||
Runtime for the Lua scripting language.
|
||||
|
||||
:'libports/lib/mk/qt5_*':
|
||||
Qt5 framework, using nitpicker session and NIC session as back end.
|
||||
Qt5 framework, using GUI session and NIC session as back end.
|
||||
|
||||
:'libports/lib/mk/vfs_jitterentropy.mk':
|
||||
A VFS plugin that makes a jitter-based random-number generator available
|
||||
@@ -550,16 +546,14 @@ subdirectory of a repository. Most applications come with README files
|
||||
located in their respective directory.
|
||||
|
||||
:'gems/src/app/backdrop':
|
||||
Nitpicker client application that sets a composition of PNG images as
|
||||
desktop background.
|
||||
GUI client application that sets a composition of PNG images as desktop
|
||||
background.
|
||||
|
||||
:'demo/src/app/launchpad':
|
||||
Graphical application for interactively starting and killing subsystems.
|
||||
|
||||
:'gems/app/launcher': Graphical launcher of Genode subsystems.
|
||||
|
||||
:'os/app/cli_monitor': Command-line-based launcher of Genode subsystems.
|
||||
|
||||
:'demo/src/app/scout':
|
||||
Graphical hypertext browser used for Genode's default demonstration scenario.
|
||||
|
||||
@@ -603,6 +597,7 @@ located in their respective directory.
|
||||
:'os/src/app/log_core':
|
||||
Component transforming core and kernel output to Genode LOG output.
|
||||
|
||||
|
||||
Package-management components
|
||||
=============================
|
||||
|
||||
@@ -629,10 +624,6 @@ Package-management components
|
||||
Runtime environments
|
||||
####################
|
||||
|
||||
:'ports/src/noux': Noux is an experimental implementation of a UNIX-like API
|
||||
that enables the use of unmodified command-line based GNU software. For using
|
||||
noux, refer to the run script 'ports/run/noux.run'.
|
||||
|
||||
:'ports/src/app/seoul': Seoul is a virtual-machine monitor developed for
|
||||
the use with the NOVA platform. It virtualizes 32bit x86 PC hardware
|
||||
including various peripherals.
|
||||
@@ -641,7 +632,9 @@ Runtime environments
|
||||
of Genode subsystems via a session interface. For further information,
|
||||
refer to 'os/src/server/loader/README'.
|
||||
|
||||
:'ports/src/app/dosbox': A port of DosBox for executing DOS software.
|
||||
|
||||
:'ports/src/virtualbox': VirtualBox running on top of the NOVA hypervisor.
|
||||
|
||||
:'os/src/server/vmm': A virtual machine monitor that is based on
|
||||
hardware-assisted virtualization of ARM platforms. It is supported on
|
||||
the base-hw kernel only.
|
||||
|
||||
|
||||
@@ -140,7 +140,7 @@ permission to let Genode Labs redistribute his contributions under non-AGPLv3
|
||||
licenses. This permission is granted by signing the Genode Contributors
|
||||
Agreement:
|
||||
|
||||
:[http:gca.pdf - Genode Contributor's Agreement]:
|
||||
:[https://genode.org/community/gca.pdf - Genode Contributor's Agreement]:
|
||||
Genode Contributor's Agreement (GCA)
|
||||
|
||||
By signing the GCA, you don't lose any rights for your contribution. However,
|
||||
|
||||
133
doc/news.txt
133
doc/news.txt
@@ -4,6 +4,109 @@
|
||||
===========
|
||||
|
||||
|
||||
Genode OS Framework release 20.08 | 2020-08-28
|
||||
##############################################
|
||||
|
||||
| With Genode 20.08, the low-level GUI stack underwent a profound redesign,
|
||||
| the Chromium web engine comes to life, the i.MX8 support covers clock and
|
||||
| power management, and the CBE block encrypter becomes highly modular.
|
||||
|
||||
The most stunning feature of Genode 20.08 is most certainly the new ability
|
||||
to host the Chromium web engine as native component in the form of the Falkon
|
||||
web browser. This long-time project involved overcoming countless road
|
||||
blocks along the way to the great benefit of Genode's users at large: building
|
||||
bridges between 3rd-party build systems and Genode, covering seemingly obscure
|
||||
corner cases of POSIX, solving instruction-cache invalidation issues on ARM -
|
||||
just to name a few.
|
||||
|
||||
Under the hood, we took the release cycle as opportunity to tackle a major
|
||||
surgery of the low-level GUI stack that we planned for more than two years.
|
||||
The architectural change lays the groundwork for swapping out graphics and
|
||||
input drivers on the fly without reboot. It also paves the ground for features
|
||||
like screen capturing and remote desktop scenarios in a privacy-protecting
|
||||
way.
|
||||
|
||||
On our mission of bringing the driver support for the 64-bit ARM-based i.MX8
|
||||
SoC on par with our driver coverage on Intel PCs, the release introduces a
|
||||
platform driver specifically for this SoC that covers clock and power
|
||||
management. One step closer to using Sculpt OS on the MNT Reform laptop.
|
||||
|
||||
Furthermore, Genode's custom block encrypter called CBE received continuous
|
||||
development. In particular, the cryptographic algorithm and trust anchor
|
||||
have become pluggable modules. This will allow for tailoring the CBE to
|
||||
custom products - like hardware trust anchors - without changing its
|
||||
implementation.
|
||||
|
||||
These and many more improvements are covered in detail in the
|
||||
[https:/documentation/release-notes/20.08 - release documentation of version 20.08...]
|
||||
|
||||
|
||||
Genode OS Framework release 20.05 | 2020-05-28
|
||||
##############################################
|
||||
|
||||
| Version 20.05 wraps up the consolidation of Noux with the C runtime,
|
||||
| advances the device-driver infrastructure and virtualization support on ARM,
|
||||
| reaches feature-completion of our block encryptor, and leverages seccomp for
|
||||
| sandboxing components on top of Linux.
|
||||
|
||||
It has become almost a tradition to dedicate the spring release to topics
|
||||
under the hood of the Genode OS framework, taking the time for careful
|
||||
consolidation, and architectural improvements.
|
||||
|
||||
On the latter account, the Linux version gained an architectural revamp of its
|
||||
inter-component communication model, leveraging the combination of the
|
||||
seccomp and epoll kernel mechanisms to enable Genode's capability-based
|
||||
security concept on this kernel. The new version applies strict sandboxing
|
||||
to each component individually. In particular, the host file system is
|
||||
shielded from Genode components and Genode's least-privilege access-control
|
||||
scheme comes into effect.
|
||||
|
||||
As the second prominent architectural topic, the release features new
|
||||
device-driver infrastructure for the ARM universe along with a unified
|
||||
version of the formerly distinct virtual machine monitors for ARMv7 and
|
||||
ARMv8. These are important steps to bring Genode on ARM to parity with the
|
||||
x86 version.
|
||||
|
||||
Further highlights of the release are the first feature-complete version
|
||||
of our custom block-encryption component, the improved management of CPU
|
||||
affinities on x86, and new tracing utilities. Last but not least, the
|
||||
release is accompanied with an updated version of the Genode Foundations
|
||||
book, reflecting the changes of the framework since one year ago.
|
||||
|
||||
Read the details of the new release in the
|
||||
[https:/documentation/release-notes/20.05 - release documentation of version 20.05...]
|
||||
|
||||
|
||||
Sculpt OS release 20.02 | 2020-03-10
|
||||
####################################
|
||||
|
||||
| Version 20.02 of the Sculpt operating system revisits the administrative
|
||||
| user interface for a more intuitive and logical user experience.
|
||||
|
||||
With the release of Sculpt version 20.02, we follow our
|
||||
[https://genode.org/about/road-map - roadmap's] mission to make Sculpt OS
|
||||
easier to approach. In particular, we
|
||||
[https://genodians.org/nfeske/2020-01-06-pending-sculpt-ui - identified] the
|
||||
reliance on a command-line interface as a potential barrier of entry. As
|
||||
Sculpt OS is not a Unix-like system, it should not require any Unix know-how
|
||||
from the user. To relieve users from this burden, Sculpt 20.02 introduces
|
||||
a custom graphical file browser and editor that can be used for interactively
|
||||
inspecting and tweaking the state of the system. The traditional command-line
|
||||
interface is still present as a fallback for advanced tasks though.
|
||||
The updated [https://genode.org/documentation/articles/sculpt-20-02 - manual]
|
||||
goes into detail about the use of the new system.
|
||||
|
||||
Thanks to the work of seasoned Genode developers, many software packages are
|
||||
already available for the new version. These include virtual machine monitors
|
||||
like VirtualBox, performance-monitoring tools, GUI components, Genode's custom
|
||||
Unix runtime, and several applications and games. In particular, the software
|
||||
depots offered by alex-ab, cnuke, skalk are worth exploring.
|
||||
The ready-to-use system image for version 20.02 can be obtained from the
|
||||
[https://genode.org/download/sculpt - Sculpt download page] and is
|
||||
accompanied by matching
|
||||
[https://genode.org/documentation/articles/sculpt-20-02 - documentation].
|
||||
|
||||
|
||||
Genode OS Framework release 20.02 | 2020-02-28
|
||||
##############################################
|
||||
|
||||
@@ -240,7 +343,7 @@ about the articles, readers are invited to the new
|
||||
[https://reddit.com/r/genode - /r/genode] subreddit.
|
||||
|
||||
As written in the
|
||||
[http://genodians.org/nfeske/2019-01-07-welcome - initial posting],
|
||||
[https://genodians.org/nfeske/2019-01-07-welcome - initial posting],
|
||||
Genode users and developers are warmly invited to join the authors at
|
||||
Genodians.org!
|
||||
|
||||
@@ -1046,7 +1149,7 @@ The story behind Genode's TrustZone demo on the USB Armory | 2015-12-08
|
||||
| Our latest article provides a look behind the scenes of the
|
||||
| development of Genode's support for the USB Armory platform.
|
||||
|
||||
The [http://inversepath.com/usbarmory - USB Armory] is a computer in the form
|
||||
The [https://inversepath.com/usbarmory - USB Armory] is a computer in the form
|
||||
of a USB stick. It normally runs Linux. But thanks to the ARM TrustZone
|
||||
capabilities of the device, it is possible to run Genode behind the back of
|
||||
Linux. This is useful for shielding sensitive information like cryptographic
|
||||
@@ -1060,7 +1163,7 @@ was splitting the hardware platform into two worlds while maintaining the
|
||||
full functionality of Linux. The article goes on to explain the interplay
|
||||
between the secure world (Genode) and the normal world (Linux). Furthermore,
|
||||
it provides all the pointers needed to reproduce the scenario.
|
||||
[http:/documentation/articles/usb_armory - Read the article...]
|
||||
[https://genode.org/documentation/articles/usb_armory - Read the article...]
|
||||
|
||||
|
||||
Genode OS Framework release 15.11 | 2015-11-30
|
||||
@@ -2239,7 +2342,7 @@ for our dual-licensing business model. If we made Genode available under the
|
||||
BSD license, there would be not point in pursuing this model. However, hiding
|
||||
the development process from the public is not only poor-spirited but it
|
||||
creates an artificial barrier for people who want to participate. The book
|
||||
"Producing Open Source Software" (http://producingoss.com) by Karl Fogel was an
|
||||
"Producing Open Source Software" (https://producingoss.com) by Karl Fogel was an
|
||||
eye opener to us.
|
||||
|
||||
Regarding the efficiency of collaboration, I have to admit that the statement
|
||||
@@ -2337,7 +2440,7 @@ new support of L4Android on Genode, Android can be used on Genode on the
|
||||
Fiasco.OC kernel on the IA32 architecture. For those of you who are eager to
|
||||
experiment with L4Android on Genode, please find further information at the
|
||||
top-level
|
||||
[http://genode.svn.sourceforge.net/viewvc/genode/trunk/ports-foc/README - README]
|
||||
[https://genode.svn.sourceforge.net/viewvc/genode/trunk/ports-foc/README - README]
|
||||
file of the 'ports-foc' repository and share your results with us at the
|
||||
[https:/community/mailing-lists - Genode mailing list].
|
||||
|
||||
@@ -2452,17 +2555,17 @@ concepts live. The talk was recorded at the
|
||||
Amsterdam. Thanks to Bas the Lange for publishing the material.
|
||||
|
||||
: <object height="385" width="480">
|
||||
: <param name="movie" value="http://www.youtube.com/v/Z1IMV3FJO7Q" />
|
||||
: <param name="movie" value="https://www.youtube.com/v/Z1IMV3FJO7Q" />
|
||||
: <param name="allowFullScreen" value="true" />
|
||||
: <param name="allowscriptaccess" value="always" />
|
||||
: <embed width="480" height="385" allowfullscreen="true"
|
||||
: allowscriptaccess="always"
|
||||
: type="application/x-shockwave-flash"
|
||||
: src="http://www.youtube.com/v/Z1IMV3FJO7Q">
|
||||
: src="https://www.youtube.com/v/Z1IMV3FJO7Q">
|
||||
: </embed>
|
||||
: </object>
|
||||
|
||||
[http://www.youtube.com/watch?v=Z1IMV3FJO7Q - Visit the YouTube page...]
|
||||
[https://www.youtube.com/watch?v=Z1IMV3FJO7Q - Visit the YouTube page...]
|
||||
|
||||
|
||||
Genode OS Framework release 11.02 | 2011-02-24
|
||||
@@ -2519,17 +2622,17 @@ prepared the following screencast with a guided walk-through. Enjoy!
|
||||
|
||||
: <object height="385" width="480">
|
||||
: <param name="movie"
|
||||
: value="http://www.youtube.com/v/CJdWOmajo_8?fs=1&hl=en_US" />
|
||||
: value="https://www.youtube.com/v/CJdWOmajo_8?fs=1&hl=en_US" />
|
||||
: <param name="allowFullScreen" value="true" />
|
||||
: <param name="allowscriptaccess" value="always" />
|
||||
: <embed width="480" height="385"
|
||||
: src="http://www.youtube.com/v/CJdWOmajo_8?fs=1&hl=en_US"
|
||||
: src="https://www.youtube.com/v/CJdWOmajo_8?fs=1&hl=en_US"
|
||||
: type="application/x-shockwave-flash" allowscriptaccess="always"
|
||||
: allowfullscreen="true">
|
||||
: </embed>
|
||||
: </object>
|
||||
|
||||
[http://www.youtube.com/watch?v=CJdWOmajo_8 - Visit the YouTube page...]
|
||||
[https://www.youtube.com/watch?v=CJdWOmajo_8 - Visit the YouTube page...]
|
||||
|
||||
[https:/download/live-cds - Download the real thing...]
|
||||
|
||||
@@ -2928,13 +3031,13 @@ for graphics, input devices, and sound. It is often used as back end for games,
|
||||
emulators, and media players. Also the Linux version of Genode relies on the
|
||||
hardware abstractions provided by libSDL.
|
||||
|
||||
As [http://sourceforge.net/mailarchive/message.php?msg_id=21406424 - announced on the Genode mailing list],
|
||||
As [https://sourceforge.net/mailarchive/message.php?msg_id=21406424 - announced on the Genode mailing list],
|
||||
libSDL has been ported to Genode. At the current stage, the port supports
|
||||
the video subsystem and the input handling for mouse and keyboard. With
|
||||
libSDL now becoming available for Genode, it becomes much easier to make the
|
||||
wealth of libSDL-based applications available on our platform.
|
||||
|
||||
[http://sourceforge.net/mailarchive/message.php?msg_id=21406424 - Read the announcement...]
|
||||
[https://sourceforge.net/mailarchive/message.php?msg_id=21406424 - Read the announcement...]
|
||||
|
||||
|
||||
Genode on the L4ka::Pistachio kernel | 2008-12-18
|
||||
@@ -3086,7 +3189,7 @@ Project website launched | 2008-07-29
|
||||
| Genode OS framework is scheduled for the 6th of August.
|
||||
|
||||
Today, we proudly launched the website of the Genode project
|
||||
[https://www.genode.org - https://www.genode.org]. This website is the central
|
||||
[https://genode.org - https://genode.org]. This website is the central
|
||||
resource for people using or developing the Genode OS framework. It covers
|
||||
the latest news about our progress, architectural and technical documentation,
|
||||
a community-maintained wiki, mailing lists, information on accessing the
|
||||
@@ -3095,7 +3198,7 @@ attention of people who want bring forward the project together with us.
|
||||
|
||||
We have scheduled the first official release of the Genode OS framework for the
|
||||
6th August. Until then, we invite you to test-drive the beta-version of the
|
||||
framework as provided at the [https://www.genode.org/download - download].
|
||||
framework as provided at the [https://genode.org/download - download].
|
||||
|
||||
|
||||
Genode Labs founded | 2008-07-17
|
||||
|
||||
@@ -110,7 +110,7 @@ above becomes as simple as:
|
||||
!/* invoke remote procedure */
|
||||
!Capability ds_csp = rom.dataspace();
|
||||
|
||||
[http://genode.org/documentation/api/base_index#Connecting_to_services - See the API documentation for the connection template...]
|
||||
[https://genode.org/documentation/api/base_index#Connecting_to_services - See the API documentation for the connection template...]
|
||||
|
||||
|
||||
Typed capabilities
|
||||
@@ -134,7 +134,7 @@ classes at the client side.
|
||||
From the application-developer's perspective, working with capabilities
|
||||
has now become type-safe, making the produced code more readable and robust.
|
||||
|
||||
[http://genode.org/documentation/api/base_index#Capability_representation - See the updated API documentation for the capability representation...]
|
||||
[https://genode.org/documentation/api/base_index#Capability_representation - See the updated API documentation for the capability representation...]
|
||||
|
||||
|
||||
Fifo data structure
|
||||
@@ -146,7 +146,7 @@ first-out semantics. For such use cases, we introduced a dedicated
|
||||
'Fifo' template. The main motivation for introducing 'Fifo' into the
|
||||
base API is the new semaphore described below.
|
||||
|
||||
[http://genode.org/documentation/api/base_index#Structured_data_types - See the new API documentation for the fifo template...]
|
||||
[https://genode.org/documentation/api/base_index#Structured_data_types - See the new API documentation for the fifo template...]
|
||||
|
||||
|
||||
Semaphore
|
||||
@@ -163,7 +163,7 @@ and added the semaphore to Genode's official base API. We have made
|
||||
the wake-up policy in the presence of multiple consumers configurable
|
||||
via a template argument. The default policy is first-in-first-out.
|
||||
|
||||
[http://genode.org/documentation/api/base_index#Synchronization - See the new API documentation for the semaphore...]
|
||||
[https://genode.org/documentation/api/base_index#Synchronization - See the new API documentation for the semaphore...]
|
||||
|
||||
Thanks to Christian Prochaska for his valuable contributions to the new
|
||||
semaphore design.
|
||||
@@ -221,7 +221,7 @@ would have to be queued at the transmitter.
|
||||
Image [signals] illustrates the roles of signaller thread,
|
||||
transmitter, receiver, and signal-handler thread.
|
||||
|
||||
[http://genode.org/documentation/api/base_index#Asynchronous_notifications - See the new API documentation for asynchronous notifications...]
|
||||
[https://genode.org/documentation/api/base_index#Asynchronous_notifications - See the new API documentation for asynchronous notifications...]
|
||||
|
||||
The current generic implementation of the signalling API employs one
|
||||
thread at each transmitter and one thread at each receiver. Because
|
||||
@@ -422,27 +422,27 @@ the API.
|
||||
Christian Helmuth created the initial version of the Linux device-driver
|
||||
environment for L4. He describes his effort of reusing unmodified sound
|
||||
drivers on the L4 platform in his thesis
|
||||
[http://os.inf.tu-dresden.de/papers_ps/helmuth-diplom.pdf - Generische Portierung von Linux-Gerätetreibern auf die DROPS-Architektur].
|
||||
[https://os.inf.tu-dresden.de/papers_ps/helmuth-diplom.pdf - Generische Portierung von Linux-Gerätetreibern auf die DROPS-Architektur].
|
||||
;
|
||||
Gerd Griessbach approached the problem of re-using Linux USB drivers
|
||||
by following the DDE approach in his diploma thesis
|
||||
[http://os.inf.tu-dresden.de/papers_ps/griessbach-diplom.pdf - USB for DROPS].
|
||||
[https://os.inf.tu-dresden.de/papers_ps/griessbach-diplom.pdf - USB for DROPS].
|
||||
;
|
||||
Marek Menzer adapted Linux DDE to Linux 2.6 and explored the DDE
|
||||
approach for block-device drivers in his student research project
|
||||
[http://os.inf.tu-dresden.de/papers_ps/menzer-beleg.pdf - Portierung des DROPS Device Driver Environment (DDE) für Linux 2.6 am Beispiel des IDE-Treibers ]
|
||||
[https://os.inf.tu-dresden.de/papers_ps/menzer-beleg.pdf - Portierung des DROPS Device Driver Environment (DDE) für Linux 2.6 am Beispiel des IDE-Treibers ]
|
||||
and his diploma thesis
|
||||
[http://os.inf.tu-dresden.de/papers_ps/menzer-diplom.pdf - Entwicklung eines Blockgeräte-Frameworks für DROPS].
|
||||
[https://os.inf.tu-dresden.de/papers_ps/menzer-diplom.pdf - Entwicklung eines Blockgeräte-Frameworks für DROPS].
|
||||
;
|
||||
Thomas Friebel generalized the DDE approach and introduced the DDE kit
|
||||
API to enable the re-use of device driver from other platforms than
|
||||
Linux. In particular, he experimented with the block-device drivers of
|
||||
FreeBSD in his diploma thesis
|
||||
[http://os.inf.tu-dresden.de/papers_ps/friebel-diplom.pdf - Übertragung des Device-Driver-Environment-Ansatzes auf Subsysteme des BSD-Betriebssystemkerns].
|
||||
[https://os.inf.tu-dresden.de/papers_ps/friebel-diplom.pdf - Übertragung des Device-Driver-Environment-Ansatzes auf Subsysteme des BSD-Betriebssystemkerns].
|
||||
;
|
||||
Dirk Vogt successfully re-approached the port of USB device drivers
|
||||
from the Linux kernel to L4 in his student research project
|
||||
[http://os.inf.tu-dresden.de/papers_ps/beleg-vogt.pdf - USB for the L4 Environment].
|
||||
[https://os.inf.tu-dresden.de/papers_ps/beleg-vogt.pdf - USB for the L4 Environment].
|
||||
|
||||
The current incarnation of the DDE kit API provides the following
|
||||
features:
|
||||
@@ -556,7 +556,7 @@ source-code repository called 'libc' and is based on the code of FreeBSD.
|
||||
The original code is available at the official FreeBSD website.
|
||||
|
||||
:FreeBSD website:
|
||||
[http://www.freebsd.org/developers/cvs.html]
|
||||
[https://www.freebsd.org/developers/cvs.html]
|
||||
|
||||
Our libc port comprises the libraries 'gdtoa', 'gen', 'locale', 'stdio',
|
||||
'stdlib', 'stdtime', 'string', and 'msun'. Currently, it supports the
|
||||
|
||||
@@ -28,7 +28,7 @@ supported base platforms.
|
||||
|
||||
Our original plan for the release 9.02 also comprised the support of a
|
||||
Linux-on-Genode (para-)virtualization solution. Initially, we intended to
|
||||
make [http://os.inf.tu-dresden.de/L4/LinuxOnL4/ - L4Linux] available on
|
||||
make [https://os.inf.tu-dresden.de/L4/LinuxOnL4/ - L4Linux] available on
|
||||
the L4/Fiasco version of Genode. However, we identified several downsides
|
||||
with this approach. Apparently, the development of the officially available
|
||||
version of L4/Fiasco has become slow and long-known issues remain unfixed.
|
||||
@@ -41,7 +41,7 @@ and VT support) that we want to explore. Furthermore, there exists another
|
||||
version of L4Linux called OKLinux for the OKL4 kernel developed at
|
||||
[http://ok-labs.com - OK-Labs], which is very interesting as well.
|
||||
Therefore, we decided against an ad-hoc solution and deferred this feature
|
||||
to the next release. [http:/about/road-map - See our updated road map...]
|
||||
to the next release. [https://genode.org/about/road-map - See our updated road map...]
|
||||
|
||||
|
||||
Major new Features
|
||||
@@ -126,7 +126,7 @@ effort is included in this release and comes in the form of the
|
||||
:Further details:
|
||||
|
||||
You can find further technical details and usage instructions at this
|
||||
dedicated [http://genode.org/documentation/platforms/pistachio - page].
|
||||
dedicated [https://genode.org/documentation/platforms/pistachio - page].
|
||||
|
||||
|
||||
Qt4 on Genode
|
||||
@@ -331,7 +331,7 @@ Device-Driver-Environment Kit
|
||||
|
||||
Because of the apparent stabilization of the DDE Kit API, we have now added
|
||||
this API to Genode's official API reference.
|
||||
[http://genode.org/documentation/api/dde_kit_index - See the documentation of the DDE Kit API...]
|
||||
[https://genode.org/documentation/api/dde_kit_index - See the documentation of the DDE Kit API...]
|
||||
|
||||
|
||||
PS/2 input driver
|
||||
@@ -413,7 +413,7 @@ gcc 4.2.4.
|
||||
|
||||
As an alternative to installing the tool chain from source, we also
|
||||
provide pre-compiled binaries at the download section of our website.
|
||||
[http://genode.org/download/tool-chain - Visit our tool-chain download website...]
|
||||
[https://genode.org/download/tool-chain - Visit our tool-chain download website...]
|
||||
|
||||
For the Linux version of Genode, we still use the host's default gcc
|
||||
as tool chain. This way, we spare the hassle of downloading and installing
|
||||
|
||||
@@ -19,7 +19,7 @@ The previous Genode release was accompanied by a source-code archive containing
|
||||
the initial version of Qt4 for Genode. Our approach is to make the Qt4
|
||||
framework available for building Genode applications running natively on the
|
||||
microkernel rather than within a virtualization environment. As advertised in
|
||||
our [http://genode.org/about/road-map - road map], we have now seamlessly
|
||||
our [https://genode.org/about/road-map - road map], we have now seamlessly
|
||||
integrated the Qt4 framework into our mainline source tree. Furthermore, we
|
||||
have adapted our port to the Qt4 version 4.5.1. Section [Integration of Qt4
|
||||
into the mainline repository] gives a rough overview of the changes and an
|
||||
@@ -152,7 +152,7 @@ L4 kernels.
|
||||
These differences of OKL4 compared with the microkernels already supported
|
||||
by Genode posed a number of interesting challenges and opportunities. We have
|
||||
thoroughly documented the process in
|
||||
[http://genode.org/documentation/articles/genode-on-okl4 - Bringing Genode to OKL4].
|
||||
[https://genode.org/documentation/articles/genode-on-okl4 - Bringing Genode to OKL4].
|
||||
|
||||
|
||||
Usage
|
||||
@@ -160,7 +160,7 @@ Usage
|
||||
|
||||
For using Genode with OKL4, please refer to the following dedicated page:
|
||||
|
||||
:[http://genode.org/documentation/platforms/okl4 - Genode on the OKL4 microkernel]:
|
||||
:[https://genode.org/documentation/platforms/okl4 - Genode on the OKL4 microkernel]:
|
||||
Site about building and using Genode with the OKL4 kernel.
|
||||
|
||||
|
||||
@@ -293,7 +293,7 @@ Genode's libc. Thereby the linker will silently create references to glibc
|
||||
symbols, making both libraries collide. So if using Qt4, we recommend using the
|
||||
Genode tool chain:
|
||||
|
||||
:[http://genode.org/download/tool-chain]:
|
||||
:[https://genode.org/download/tool-chain]:
|
||||
Information about downloading and using the Genode tool chain
|
||||
|
||||
|
||||
@@ -308,7 +308,7 @@ we already utilized this approach for realizing basic networking on Genode.
|
||||
With this release, we complement DDE Linux with support required by USB
|
||||
drivers. We are grateful for being able to base our implementation on the
|
||||
excellent foundation laid by Dirk Vogt. He described his work in
|
||||
[http://os.inf.tu-dresden.de/papers_ps/beleg-vogt.pdf - USB for the L4 environment].
|
||||
[https://os.inf.tu-dresden.de/papers_ps/beleg-vogt.pdf - USB for the L4 environment].
|
||||
|
||||
For USB HID support, we added the Linux USB and input subsystems to the DDE
|
||||
Linux 2.6 framework. Besides the 'dde_linux26/net.h' API for network drivers
|
||||
|
||||
@@ -194,7 +194,7 @@ Qemu is decribed at a dedicated Wiki page:
|
||||
|
||||
:Genode/OKL4 on the GTA01 platfrom:
|
||||
|
||||
[http://genode.org/community/wiki/GenodeOKL4OnTheGTA01Platform - Genode.org Community Wiki]
|
||||
[https://genode.org/community/wiki/GenodeOKL4OnTheGTA01Platform - Genode.org Community Wiki]
|
||||
|
||||
Both the OKL4 version 2.1.1 and the GTA01 chip are not the most current
|
||||
platforms but this combination turned out to be good as starting point.
|
||||
@@ -238,7 +238,7 @@ Usage
|
||||
|
||||
If you haven't build Genode for OKL4 yet, please refer to the following document:
|
||||
|
||||
:[http://genode.org/documentation/platforms/okl4 - Genode on the OKL4 microkernel]:
|
||||
:[https://genode.org/documentation/platforms/okl4 - Genode on the OKL4 microkernel]:
|
||||
This page contains the information on how to build and use Genode with OKL4.
|
||||
|
||||
For building OKLinux for Genode, you first need to download and patch the
|
||||
@@ -532,7 +532,7 @@ the following config file can be used:
|
||||
|
||||
For trying out the example with Qemu, please refer to the instructions
|
||||
given in the
|
||||
[http://genode.org/documentation/release-notes/9.02#section-4 - description]
|
||||
[https://genode.org/documentation/release-notes/9.02#section-4 - description]
|
||||
of the initial networking support added in Genode version 9.02.
|
||||
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ In December 2009, the day we waited for a long time had come. The first version
|
||||
of NOVA was publicly released:
|
||||
|
||||
:Official website of the NOVA hypervisor:
|
||||
[http://hypervisor.org]
|
||||
[https://hypervisor.org]
|
||||
|
||||
Besides the novel and modern kernel interface, NOVA has a list of features that
|
||||
sets it apart from most other microkernels, in particular support for
|
||||
@@ -221,7 +221,7 @@ The Genode release 10.02 supports the NOVA pre-release version 0.1. You can
|
||||
download the archive here:
|
||||
|
||||
:Download NOVA version 0.1:
|
||||
[http://os.inf.tu-dresden.de/~us15/nova/nova-hypervisor-0.1.tar.bz2]
|
||||
[https://os.inf.tu-dresden.de/~us15/nova/nova-hypervisor-0.1.tar.bz2]
|
||||
|
||||
For building NOVA, please refer to the 'README' file contained in the archive.
|
||||
Normally, a simple 'make' in the 'build/' subdirectory is all you need to
|
||||
@@ -236,7 +236,7 @@ following command:
|
||||
|
||||
This tool will create a fresh build directory at the location specified
|
||||
as 'BUILD_DIR'. Provided that you have installed the
|
||||
[http://genode.org/download/tool-chain - Genode tool chain], you can now build
|
||||
[https://genode.org/download/tool-chain - Genode tool chain], you can now build
|
||||
Genode by using 'make' from within the new build directory.
|
||||
|
||||
Note that in contrast to most other kernels, the Genode build process does not
|
||||
@@ -908,7 +908,7 @@ request inconsistently. We have now enhanced the 'Root_component' template with
|
||||
a policy parameter to 'Root_component' that allows the specification of a
|
||||
session-creation policy. The most important policy is whether a service can
|
||||
have a single or multiple clients.
|
||||
[http://genode.org/documentation/api/inline?code/base/include/root/component.h - See the improved template...]
|
||||
[https://genode.org/documentation/api/inline?code/base/include/root/component.h - See the improved template...]
|
||||
|
||||
Out-of-order RPC replies
|
||||
========================
|
||||
@@ -933,7 +933,7 @@ provided with the 'libports' repository. It is based on the official
|
||||
Python code available from the website:
|
||||
|
||||
:Python website:
|
||||
[http://www.python.org]
|
||||
[https://www.python.org]
|
||||
|
||||
To fetch the upstream Python source code, call 'make prepare' from within the
|
||||
'libports' directory. To include Python in your build process, add 'libports'
|
||||
@@ -1107,7 +1107,7 @@ running Genode like the following.
|
||||
! sudo ip address add 10.0.0.1/24 brd + dev tap0
|
||||
|
||||
Give it a try with the
|
||||
[http://genode.org/documentation/release-notes/9.11#section-17 - lwIP example scenario].
|
||||
[https://genode.org/documentation/release-notes/9.11#section-17 - lwIP example scenario].
|
||||
Please note that lwIP is configured for DHCP and does not assign a
|
||||
static IP configuration to its end of the wire. Hence, you should run
|
||||
a DHCP server on tap0, e.g.
|
||||
|
||||
@@ -1012,7 +1012,7 @@ Arora web browser
|
||||
Arora has its origin as an example application for Qt4. However, it emancipated
|
||||
itself to be a separate project.
|
||||
|
||||
:[http://arora.googlecode.com]: Arora project website
|
||||
:[https://arora.googlecode.com]: Arora project website
|
||||
|
||||
Even though compared with other browsers, its popularity is relatively small
|
||||
but for us, it is perfect to stretch the bounds of our Genode infrastructure.
|
||||
@@ -1123,7 +1123,7 @@ New two-stage build system
|
||||
==========================
|
||||
|
||||
Since the thorough
|
||||
[http://www.genode-labs.com/publications/scons-vs-make-2008.pdf - analysis of the Genode build system]
|
||||
[https://www.genode-labs.com/publications/scons-vs-make-2008.pdf - analysis of the Genode build system]
|
||||
by Ludwig Hähne in 2008, we were planning to incorporate his findings into
|
||||
Genode. In his study, he reimplemented Genode's make-based build system using
|
||||
SCons and compared both implementations. For us, the two most interesting
|
||||
|
||||
@@ -17,7 +17,7 @@ networking, audio output, real-time priorities, mandatory access control,
|
||||
USB, ATAPI block devices, Python, hardware-accelerated 3D graphics, Qt4,
|
||||
the WebKit-based Arora browser, and the paravirtualized OKLinux kernel.
|
||||
So many wonderful toys waiting to get played with. This is how the idea of
|
||||
creating [http://genode.org/download/live-cds - the new Genode Live CD] was
|
||||
creating [https://genode.org/download/live-cds - the new Genode Live CD] was
|
||||
born. In the past, Genode was mostly used in settings with a relatively static
|
||||
configuration consisting of several components orchestrated to fulfill
|
||||
a few special-purpose functions. Now, the time has come for the next step,
|
||||
@@ -65,7 +65,7 @@ the nifty interfaces used by the driver in our emulation framework. To
|
||||
achieve our short-term goal of a great live CD experience, we had to
|
||||
walk a different path.
|
||||
|
||||
[http://gpxe.org/ - gPXE] is a lovely network boot loader / open-source
|
||||
[https://gpxe.org/ - gPXE] is a lovely network boot loader / open-source
|
||||
PXE ROM project and the successor of the famous Etherboot
|
||||
implementation. Besides support for DNS, HTTP, iSCSI and AoE, gPXE
|
||||
includes dozens of NIC drivers and applies a plain driver framework.
|
||||
@@ -100,7 +100,7 @@ at 'bin/gpxe_nic_drv'.
|
||||
On-demand paging
|
||||
################
|
||||
|
||||
In the [http://genode.org/documentation/release-notes/8.11#section-8 - release 8.11],
|
||||
In the [https://genode.org/documentation/release-notes/8.11#section-8 - release 8.11],
|
||||
we laid the foundation for implementing user-level dataspace managers.
|
||||
But so far, the facility remained largely unused except for managing thread
|
||||
contexts. This changed with this release.
|
||||
@@ -271,7 +271,7 @@ Finished transition to new init concept
|
||||
=======================================
|
||||
|
||||
With the release 10.05, we introduced the
|
||||
[http://genode.org/documentation/release-notes/10.05#section-0 - current configuration concept of init].
|
||||
[https://genode.org/documentation/release-notes/10.05#section-0 - current configuration concept of init].
|
||||
This concept supports mandatory access control and provides flexible
|
||||
ways for defining client-server relationships. Until now, we maintained
|
||||
the old init concept. With the current release, the transition to the
|
||||
@@ -736,7 +736,7 @@ Automated coding-style checker
|
||||
|
||||
As Genode's code base grows and new developers start to get involved,
|
||||
we noticed recurring questions regarding coding style. There is a
|
||||
[http://genode.org/documentation/developer-resources/coding_style - document]
|
||||
[https://genode.org/documentation/developer-resources/coding_style - document]
|
||||
describing our coding style but for people just starting to get involved,
|
||||
adhering all the rules can become tedious. However, we stress the importance
|
||||
of a consistent coding style for the project. Not only does a consistent style
|
||||
|
||||
@@ -88,7 +88,7 @@ following packages:
|
||||
Moreover, you need to download and install the tool-chain used by Genode. Have
|
||||
a look at this page:
|
||||
|
||||
:[http://genode.org/download/tool-chain]:
|
||||
:[https://genode.org/download/tool-chain]:
|
||||
Genode tool-chain
|
||||
|
||||
|
||||
@@ -98,8 +98,8 @@ Downloading and building Fiasco.OC
|
||||
Checkout the Fiasco.OC sources and tool-chain to an appropriated directory:
|
||||
|
||||
! export REPOMGR_SVN_REV=27
|
||||
! svn cat http://svn.tudos.org/repos/oc/tudos/trunk/repomgr |\
|
||||
! perl - init http://svn.tudos.org/repos/oc/tudos fiasco l4re
|
||||
! svn cat https://svn.tudos.org/repos/oc/tudos/trunk/repomgr |\
|
||||
! perl - init https://svn.tudos.org/repos/oc/tudos fiasco l4re
|
||||
|
||||
|
||||
Building the kernel
|
||||
@@ -154,7 +154,7 @@ Building the Fiasco.OC version of Genode
|
||||
|
||||
The Fiasco.OC version of Genode is available at the Genode public subversion repository:
|
||||
|
||||
:http://genode.org/download/subversion-repository:
|
||||
:https://genode.org/download/subversion-repository:
|
||||
Information about accessing the Genode public subversion repository
|
||||
|
||||
Go to a directory where you want the Genode/Fiasco.OC build directory to remain. Use
|
||||
@@ -273,7 +273,7 @@ Further Information
|
||||
:genode/tool/builddir/README:
|
||||
Reference manual for the 'create_builddir' script
|
||||
|
||||
:[http://os.inf.tu-dresden.de/fiasco]:
|
||||
:[https://os.inf.tu-dresden.de/fiasco]:
|
||||
Official website for the Fiasco.OC microkernel.
|
||||
|
||||
|
||||
@@ -453,7 +453,7 @@ and a set of IP cores for implementing fully-fledged windowed GUIs on FPGAs:
|
||||
|
||||
:Website of the Genode FPGA Graphics Project:
|
||||
|
||||
[http://genode-labs.com/products/fpga-graphics]
|
||||
[https://genode-labs.com/products/fpga-graphics]
|
||||
|
||||
Ever since we first released the Genode FPGA project, we envisioned to combine
|
||||
it with the Genode OS Framework. In Spring 2010, Martin Stein joined our team
|
||||
|
||||
@@ -96,7 +96,7 @@ C++-based alternative, fostering the use of the C++ streaming operators
|
||||
combined with templates. The following paper provides a detailed discussion
|
||||
on the subject:
|
||||
|
||||
:[http://genode-labs.com/publications/dynrpc-2007.pdf - A Case Study on the Cost and Benefit of Dynamic RPC Marshalling for Low-Level System Components]:
|
||||
:[https://genode-labs.com/publications/dynrpc-2007.pdf - A Case Study on the Cost and Benefit of Dynamic RPC Marshalling for Low-Level System Components]:
|
||||
_SIGOPS OSR Special Issue on Secure Small-Kernel Systems, 2007_
|
||||
|
||||
In hindsight, leaving behind the IDL approach was the right decision. From a
|
||||
@@ -120,7 +120,7 @@ function call to a remote process running on the same machine (contrarily to
|
||||
the term RPC being used in the context of systems distributed over a network).
|
||||
|
||||
The state of the art is best explained by the example interface discussed
|
||||
in the [http://genode.org/documentation/developer-resources/client_server_tutorial - Hello Tutorial].
|
||||
in the [https://genode.org/documentation/developer-resources/client_server_tutorial - Hello Tutorial].
|
||||
On Genode, each RPC interface is represented by an abstract C++ class,
|
||||
enriched by some bits of information shared by the caller and the callee.
|
||||
|
||||
|
||||
@@ -251,27 +251,27 @@ The new way of dealing with different kernels motivated us to revisit and
|
||||
complement our exiting documentation. The following documents are new or
|
||||
have received considerable attention:
|
||||
|
||||
:[http://genode.org/documentation/developer-resources/getting_started - Getting started]:
|
||||
:[https://genode.org/documentation/developer-resources/getting_started - Getting started]:
|
||||
The revised guide of how to explore Genode provides a quick way to
|
||||
test drive Genode's graphical demo scenario with a kernel of your
|
||||
choice and gives pointers to documents needed to proceed your
|
||||
exploration.
|
||||
|
||||
:[http://genode.org/documentation/developer-resources/build_system - Build system manual]:
|
||||
:[https://genode.org/documentation/developer-resources/build_system - Build system manual]:
|
||||
The new build-system manual explains the concepts behind Genode's
|
||||
build system, provides guidance with creating custom programs and
|
||||
libraries, and covers the tool support for the automated integration
|
||||
and testing of application scenarios.
|
||||
|
||||
:[http://genode.org/documentation/components - Components overview]:
|
||||
:[https://genode.org/documentation/components - Components overview]:
|
||||
The new components-overview document explains the categorization of
|
||||
Genode's components and lists all components that come with the framework.
|
||||
|
||||
:[http://genode.org/documentation/developer-resources/init - Configuration of the init process]:
|
||||
:[https://genode.org/documentation/developer-resources/init - Configuration of the init process]:
|
||||
The document describes Genode's configuration concept, the routing of
|
||||
service requests, and the expression of mandatory access-control policies.
|
||||
|
||||
:[http://genode.org/community/wiki - Wiki]:
|
||||
:[https://genode.org/community/wiki - Wiki]:
|
||||
The platform-specific Wiki pages for L4/Fiasco, L4ka::Pistachio, NOVA,
|
||||
Codezero, Fiasco.OC, and OKL4 have been updated to reflect the new flows of
|
||||
working with the respective base platforms.
|
||||
|
||||
@@ -76,7 +76,7 @@ traditional hypervisors. Hence, the authors of NOVA coined the term
|
||||
microhypervisor.
|
||||
|
||||
The NOVA virtualization architecture is detailed in the paper
|
||||
[http://os.inf.tu-dresden.de/papers_ps/steinberg_eurosys2010.pdf - NOVA: A Microhypervisor-Based Secure Virtualization Architecture]
|
||||
[https://os.inf.tu-dresden.de/papers_ps/steinberg_eurosys2010.pdf - NOVA: A Microhypervisor-Based Secure Virtualization Architecture]
|
||||
by Udo Steinberg and Bernhard Kauer.
|
||||
|
||||
Since February 2010, NOVA is one of the supported base platforms of Genode. But
|
||||
@@ -123,7 +123,7 @@ L4Linux is the base of L4Android, a project that combines the Android software
|
||||
stack with L4Linux. With the current release, we have integrated L4Android with
|
||||
Genode.
|
||||
|
||||
:[http://l4android.org]:
|
||||
:[https://l4android.org]:
|
||||
L4Android project website
|
||||
|
||||
[image l4android]
|
||||
@@ -396,7 +396,7 @@ Vancouver is a virtual machine monitor specifically developed for the use with
|
||||
the NOVA hypervisor. It virtualizes a 32-bit x86 PC hardware including various
|
||||
peripherals.
|
||||
|
||||
The official project website is [http://hypervisor.org]. Vancouver relies
|
||||
The official project website is [https://hypervisor.org]. Vancouver relies
|
||||
on hardware virtualization support such as VMX (Intel) or SVM (AMD).
|
||||
With the current release, we have added the first version of our port of
|
||||
Vancouver to Genode to the 'ports' repository. To download the Vancouver
|
||||
@@ -575,7 +575,7 @@ bidirectional communication (terminal session), and creating the actual GDB
|
||||
support in the form of the GDB monitor component. To paint a complete picture
|
||||
of the scene, we have added the following documentation:
|
||||
|
||||
:[http://genode.org/documentation/developer-resources/gdb]:
|
||||
:[https://genode.org/documentation/developer-resources/gdb]:
|
||||
User-level debugging on Genode
|
||||
|
||||
|
||||
@@ -680,7 +680,7 @@ the official successor of gPXE, for our NIC drivers. Currently, drivers for
|
||||
Intel E1000/E1000e and PCnet32 cards are enabled in the new 'nic_drv'. The
|
||||
Linux based driver was removed.
|
||||
|
||||
:[http://ipxe.org]:
|
||||
:[https://ipxe.org]:
|
||||
iPXE open source boot firmware
|
||||
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ with new device-driver infrastructure such as the first version of a device
|
||||
driver manager and a new ACPI parser.
|
||||
|
||||
Feature-wise, the current release takes the first steps towards the goal of the
|
||||
[http://genode.org/about/road-map - Roadmap for 2012], turning Genode into a
|
||||
[https://genode.org/about/road-map - Roadmap for 2012], turning Genode into a
|
||||
general-purpose OS ready for everyday use by its developers. According to the
|
||||
roadmap, we enhanced the Noux runtime with fork semantics so that we can run
|
||||
command-line based GNU programs such as the bash shell and coreutils unmodified
|
||||
@@ -48,7 +48,7 @@ releases. This way of development seemed to work quite well for us, we were
|
||||
satisfied about the pace of development, and with each release, our project got
|
||||
more recognition.
|
||||
|
||||
However, the excellent book [http://producingoss.com/ - Producing Open Source Software]
|
||||
However, the excellent book [https://producingoss.com/ - Producing Open Source Software]
|
||||
made us realize that even though we released our work under an Open-Source
|
||||
license, our development process was actually far from being open and may have
|
||||
discouraged participation of people outside the inner circle of developers.
|
||||
@@ -58,14 +58,14 @@ to liberate the project from its closed fashion of development.
|
||||
|
||||
In the beginning of December, the vague idea has become a plan. So we finally
|
||||
brought the topic to our mailing list
|
||||
([http://genode.org/news/steps-towards-an-open-development-process - Steps towards an open development process]).
|
||||
([https://genode.org/news/steps-towards-an-open-development-process - Steps towards an open development process]).
|
||||
We decided to take the release cycle for Genode 12.02 as the opportunity to put
|
||||
our plan to practice. The central element of this endeavour was moving the
|
||||
project over to GitHub and adapt our workflows and tooling support accordingly.
|
||||
First, we started to embrace GitHub's issue tracker for the management of
|
||||
working topics:
|
||||
|
||||
:[http://github.com/genodelabs/genode/issues]: Issue Tracker
|
||||
:[https://github.com/genodelabs/genode/issues]: Issue Tracker
|
||||
|
||||
The most significant step was leaving our Genode-Labs-internal code
|
||||
repositories behind and starting a completely public Git repository instead:
|
||||
@@ -86,7 +86,7 @@ comes directly from the project's Git repository. So maintaining website
|
||||
content is done in the same coherent and transparent way as working on Genode's
|
||||
code base. So we could finally put the old Wiki to rest. In the process, we
|
||||
largely revisited the existing content. For example, we rewrote the
|
||||
[http://genode.org/community/contributions - contributions] document in a
|
||||
[https://genode.org/community/contributions - contributions] document in a
|
||||
tutorial-like style and incorporated several practical hints, in particular
|
||||
related to the recommended use of Git.
|
||||
|
||||
@@ -419,9 +419,9 @@ New and updated libraries
|
||||
|
||||
We updated Qt4 from version 4.7.1 to version 4.7.4. For the most part, the
|
||||
update contains bug fixes as detailed in the release notes for the versions
|
||||
[http://qt.nokia.com/products/changes/changes-4.7.2 - 4.7.2],
|
||||
[http://qt.nokia.com/products/changes/changes-4.7.3 - 4.7.3], and
|
||||
[http://labs.qt.nokia.com/2011/09/01/qt-4-7-4-released - 4.7.4].
|
||||
[https://qt.nokia.com/products/changes/changes-4.7.2 - 4.7.2],
|
||||
[https://qt.nokia.com/products/changes/changes-4.7.3 - 4.7.3], and
|
||||
[https://labs.qt.nokia.com/2011/09/01/qt-4-7-4-released - 4.7.4].
|
||||
|
||||
:Update of zlib to version 1.2.6:
|
||||
|
||||
@@ -469,7 +469,7 @@ PDF viewer
|
||||
According to our road map for 2012, we pursued the port of an existing PDF
|
||||
viewer as native application to Genode.
|
||||
|
||||
We first looked at the [http://poppler.freedesktop.org - libpoppler],
|
||||
We first looked at the [https://poppler.freedesktop.org - libpoppler],
|
||||
which seems to be the most popular PDF rendering engine in the world of
|
||||
freedesktop.org. To get a grasp on what the porting effort of this engine may
|
||||
be, we looked at projects using this library as well as the library source
|
||||
@@ -678,7 +678,7 @@ employing a full-blown ACPI interpreter, the ACPI driver uses an ingenious
|
||||
technique invented by Bernhard Kauer, which is described in the following
|
||||
paper:
|
||||
|
||||
:[http://os.inf.tu-dresden.de/papers_ps/tr-atare-2009.pdf - ATARE - ACPI Tables and Regular Expressions]:
|
||||
:[https://os.inf.tu-dresden.de/papers_ps/tr-atare-2009.pdf - ATARE - ACPI Tables and Regular Expressions]:
|
||||
_TU Dresden technical report TUD-FI09-09, Dresden, Germany, August 2009_
|
||||
|
||||
:Usage:
|
||||
|
||||
@@ -17,7 +17,7 @@ The highlights are the introduction of Genode's file-system infrastructure and
|
||||
a new concept for the dynamic adjustment of the system's behaviour at runtime.
|
||||
|
||||
The release follows the rough plan we laid out in our
|
||||
[http://genode.org/about/road-map - road map]. One planned road-map item was
|
||||
[https://genode.org/about/road-map - road map]. One planned road-map item was
|
||||
revisiting our base of device drivers as we realized that some important
|
||||
drivers were not on par with our requirements, the USB stack being the most
|
||||
important example. Our prior existing solution was originally ported from Linux
|
||||
@@ -619,8 +619,8 @@ from the official zlib mirrors.
|
||||
|
||||
:Video codecs via libav:
|
||||
|
||||
The [http://libav.org - libav project] is one successor of the popular
|
||||
[http://ffmpeg.org/ - FFmpeg] library, which is a comprehensive solution
|
||||
The [https://libav.org - libav project] is one successor of the popular
|
||||
[https://ffmpeg.org/ - FFmpeg] library, which is a comprehensive solution
|
||||
for video and audio decoding, conversion, and streaming. The version
|
||||
0.8.2 of libav has been incorporated into the libports repository.
|
||||
|
||||
@@ -645,7 +645,7 @@ versatile test tool, which loads and runs test scripts configured with
|
||||
Genode's config mechanism. Test results can be aggregated, printed, and
|
||||
analyzed at runtime by scripts.
|
||||
|
||||
:[http://lua.org/]: Lua programming language
|
||||
:[https://lua.org/]: Lua programming language
|
||||
|
||||
|
||||
libSDL
|
||||
@@ -743,7 +743,7 @@ player. It consists of the following pieces.
|
||||
[image media_player]
|
||||
The unmodified 'avplay' embedded in Qt4-based GUI.
|
||||
The media file was downloaded from
|
||||
http://www.youtube.com/watch?v=CbtAP3kUCxs.
|
||||
https://www.youtube.com/watch?v=CbtAP3kUCxs.
|
||||
|
||||
The latter part is particularly interesting because it makes creative use of
|
||||
Genode's unique service virtualization facilities. The 'qt_avplay' program
|
||||
|
||||
@@ -48,7 +48,7 @@ the genode.org website via the lighttpd web server,
|
||||
|
||||
:What about the road map?:
|
||||
|
||||
Those of you who track the milestones laid out in our [http:/about/road-map - road map]
|
||||
Those of you who track the milestones laid out in our [https://genode.org/about/road-map - road map]
|
||||
may wonder how Genode 12.08 relates to the stated goals. In fact, several
|
||||
points of the road map haven't received the attention as originally planned.
|
||||
As an explanation, let us quote the paragraph right atop of the road-map page:
|
||||
@@ -152,10 +152,10 @@ you will see the new 'hw_panda_a2', 'hw_vea9x4', 'hw_pbxa9' choices of
|
||||
build-directory templates. The latter platform enables you to run a
|
||||
'base-hw' Genode system on Qemu.
|
||||
|
||||
[http://genode.org/documentation/platforms/hw - Learn more about using the new base-hw platform...]
|
||||
[https://genode.org/documentation/platforms/hw - Learn more about using the new base-hw platform...]
|
||||
|
||||
For running Genode directly on the Pandaboard, please refer to the
|
||||
[http://genode.org/documentation/platforms/hw_panda_a2 - Pandaboard-specific documentation...]
|
||||
[https://genode.org/documentation/platforms/hw_panda_a2 - Pandaboard-specific documentation...]
|
||||
|
||||
|
||||
Embracing the NOVA Hypervisor
|
||||
@@ -406,14 +406,14 @@ New and updated 3rd-party libraries
|
||||
|
||||
:Expat:
|
||||
|
||||
[http://expat.sourceforge.net - Expat] is an XML parsing library. The port of
|
||||
[https://expat.sourceforge.net - Expat] is an XML parsing library. The port of
|
||||
this library was motivated by our goal to use the GNU debugger for on-target
|
||||
debugging. GDB depends on this library.
|
||||
|
||||
:MPC and GMP:
|
||||
|
||||
We complemented our existing port of the
|
||||
[http://gmplib.org - GNU multiple precision arithmetic library (libgmp)] with
|
||||
[https://gmplib.org - GNU multiple precision arithmetic library (libgmp)] with
|
||||
support for the x86_64 and ARM architectures. This change combined with the
|
||||
port of the [http://www.multiprecision.org/index.php?prog=mpc - MPC library]
|
||||
enables us to build the Genode tool chain for these architectures.
|
||||
@@ -437,14 +437,14 @@ on it.
|
||||
|
||||
:PCRE:
|
||||
|
||||
[http://www.pcre.org/ - PCRE] is a library for parsing regular rexpressions. We
|
||||
[https://www.pcre.org/ - PCRE] is a library for parsing regular rexpressions. We
|
||||
require this library for our ongoing work on porting the lighttpd webserver.
|
||||
|
||||
|
||||
Lighttpd web server
|
||||
===================
|
||||
|
||||
The [http://www.lighttpd.net/ - Lighttpd] web server has been added to the
|
||||
The [https://www.lighttpd.net/ - Lighttpd] web server has been added to the
|
||||
'ports' repository. The port runs as a native Genode application and ultimately
|
||||
clears the way to hosting the genode.org website on Genode. To test drive this
|
||||
scenario, please give the 'ports/run/genode_org.run' script a try.
|
||||
|
||||
@@ -328,7 +328,7 @@ To prevent the TCP/IP stack from artificially throttling TCP throughput,
|
||||
we adjusted lwIP's TCP_SND_BUF size.
|
||||
|
||||
From our work on optimizing the NIC stub-code performance of L4Linux as
|
||||
described [http://genode.org/documentation/articles/pandaboard - here],
|
||||
described [https://genode.org/documentation/articles/pandaboard - here],
|
||||
we learned that the use of a NIC-specific packet allocator for the
|
||||
packet-stream interface is beneficial. At the lwIP back end, we still relied on
|
||||
the original general-purpose allocator. Hence, we improved the lwIP back-end
|
||||
@@ -368,7 +368,7 @@ device-driver environment for the audio drivers of the Open Sound System (OSS).
|
||||
|
||||
:Website of the Open Sound System:
|
||||
|
||||
[http://http://www.4front-tech.com]
|
||||
[http://www.4front-tech.com]
|
||||
|
||||
The new 'dde_oss' contains all the pieces needed to use Intel HDA, AC97, and
|
||||
ES1370 audio cards on Genode. On first use, the 3rd-party code can be
|
||||
@@ -732,4 +732,4 @@ refer to the tool-chain website:
|
||||
|
||||
:Genode tool chain:
|
||||
|
||||
[http://genode.org/download/tool-chain]
|
||||
[https://genode.org/download/tool-chain]
|
||||
|
||||
@@ -172,7 +172,7 @@ Full virtualization on NOVA/x86
|
||||
|
||||
Vancouver is a x86 virtual machine monitor that is designed to run as
|
||||
user-level process on top of the NOVA hypervisor. In
|
||||
[http://genode.org/documentation/release-notes/11.11#Faithful_x86_PC_Virtualization_enabled_by_the_Vancouver_VMM - Genode version 11.11],
|
||||
[https://genode.org/documentation/release-notes/11.11#Faithful_x86_PC_Virtualization_enabled_by_the_Vancouver_VMM - Genode version 11.11],
|
||||
we introduced the preliminary adaptation of Vancouver to Genode. This version
|
||||
was meant as a mere proof of concept, which allowed the bootup of small Guest
|
||||
OSes (such as Fiasco.OC or Pistachio) inside the VMM. However, it did not
|
||||
@@ -379,7 +379,7 @@ Trimmed and unified framework API
|
||||
=================================
|
||||
|
||||
A though-provoking
|
||||
[http://sourceforge.net/mailarchive/forum.php?thread_name=CAGQ-%3Dq27%2B_UooBiJmz9RdTE1gDmVcg9v0w-8TNgEH5fzHYiA%2BQ%40mail.gmail.com&forum_name=genode-main - posting]
|
||||
[https://sourceforge.net/mailarchive/forum.php?thread_name=CAGQ-%3Dq27%2B_UooBiJmz9RdTE1gDmVcg9v0w-8TNgEH5fzHYiA%2BQ%40mail.gmail.com&forum_name=genode-main - posting]
|
||||
on our mailing list prompted us to explore the idea to make shared libraries
|
||||
and dynamically linked executables binary compatible among different kernels.
|
||||
This sounds a bit crazy at first but it is not downright infeasible.
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
|
||||
With Genode 13.05, we have diverged quite a bit from the feature-laden plans
|
||||
laid out in our [http://genode.org/about/road-map road map] as we realized
|
||||
laid out in our [https://genode.org/about/road-map road map] as we realized
|
||||
that consolidating and optimizing the current feature set will have a more
|
||||
sustainable effect than functional enhancements at this point. In particular,
|
||||
we addressed the problem that the ever growing diversity of platforms imposes
|
||||
@@ -110,7 +110,7 @@ TFTP boot x86
|
||||
The following description uses NOVA as an example to illustrate the usage.
|
||||
Other base platforms are supported as well and can be configured analogously.
|
||||
|
||||
[http://os.inf.tu-dresden.de/~us15/pulsar/ - Pulsar] is a tiny boot loader
|
||||
[https://os.inf.tu-dresden.de/~us15/pulsar/ - Pulsar] is a tiny boot loader
|
||||
that uses PXE to fetch boot images via TFTP over the network. On the x86
|
||||
architecture, Genode supports the automatic generation of Pulsar configuration
|
||||
files, which can be placed directly onto a TFTP server. Genode can be booted
|
||||
@@ -345,7 +345,7 @@ each requiring a dedicated 'Terminal::Session'. Hence, we need a way to
|
||||
multiplex the 'Terminal::Session' interface between those clients. Our
|
||||
multiplexing solution comes in the form of a component called terminal_mux,
|
||||
which we just introduced in the
|
||||
[http://genode.org/documentation/release-notes/13.02#New_terminal_multiplexer - previous release].
|
||||
[https://genode.org/documentation/release-notes/13.02#New_terminal_multiplexer - previous release].
|
||||
It uses a single terminal connection to implement a text-based user interface
|
||||
to multiple virtual terminal consoles.
|
||||
|
||||
@@ -400,7 +400,7 @@ unsynchronized class interfaces.
|
||||
:MMIO framework improvements:
|
||||
|
||||
For native Genode device drivers, we consistently use our
|
||||
[http://genode.org/documentation/release-notes/12.02#MMIO_access_framework - MMIO framework API].
|
||||
[https://genode.org/documentation/release-notes/12.02#MMIO_access_framework - MMIO framework API].
|
||||
These utilities help us to safeguard the access to individual bit fields of
|
||||
memory-mapped device registers and cleanly separate the declaration of device
|
||||
registers from the driver logic. During the increased use of the API, we
|
||||
@@ -669,7 +669,7 @@ particular, we addressed USB networking, XHCI (USB-3), Gigabit networking over
|
||||
USB-3, eMMC, and SATA.
|
||||
|
||||
The development of those device drivers follows our rationale that guided our
|
||||
[http://genode.org/documentation/articles/pandaboard - previous work on the OMAP4 platform].
|
||||
[https://genode.org/documentation/articles/pandaboard - previous work on the OMAP4 platform].
|
||||
For the USB driver, we employed the device-driver-environment (DDE) approach
|
||||
for reusing the Linux USB stack and the host controller drivers. In contrast,
|
||||
the eMMC and SATA drivers are built as genuine Genode drivers with no
|
||||
@@ -747,7 +747,7 @@ The OMAP4 framebuffer driver used to support HDMI only, which was used
|
||||
for connecting a display to the Pandaboard. To make the driver usable on
|
||||
phones and tablets, the driver has been enhanced to support LCD output. Thanks
|
||||
to Alexander Tarasikov for the patch and the insightful story about
|
||||
[http://allsoftwaresucks.blogspot.com/2013/05/porting-genode-to-commercial-hardware.html - porting Genode to the B&N Nook HD+ tablet]!
|
||||
[https://allsoftwaresucks.blogspot.com/2013/05/porting-genode-to-commercial-hardware.html - porting Genode to the B&N Nook HD+ tablet]!
|
||||
|
||||
|
||||
USB
|
||||
|
||||
@@ -533,7 +533,7 @@ Management of CPU affinities
|
||||
============================
|
||||
|
||||
In line with our experience of supporting
|
||||
[http://www.genode.org/documentation/release-notes/10.02#Real-time_priorities - real-time priorities]
|
||||
[https://genode.org/documentation/release-notes/10.02#Real-time_priorities - real-time priorities]
|
||||
in version 10.02, we were seeking a way to express CPU affinities such that
|
||||
Genode's recursive nature gets preserved and facilitated. Dealing with
|
||||
physical CPU numbers would contradict with this mission. Our solution
|
||||
|
||||
@@ -203,7 +203,7 @@ but less so with file systems that are well supported by the Linux kernel.
|
||||
Coincidentally, when we came to this realization, we stumbled upon the
|
||||
wonderful work of Antti Kantee on so-called rump kernels:
|
||||
|
||||
:[http://wiki.netbsd.org/rumpkernel/]:
|
||||
:[https://wiki.netbsd.org/rumpkernel/]:
|
||||
Rump kernel Wiki
|
||||
|
||||
The motivation behind the rump kernels was the development of
|
||||
@@ -394,7 +394,7 @@ Block cache
|
||||
===========
|
||||
|
||||
The provisioning of a block cache was one of the primary motivations behind the
|
||||
[http://www.genode.org/documentation/release-notes/13.11#Dynamic_resource_balancing - dynamic resource balancing]
|
||||
[https://genode.org/documentation/release-notes/13.11#Dynamic_resource_balancing - dynamic resource balancing]
|
||||
concept that was introduced in Genode 13.11. We are now introducing the first
|
||||
version of such a cache.
|
||||
|
||||
|
||||
@@ -214,7 +214,7 @@ Unification of the ports management
|
||||
With the new source-tree layout in place, we could pursue a new take on
|
||||
unifying the management of ported 3rd-party source code. The new solution,
|
||||
which is very much inspired by the fabulous
|
||||
[http://nixos.org/nix - Nix package manager] comes in the form of new tools to
|
||||
[https://nixos.org/nix - Nix package manager] comes in the form of new tools to
|
||||
be found at 'tool/ports/'.
|
||||
|
||||
Note that even though the port mechanism described herein looks a bit like
|
||||
@@ -268,7 +268,7 @@ please refer to the updated porting guide:
|
||||
|
||||
:Genode Porting Guide:
|
||||
|
||||
[http://genode.org/documentation/developer-resources/porting]
|
||||
[https://genode.org/documentation/developer-resources/porting]
|
||||
|
||||
|
||||
:Known limitations:
|
||||
|
||||
@@ -415,7 +415,7 @@ ROM session interface
|
||||
|
||||
Originally, the ROM session interface had been designed for providing boot
|
||||
modules to the user land. Later, in version
|
||||
[http://genode.org/documentation/release-notes/12.05#System_reconfiguration_at_runtime - 12.05],
|
||||
[https://genode.org/documentation/release-notes/12.05#System_reconfiguration_at_runtime - 12.05],
|
||||
we enhanced the interface to support dynamic updates of ROM modules to
|
||||
facilitate the reconfiguration of components at runtime. In the meanwhile,
|
||||
the dynamic updating of ROM modules has become commonplace within Genode,
|
||||
@@ -479,7 +479,7 @@ Pluggable VFS file systems
|
||||
==========================
|
||||
|
||||
The virtual file system (VFS) infrastructure introduced with version
|
||||
[http://genode.org/documentation/release-notes/14.05#Per-process_virtual_file_systems - 14.05],
|
||||
[https://genode.org/documentation/release-notes/14.05#Per-process_virtual_file_systems - 14.05],
|
||||
supports a number of built-in file-system types such as the TAR, ROM, FS,
|
||||
block, terminal, or LOG file systems. It allows the tailoring of the
|
||||
file-system environment specifically for each individual program.
|
||||
@@ -1030,7 +1030,7 @@ Finished transition to new ports mechanism
|
||||
==========================================
|
||||
|
||||
In version 14.05, we introduced
|
||||
[http://genode.org/documentation/release-notes/14.05#Management_of_ported_3rd-party_source_code - new tools]
|
||||
[https://genode.org/documentation/release-notes/14.05#Management_of_ported_3rd-party_source_code - new tools]
|
||||
for integrating 3rd-party software with Genode and migrated the majority of
|
||||
our ports to the new mechanism. With the current version, we have finished the
|
||||
transition by migrating the remaining ports, namely Qt5, GCC, and GDB.
|
||||
|
||||
@@ -402,7 +402,7 @@ modules:
|
||||
|
||||
Furthermore all Intel wireless cards supported by the 'iwlwifi' driver need a
|
||||
specific firmware to work. You can download the archives containing the
|
||||
firmware from [http://wireless.kernel.org/en/users/Drivers/iwlwifi]. The
|
||||
firmware from [https://wireless.kernel.org/en/users/Drivers/iwlwifi]. The
|
||||
firmware image also has to be added to the boot module list. If the firmware
|
||||
is missing, the driver will complain and print an error message:
|
||||
|
||||
@@ -556,7 +556,7 @@ For realizing graphical applications that are security critical, we wish to
|
||||
avoid the complexity of sophisticated tool kits like Qt5. To ease the
|
||||
development of such Genode-specific graphical applications, we introduced a
|
||||
few common low-level interfaces and utilities for graphics in
|
||||
[http://genode.org/documentation/release-notes/14.02#Unified_interfaces_for_graphics - version 14.02].
|
||||
[https://genode.org/documentation/release-notes/14.02#Unified_interfaces_for_graphics - version 14.02].
|
||||
|
||||
The current version refines those utilities with added support for layering
|
||||
graphics using alpha channels. There is a new ALPHA8 pixel format that can be
|
||||
@@ -637,7 +637,7 @@ Growing tool kit for low-complexity GUI applications
|
||||
====================================================
|
||||
|
||||
With the current release, we continue our line of GUI-related work started in
|
||||
[http://genode.org/documentation/release-notes/14.08#New_GUI_architecture - version 14.08].
|
||||
[https://genode.org/documentation/release-notes/14.08#New_GUI_architecture - version 14.08].
|
||||
As a side product of implementing low-complexity GUI components directly on
|
||||
Genode instead of using existing GUI tool kits, a library of common utilities
|
||||
is evolving. The utilities are not strictly GUI-related but also cover the
|
||||
@@ -935,7 +935,7 @@ Raspberry Pi
|
||||
============
|
||||
|
||||
Genode added principle support for the Raspberry Pi one year ago in
|
||||
[http://genode.org/documentation/release-notes/13.11#Raspberry_Pi - version 13.11].
|
||||
[https://genode.org/documentation/release-notes/13.11#Raspberry_Pi - version 13.11].
|
||||
Back then, the driver support covered the interrupt controller, timer, UART,
|
||||
display, and USB. The latter was particularly challenging because the DWC-OTG
|
||||
USB host controller lacked public documentation. Hence, we ported the driver
|
||||
@@ -1035,7 +1035,7 @@ amttool, which uses a SOAP EOI protocol for communication. Newer hardware with
|
||||
AMT version 9 or higher dropped the support for SOAP EOI - read
|
||||
[https://software.intel.com/en-us/blogs/2012/12/01/intel-amt-wsman-interface-is-replacing-the-soapeoi-interface - a blog entry by Intel]
|
||||
for more details - switched to the
|
||||
[http://www.dmtf.org/standards/wsman - WSMAN interface]. The tool wsman on
|
||||
[https://www.dmtf.org/standards/wsman - WSMAN interface]. The tool wsman on
|
||||
Linux speaks the protocol and can be used as a replacement. We integrated the
|
||||
support of wsman into our run tool infrastructure and use it by default if
|
||||
installed - otherwise amttool will be used. Of course, you can enforce your
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
|
||||
|
||||
Genode's [http://genode.org/about/road-map - roadmap] for this year puts a
|
||||
Genode's [https://genode.org/about/road-map - roadmap] for this year puts a
|
||||
strong emphasis on the consolidation and cultivation of the existing feature
|
||||
set. With the first release of the year, version 15.02 pays tribute to this
|
||||
mission by stepping up to extensive and systematic automated testing. As
|
||||
@@ -46,7 +46,7 @@ Cortex-A15-based Arndale board.
|
||||
|
||||
While integrating ARM's virtualization extension, we aimed to strictly follow
|
||||
microkernel-construction principles. The primary design is inspired by the
|
||||
[http://hypervisor.org/ - NOVA OS Virtualization Architecture]. It is based on a
|
||||
[https://hypervisor.org/ - NOVA OS Virtualization Architecture]. It is based on a
|
||||
microhypervisor that provides essential microkernel mechanisms along with
|
||||
basic primitives to switch between virtual machines (VMs). On top of the
|
||||
microhypervisor, classical OS services are implemented as
|
||||
@@ -71,7 +71,7 @@ Design
|
||||
|
||||
The ARM virtualization extensions are based on the so-called security
|
||||
extensions, commonly known as
|
||||
[http://genode.org/documentation/articles/trustzone - TrustZone].
|
||||
[https://genode.org/documentation/articles/trustzone - TrustZone].
|
||||
The ARM designers did not follow the
|
||||
Intel approach to split the CPU into a "root" and a "guest" world while having all prior
|
||||
existing CPU modes available in both worlds. Instead, ARM added a new privilege level
|
||||
@@ -206,7 +206,7 @@ Modular tool kit for automated testing
|
||||
######################################
|
||||
|
||||
In
|
||||
[http://genode.org/documentation/release-notes/13.05#Automated_quality-assurance_testing - Genode version 13.05],
|
||||
[https://genode.org/documentation/release-notes/13.05#Automated_quality-assurance_testing - Genode version 13.05],
|
||||
we already introduced comprehensive support for the automated testing of
|
||||
Genode scenarios. Since then, Genode Labs has significantly widened the scope
|
||||
of its internal test infrastructure, both in terms of the coverage of the test
|
||||
@@ -391,7 +391,7 @@ the physical address ranges of memory:
|
||||
|
||||
* When using an IOMMU on NOVA, Genode represents the address space
|
||||
accessible by devices (by the means of DMA) using a so-called device PD
|
||||
([http://genode.org/documentation/release-notes/13.02#DMA_protection_via_IOMMU]).
|
||||
([https://genode.org/documentation/release-notes/13.02#DMA_protection_via_IOMMU]).
|
||||
DMA transactions originating from PCI devices are subjected to the virtual
|
||||
address space of the device PD.
|
||||
All DMA buffers are identity-mapped with their physical addresses within
|
||||
@@ -739,7 +739,7 @@ includes hardware, software, and firmware. This motivated us to
|
||||
bring Genode to this platform.
|
||||
|
||||
The underlying idea is to facilitate
|
||||
[http://genode.org/documentation/articles/trustzone - ARM TrustZone] to
|
||||
[https://genode.org/documentation/articles/trustzone - ARM TrustZone] to
|
||||
use Genode as a companion to a Linux-based OS on the platform.
|
||||
Whereas Linux would run in the normal world of TrustZone, Genode runs
|
||||
in the secure world. With Linux, the normal world will control the
|
||||
|
||||
@@ -66,7 +66,7 @@ completely written from scratch:
|
||||
|
||||
The book is published under the Creative Commons Attribution + ShareAlike
|
||||
License (CC-BY-SA) and can be downloaded as
|
||||
[http://genode.org/documentation/genode-foundations-15-05.pdf - PDF document].
|
||||
[https://genode.org/documentation/genode-foundations-15-05.pdf - PDF document].
|
||||
|
||||
It first presents the motivation behind our project, followed by a thorough
|
||||
description of the Genode OS architecture. The conceptual material is
|
||||
@@ -74,7 +74,7 @@ complemented with practical information for developers and a discussion of
|
||||
framework internals. The second part of the book serves as a reference of
|
||||
Genode's programming interfaces.
|
||||
|
||||
[http://genode.org/documentation/genode-foundations-15-05.pdf - Download the book (PDF)...]
|
||||
[https://genode.org/documentation/genode-foundations-15-05.pdf - Download the book (PDF)...]
|
||||
|
||||
In the upcoming weeks, we plan to update the documentation section of the
|
||||
genode.org website with the new material. Until then, we hope you find the
|
||||
@@ -135,8 +135,8 @@ Principal support for the 64-bit x86 architecture
|
||||
_This section was written by Adrian-Ken Rueegsegger and Reto Buerki who_
|
||||
_conducted the described line of work independent from Genode Labs._
|
||||
|
||||
The [http://muen.sk - Muen Separation Kernel (SK) project] is an Open-Source
|
||||
microkernel, which uses the [http://spark-2014.org/ - SPARK] programming
|
||||
The [https://muen.sk - Muen Separation Kernel (SK) project] is an Open-Source
|
||||
microkernel, which uses the [https://spark-2014.org/ - SPARK] programming
|
||||
language to enable light-weight formal methods for high assurance. The 64-bit
|
||||
x86 kernel, currently consisting of a little over 5'000 LOC, makes extensive
|
||||
use of the latest Intel virtualization features and has been formally proven
|
||||
@@ -337,7 +337,7 @@ Dynamic thread weights
|
||||
======================
|
||||
|
||||
With the Genode release 14.11, we introduced an entirely
|
||||
[http://genode.org/documentation/release-notes/14.11#Trading_CPU_time_between_components_using_the_HW_kernel - new scheduler]
|
||||
[https://genode.org/documentation/release-notes/14.11#Trading_CPU_time_between_components_using_the_HW_kernel - new scheduler]
|
||||
in the base-hw kernel that allows for the trading of CPU time between Genode
|
||||
components. This scheduler knows two parameters for each scheduling context: A
|
||||
priority that models the urgency for low-latency execution and a quota that
|
||||
@@ -688,7 +688,7 @@ File-system utilities
|
||||
=====================
|
||||
|
||||
When we introduced Genode's file-system session interface in
|
||||
[http://genode.org/documentation/release-notes/12.05#New_file-system_infrastructure - version 12.05],
|
||||
[https://genode.org/documentation/release-notes/12.05#New_file-system_infrastructure - version 12.05],
|
||||
it was accompanied with a RAM file system as the first implementation. Since
|
||||
then, a growing number of file-system services were developed, which took the
|
||||
RAM file system as blue print. Over the years, this practice resulted in the
|
||||
@@ -902,7 +902,7 @@ Board support for i.MX6-based Wandboard
|
||||
The increasing interest in the combination of Genode and the Freescale i.MX6
|
||||
SoC motivated us to add official support for a board based on this SoC
|
||||
to our custom kernel. We settled on the
|
||||
[http://www.wandboard.org/ - Wandboard Quad] that was developed on a volunteer
|
||||
[https://www.wandboard.org/ - Wandboard Quad] that was developed on a volunteer
|
||||
basis. Thanks to Praveen Srinivas (IIT Madras, India) and Nikolay Golikov
|
||||
(Ksys Labs LLC, Russia) who contributed their work on i.MX6. The Wandboard
|
||||
Quad features 2 GiB of DDR3 RAM and a quad-core Cortex-A9 CPU. So, unlike when
|
||||
@@ -984,7 +984,7 @@ USB-device pass-through support
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
With the availability of the
|
||||
[http://www.genode.org/documentation/release-notes/15.02#USB_session_interface - USB session interface]
|
||||
[https://genode.org/documentation/release-notes/15.02#USB_session_interface - USB session interface]
|
||||
and the new [USB device-list report] feature of the USB driver, it is now
|
||||
possible to pass a selection of raw USB devices directly to VirtualBox guests.
|
||||
|
||||
@@ -1024,7 +1024,7 @@ Platforms
|
||||
Proof-of-concept support for the seL4 kernel
|
||||
============================================
|
||||
|
||||
Since last summer when the [http://sel4.systems - seL4 kernel] was released
|
||||
Since last summer when the [https://sel4.systems - seL4 kernel] was released
|
||||
under the General Public License, we entertained the idea to run Genode on
|
||||
this kernel. As the name suggests, the seL4 kernel is a member of the L4
|
||||
family of kernels. But there are two things that set this kernel apart from
|
||||
@@ -1040,7 +1040,7 @@ Since last autumn, we conducted the port of Genode to the seL4 kernel as
|
||||
background activity. We took the chance to thoroughly document our experience
|
||||
by the following series of articles:
|
||||
|
||||
:[http://genode.org/documentation/articles/sel4_part_1 - Building a simple root task from scratch]:
|
||||
:[https://genode.org/documentation/articles/sel4_part_1 - Building a simple root task from scratch]:
|
||||
The first article describes the integration of the kernel code with Genode's
|
||||
source tree and the steps taken to create a minimalistic root task that runs
|
||||
on the kernel. It is full of hands-on information about the methodology of
|
||||
@@ -1048,12 +1048,12 @@ by the following series of articles:
|
||||
from the perspective of someone with no prior association with the seL4
|
||||
project.
|
||||
|
||||
:[http://genode.org/documentation/articles/sel4_part_2 - IPC and virtual memory]:
|
||||
:[https://genode.org/documentation/articles/sel4_part_2 - IPC and virtual memory]:
|
||||
The second part of the article series examines the seL4 kernel interface
|
||||
with respect to synchronous inter-process communication and the management
|
||||
of virtual memory.
|
||||
|
||||
:[http://genode.org/documentation/articles/sel4_part_3 - Porting the core component]:
|
||||
:[https://genode.org/documentation/articles/sel4_part_3 - Porting the core component]:
|
||||
The third article presents the steps taken to bring Genode's core and init
|
||||
components to life. Among the covered topics are the memory and capability
|
||||
management, inter-component communication, and page-fault handling. The
|
||||
@@ -1167,7 +1167,7 @@ development environment and the tool chain running within Genode's Noux
|
||||
runtime environment.
|
||||
|
||||
To use Genode 15.05, please obtain and install the new binary version of the
|
||||
tool chain available at [http://genode.org/download/tool-chain] or build it
|
||||
tool chain available at [https://genode.org/download/tool-chain] or build it
|
||||
manually via the _tool/tool_chain_ script.
|
||||
|
||||
|
||||
@@ -1205,7 +1205,7 @@ The following parts have been pruned from the Genode source tree:
|
||||
|
||||
* The _linux_drivers_ repository hosted device drivers ported via the
|
||||
original DDE-Linux approach. We
|
||||
[http://genode.org/documentation/release-notes/12.05#Re-approaching_the_Linux_device-driver_environment - disregarded this approach]
|
||||
[https://genode.org/documentation/release-notes/12.05#Re-approaching_the_Linux_device-driver_environment - disregarded this approach]
|
||||
in 2012. The only remaining code worth keeping is the i915 GPU driver, which
|
||||
will potentially re-appear in our modern _repos/dde_linux_ repository.
|
||||
|
||||
|
||||
@@ -47,13 +47,13 @@ _conducted the described line of work independent from Genode Labs._
|
||||
|
||||
After completing our x86_64 port of the Genode base-hw kernel, which was
|
||||
featured in the
|
||||
[http://genode.org/documentation/release-notes/15.05#Principal_support_for_the_64-bit_x86_architecture - previous release (15.05)],
|
||||
[https://genode.org/documentation/release-notes/15.05#Principal_support_for_the_64-bit_x86_architecture - previous release (15.05)],
|
||||
we immediately started working on our main goal: running a Genode system as
|
||||
guest on the Muen Separation Kernel (SK). This would enable the Muen platform
|
||||
to benefit from the rich ecosystem of Genode.
|
||||
|
||||
For those who have not read the 15.05 Genode release notes, [http://muen.sk - Muen]
|
||||
is an Open-Source microkernel, which uses the [http://spark-2014.org/ - SPARK]
|
||||
For those who have not read the 15.05 Genode release notes, [https://muen.sk - Muen]
|
||||
is an Open-Source microkernel, which uses the [https://spark-2014.org/ - SPARK]
|
||||
programming language to enable light-weight formal methods for high assurance.
|
||||
The 64-bit x86 kernel, currently consisting of a little over 5'000 LOC, makes
|
||||
extensive use of the latest Intel virtualization features and has been formally
|
||||
@@ -194,18 +194,18 @@ Our modified version of the NOVA microhypervisor is the used kernel.
|
||||
The user interface is based on our custom GUI stack including the nitpicker
|
||||
GUI server as well as the window manager and its companion components
|
||||
(decorator, layouter, pointer) we introduced in
|
||||
[http://genode.org/documentation/release-notes/14.08#New_GUI_architecture - version 14.08].
|
||||
[https://genode.org/documentation/release-notes/14.08#New_GUI_architecture - version 14.08].
|
||||
The display is driven by the VESA driver. User input is handled by the PS/2
|
||||
driver for handling the laptop keyboard and trackpoint, and the USB driver for
|
||||
handling an externally connected keyboard and mouse.
|
||||
|
||||
Network connectivity is provided by our port of the Intel Wireless stack that
|
||||
we introduced with the version
|
||||
[http://genode.org/documentation/release-notes/14.11#Intel_wireless_stack - 14.11].
|
||||
[https://genode.org/documentation/release-notes/14.11#Intel_wireless_stack - 14.11].
|
||||
|
||||
Our custom AHCI driver provides access to the physical hard disk. File-system
|
||||
access is provided by our
|
||||
[http://genode.org/documentation/release-notes/14.02#NetBSD_file_systems_using_rump_kernels - Rump-kernel-based file-system server].
|
||||
[https://genode.org/documentation/release-notes/14.02#NetBSD_file_systems_using_rump_kernels - Rump-kernel-based file-system server].
|
||||
|
||||
A simple Genode shell called CLI monitor allows the user to start and kill
|
||||
subsystems dynamically. Initially, the two most important subsystems are
|
||||
@@ -383,9 +383,9 @@ systems rely on a virtual file system (VFS) implemented in the OS kernel,
|
||||
Genode's VFS has the form of a library that can optionally be linked to a
|
||||
component. The implementation of this library originated from the noux runtime
|
||||
introduced in version
|
||||
[http://genode.org/documentation/release-notes/11.02#Noux_-_an_execution_environment_for_the_GNU_userland - 11.02],
|
||||
[https://genode.org/documentation/release-notes/11.02#Noux_-_an_execution_environment_for_the_GNU_userland - 11.02],
|
||||
and was later integrated into our C runtime in version
|
||||
[http://genode.org/documentation/release-notes/14.05#Per-process_virtual_file_systems - 14.05].
|
||||
[https://genode.org/documentation/release-notes/14.05#Per-process_virtual_file_systems - 14.05].
|
||||
With the current release, we take the VFS a step further by making it
|
||||
available to components without a C runtime. Thereby, low-complexity
|
||||
security-sensitive components such as CLI monitor become able to benefit from
|
||||
@@ -435,7 +435,7 @@ and identifying effective optimization vectors, tools for gathering a holistic
|
||||
view of the system are highly desired.
|
||||
|
||||
With the introduction of our light-weight
|
||||
[http://genode.org/documentation/release-notes/13.08#Light-weight_event_tracing - event-tracing facility]
|
||||
[https://genode.org/documentation/release-notes/13.08#Light-weight_event_tracing - event-tracing facility]
|
||||
in version 13.08, we laid the foundation for such tools. The current release
|
||||
extends core's TRACE service with the ability to obtain statistics about CPU
|
||||
utilization. More specifically, it enables clients of core's TRACE service to
|
||||
@@ -513,7 +513,7 @@ and PCI drivers. The ACPI driver originally executed the PCI driver as a slave
|
||||
(child) service. The ACPI driver parsed the ACPI tables and provided the
|
||||
relevant information as configuration during the PCI-driver startup. We
|
||||
changed this close coupling to the more modern and commonly used
|
||||
[http://genode.org/documentation/release-notes/14.02#New_session_interface_for_status_reporting - report_rom mechanism].
|
||||
[https://genode.org/documentation/release-notes/14.02#New_session_interface_for_status_reporting - report_rom mechanism].
|
||||
|
||||
When the new ACPI driver finishes the ACPI table parsing, it provides the
|
||||
information via a report to any interested and registered components. The
|
||||
@@ -784,8 +784,8 @@ common API among the execution environments of ported user-level device
|
||||
drivers. However, over the course of the past years, we found that this
|
||||
approach could not fulfill its promise while introducing a number of new
|
||||
problems. We reported our experiences in the release notes of versions
|
||||
[http://genode.org/documentation/release-notes/12.05#Re-approaching_the_Linux_device-driver_environment - 12.05] and
|
||||
[http://genode.org/documentation/release-notes/14.11#Roundup - 14.11].
|
||||
[https://genode.org/documentation/release-notes/12.05#Re-approaching_the_Linux_device-driver_environment - 12.05] and
|
||||
[https://genode.org/documentation/release-notes/14.11#Roundup - 14.11].
|
||||
To be able to remove the DDE-Kit API, we reworked the USB driver, our port of
|
||||
the Linux TCP/IP stack, and the wireless driver accordingly.
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
|
||||
In the
|
||||
[http://genode.org/documentation/release-notes/15.08 - previous release],
|
||||
[https://genode.org/documentation/release-notes/15.08 - previous release],
|
||||
we proudly reported the initial use of Genode as day-to-day OS. With the
|
||||
current release, we maintained the strong focus on making Genode viable as the
|
||||
foundation of a desktop OS. There are many aspects to be considered, ranging
|
||||
@@ -30,7 +30,7 @@ Armory (a dedicated article about this work will follow soon), added support
|
||||
for Xilinx Zynq-7000, and optimized our version of VirtualBox for NOVA.
|
||||
|
||||
According to our
|
||||
[http://genode.org/about/road-map - road map], we planned to address package
|
||||
[https://genode.org/about/road-map - road map], we planned to address package
|
||||
management, a modern web browser, and cross-kernel binary compatibility with
|
||||
the version 15.11. However, we decided to put emphasis on the general
|
||||
usability, robustness, and scalability first, before entering new
|
||||
@@ -106,7 +106,7 @@ as well as high-level applications:
|
||||
without the need to restart it?
|
||||
|
||||
We attempted to answer these questions with a single mechanism in version
|
||||
[http://genode.org/documentation/release-notes/12.05#System_reconfiguration_at_runtime - 12.05].
|
||||
[https://genode.org/documentation/release-notes/12.05#System_reconfiguration_at_runtime - 12.05].
|
||||
But the scalability of the approach remained unproven until now.
|
||||
|
||||
In short, configuration information is supplied to a component by its
|
||||
@@ -201,7 +201,7 @@ similar common GUI elements. These parts of the GUI must be implemented at the
|
||||
client side.
|
||||
|
||||
In
|
||||
[http://genode.org/documentation/release-notes/14.08#New_GUI_architecture - version 14.08],
|
||||
[https://genode.org/documentation/release-notes/14.08#New_GUI_architecture - version 14.08],
|
||||
we laid the foundation for a scalable GUI architecture that further reduced
|
||||
the functional scope of nitpicker and complements nitpicker with higher-level
|
||||
components for managing windows. Thanks to this architecture, most of
|
||||
@@ -1067,11 +1067,11 @@ from Linux kernel 3.14.5 to Genode. We successfully tested it on machines
|
||||
containing Intel GPUs from generation five up to generation eight. With the
|
||||
port of the Intel driver to Genode, we followed the approach that we already
|
||||
used to enable the USB stack on Genode described in
|
||||
[http://genode.org/documentation/release-notes/12.05#Re-approaching_the_Linux_device-driver_environment - release 12.05],
|
||||
[https://genode.org/documentation/release-notes/12.05#Re-approaching_the_Linux_device-driver_environment - release 12.05],
|
||||
to enable the Linux TCP/IP stack in
|
||||
[http://genode.org/documentation/release-notes/13.11#Gigabit_networking_using_the_Linux_TCP_IP_stack - release 13.11],
|
||||
[https://genode.org/documentation/release-notes/13.11#Gigabit_networking_using_the_Linux_TCP_IP_stack - release 13.11],
|
||||
and more recently to enable the Intel wireless stack in
|
||||
[http://genode.org/documentation/release-notes/14.11#Intel_wireless_stack - release 14.11].
|
||||
[https://genode.org/documentation/release-notes/14.11#Intel_wireless_stack - release 14.11].
|
||||
|
||||
The driver can be configured dynamically at run-time via the config
|
||||
ROM-mechanism. Each connector of the graphics card can be configured
|
||||
@@ -1303,14 +1303,14 @@ You can build the demo by executing
|
||||
A tutorial on how to create a bootable SD card can be found in the
|
||||
corresponding run script _os/tz_vmm.run_. A tutorial on how to reproduce the
|
||||
pre-built Linux image, Rootfs and DTB - used by the run script - can be found
|
||||
at [http://genode.org/files/release-15.11/usb_armory_tz_vmm/README].
|
||||
at [https://genode.org/files/release-15.11/usb_armory_tz_vmm/README].
|
||||
|
||||
|
||||
NOVA
|
||||
====
|
||||
|
||||
With the release 15.08, we
|
||||
[http://genode.org/documentation/release-notes/15.08#NOVA_kernel-resource_management - extended the kernel]
|
||||
[https://genode.org/documentation/release-notes/15.08#NOVA_kernel-resource_management - extended the kernel]
|
||||
to handle memory quota per Genode component. The line of work for the current
|
||||
release built upon those new mechanisms and simplifies the memory management
|
||||
within Genode's core component.
|
||||
@@ -1345,9 +1345,9 @@ Tools and build system
|
||||
Run-tool support for booting via the iPXE boot loader
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
[http://ipxe.org - iPXE] is an open source network boot firmware, which
|
||||
[https://ipxe.org - iPXE] is an open source network boot firmware, which
|
||||
supports booting from a web server
|
||||
[http://ipxe.org/howto/chainloading#breaking_the_loop_with_an_embedded_script - via HTTP].
|
||||
[https://ipxe.org/howto/chainloading#breaking_the_loop_with_an_embedded_script - via HTTP].
|
||||
|
||||
With the new load module at _tool/run/load/ipxe_, Genode's run tool has become
|
||||
able to load images via iPXE/HTTP to the test hardware. The following two
|
||||
@@ -1375,7 +1375,7 @@ This can be achieved by building iPXE with the following embedded script:
|
||||
In addition to loading an image, an iPXE boot configuration is required to
|
||||
boot the loaded image on the target machine. The run-tool back ends for NOVA,
|
||||
Fiasco.OC, and L4/Fiasco have been enhanced to automatically generate such
|
||||
configurations, which use the [http://ipxe.org/cmd/sanboot - sanboot command]
|
||||
configurations, which use the [https://ipxe.org/cmd/sanboot - sanboot command]
|
||||
to download and boot an ISO image via HTTP. To use this boot method, your
|
||||
RUN_OPT configuration must specify both the ISO-image and the iPXE-load
|
||||
modules:
|
||||
@@ -1383,7 +1383,7 @@ modules:
|
||||
! RUN_OPT += --include image/iso --include load/ipxe
|
||||
|
||||
Note that the webserver serving the ISO image must support
|
||||
[http://forum.ipxe.org/showthread.php?tid=7295&pid=10482#pid10482 - ranged requests].
|
||||
[https://forum.ipxe.org/showthread.php?tid=7295&pid=10482#pid10482 - ranged requests].
|
||||
|
||||
Thanks to Adrian-Ken Rueegsegger for these improvements!
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ version 2.1, which prompted us to fundamentally revisit the low-level resource
|
||||
management of Genode on this kernel. A summary of this undertaking is presented
|
||||
in Section [seL4 version 2.1].
|
||||
|
||||
According to the [http:/about/road-map - road map], we originally planned to
|
||||
According to the [https://genode.org/about/road-map - road map], we originally planned to
|
||||
revise the framework API in this release. Even though this topic is
|
||||
[https://github.com/genodelabs/genode/issues/1832 - very actively pursued], we
|
||||
decided to not rush it. We find it important to provide a smooth migration path
|
||||
@@ -62,7 +62,7 @@ Assignment of USB devices to virtual machines
|
||||
|
||||
As a migration strategy for running Genode on a daily basis, using VirtualBox
|
||||
to execute a feature-rich OS is vital. In release
|
||||
[http://genode.org/documentation/release-notes/15.05#USB-device_pass-through_support - 15.05],
|
||||
[https://genode.org/documentation/release-notes/15.05#USB-device_pass-through_support - 15.05],
|
||||
we added USB pass-through support to VirtualBox by enabling its integrated USB
|
||||
proxy service. Since we use the open-source edition of VirtualBox, we were
|
||||
merely able to use the OHCI device model and were therefore limited to using
|
||||
@@ -181,11 +181,11 @@ The consumer, in this case a VMM, then accesses the USB device (4).
|
||||
New support for the RISC-V CPU architecture
|
||||
###########################################
|
||||
|
||||
We became aware of [http://riscv.org - RISC-V] when attending several talks
|
||||
We became aware of [https://riscv.org - RISC-V] when attending several talks
|
||||
about the project at [https://fosdem.org - FOSDEM] in 2015. RISC-V aims to be
|
||||
an open-source hardware architecture and is now complemented by many projects
|
||||
that target the release of real hardware or ASICs (for example,
|
||||
[http://lowrisc.org - the LowRISC project]). We have experience with various
|
||||
[https://www.lowrisc.org - the LowRISC project]). We have experience with various
|
||||
major CPU architectures and many systems on a chip and, therefore, embrace a
|
||||
sharp eye on certain platform properties. Intel's ME and ARM's Trustzone
|
||||
practically lock out operating systems of certain hardware and firmware
|
||||
@@ -195,7 +195,7 @@ AMT technology for instance comes with a complete TCP/IP stack that intercepts
|
||||
packets from the integrated NIC and a VNC server that can magically expose a
|
||||
mouse and a keyboard at the USB controller. If you are interested in more
|
||||
details about this topic
|
||||
[http://blog.invisiblethings.org/papers/2015/x86_harmful.pdf - Intel x86 considered harmful]
|
||||
[https://blog.invisiblethings.org/papers/2015/x86_harmful.pdf - Intel x86 considered harmful]
|
||||
by Joanna Rutkowska is a very good read. We decided to have a deeper look at
|
||||
the RISC-V architecture as an alternative open hardware platform. Especially,
|
||||
since the LowRISC project promises a completely open system on chip, including
|
||||
@@ -281,7 +281,7 @@ GUI stack usability improvements
|
||||
|
||||
Motivated by the daily use of Genode as desktop OS by an increasingly number
|
||||
of developers, the window-layouter component of the
|
||||
[http://genode.org/documentation/release-notes/15.11#GUI_stack - GUI stack]
|
||||
[https://genode.org/documentation/release-notes/15.11#GUI_stack - GUI stack]
|
||||
received welcomed usability improvements.
|
||||
|
||||
|
||||
@@ -451,7 +451,7 @@ components within the _world_ repository are not subjected to the regular
|
||||
quality-assurance measures of Genode Labs. Hence, problems are to be expected.
|
||||
If you encounter bugs, build problems, or stability issues, please report them
|
||||
to the [https://github.com/genodelabs/genode-world/issues - issue tracker] or
|
||||
the [http://genode.org/community/mailing-lists - mailing list].
|
||||
the [https://genode.org/community/mailing-lists - mailing list].
|
||||
|
||||
|
||||
Updated 3rd-party software
|
||||
@@ -499,10 +499,10 @@ Build integration
|
||||
-----------------
|
||||
|
||||
Building Genode scenarios running on top of the
|
||||
[http://muen.sk - Muen separation kernel] has been greatly simplified by
|
||||
[https://muen.sk - Muen separation kernel] has been greatly simplified by
|
||||
properly integrating the Muen system build process into the Genode build system.
|
||||
As described in the
|
||||
[http://genode.org/documentation/release-notes/15.08#Genode_on_top_of_the_Muen_Separation_Kernel - 15.08 release notes],
|
||||
[https://genode.org/documentation/release-notes/15.08#Genode_on_top_of_the_Muen_Separation_Kernel - 15.08 release notes],
|
||||
the architecture with Muen is different since the entire hw_x86_64_muen Genode
|
||||
system runs as a guest VM on top of the separation kernel. This means that the
|
||||
Genode base-hw image must itself be packaged into the final Muen system image
|
||||
@@ -531,7 +531,7 @@ _image/muen_ run-tool plugin, which processes the following RUN_OPT parameters.
|
||||
|
||||
The options are automatically added to the _etc/build.conf_ file for the
|
||||
hw_x86_64_muen base-hw platform. The
|
||||
[http://genode.org/documentation/platforms/muen - documentation] has been
|
||||
[https://genode.org/documentation/platforms/muen - documentation] has been
|
||||
updated to reflect the new, simplified build process.
|
||||
|
||||
A port file was added to facilitate the download of the Muen sources v0.7 and
|
||||
@@ -562,7 +562,7 @@ drivers to transparently use MSIs for passed-through PCI devices.
|
||||
seL4 version 2.1
|
||||
================
|
||||
|
||||
By the end of 2015, the [http://sel4.systems/ - seL4 kernel] version 2.0 was
|
||||
By the end of 2015, the [https://sel4.systems/ - seL4 kernel] version 2.0 was
|
||||
published. With the current release, we update Genode's preliminary support
|
||||
for this kernel from the experimental branch of one year ago to the master
|
||||
branch of version 2.1. Note that this line of work is still considered as an
|
||||
|
||||
@@ -190,7 +190,7 @@ The changes between the last year's edition and the current revision are:
|
||||
: <p>
|
||||
: <div style="clear: both; float: left; margin-right:20px;">
|
||||
: <a class="internal-link" href="https://genode.org">
|
||||
: <img class="image-inline" src="http://genode.org/documentation/genode-foundations-title.png">
|
||||
: <img class="image-inline" src="https://genode.org/documentation/genode-foundations-title.png">
|
||||
: </a>
|
||||
: </div>
|
||||
: </p>
|
||||
|
||||
@@ -412,7 +412,7 @@ to prepare your system for Muen.
|
||||
|
||||
As a next step, create a VirtualBox VM with a 32-bit guest OS of your choice
|
||||
and install the guest additions
|
||||
[http://download.virtualbox.org/virtualbox/4.3.36/VBoxGuestAdditions_4.3.36.iso].
|
||||
[https://download.virtualbox.org/virtualbox/4.3.36/VBoxGuestAdditions_4.3.36.iso].
|
||||
In this tutorial, we chose Windows 7.
|
||||
|
||||
Note: use guest additions close to the VirtualBox version of Genode. We have
|
||||
@@ -858,7 +858,7 @@ Init configuration changes
|
||||
==========================
|
||||
|
||||
We refined the label-based server-side policy-selection mechanism introduced in
|
||||
[http://genode.org/documentation/release-notes/15.11#Label-dependent_session_routing - version 15.11]
|
||||
[https://genode.org/documentation/release-notes/15.11#Label-dependent_session_routing - version 15.11]
|
||||
to limit the damage of spelling mistakes in manually crafted configurations.
|
||||
I.e., consider the following policy of a file-system server with a misspelled
|
||||
'label_prefix' attribute:
|
||||
@@ -1015,7 +1015,7 @@ RISC-V front-end server
|
||||
=======================
|
||||
|
||||
In version
|
||||
[http://genode.org/documentation/release-notes/16.02#New_support_for_the_RISC-V_CPU_architecture - 16.02],
|
||||
[https://genode.org/documentation/release-notes/16.02#New_support_for_the_RISC-V_CPU_architecture - 16.02],
|
||||
Genode gained support for the RISC-V CPU architecture. Genode can be executed
|
||||
on either a simulator or a synthesized FPGA softcore, e.g., on Xilinx Zynq
|
||||
FPGAs. On the latter platform, the RISC-V core is a secondary CPU that
|
||||
|
||||
@@ -141,7 +141,7 @@ Third, even though not inherent to synchronous RPC, Genode's original design
|
||||
facilitated the use of a session capability as argument for requesting the
|
||||
parent to close a specific session. However, the use of capabilities as
|
||||
re-identifiable tokens is not well supported by most kernels, including seL4
|
||||
([http://sel4.systems/pipermail/devel/2014-November/000114.html - discussion]
|
||||
([https://sel4.systems/pipermail/devel/2014-November/000114.html - discussion]
|
||||
on the seL4 mailing list).
|
||||
|
||||
|
||||
@@ -534,7 +534,7 @@ Transition to new framework API
|
||||
===============================
|
||||
|
||||
Since we fundamentally revised Genode's API in
|
||||
[http://genode.org/documentation/release-notes/16.05#The_great_API_renovation - version 16.05],
|
||||
[https://genode.org/documentation/release-notes/16.05#The_great_API_renovation - version 16.05],
|
||||
we gradually adapt our existing components. Given that Genode comes with
|
||||
over 300 components, this is no small feat. But with 30 percent of the
|
||||
components converted, we already made substantial progress.
|
||||
@@ -603,11 +603,11 @@ your own time source, you can find an example at _os/include/os/timer.h_ .
|
||||
Support for smart cards
|
||||
=======================
|
||||
|
||||
We ported the [http://pcsclite.alioth.debian.org/pcsclite.html - PC/SC Lite]
|
||||
We ported the [https://pcsclite.alioth.debian.org/pcsclite.html - PC/SC Lite]
|
||||
library to Genode, which provides a commonly used API for communicating with
|
||||
smart cards. It supports USB smart card readers, using the
|
||||
[http://pcsclite.alioth.debian.org/ccid.html - CCID] library as driver.
|
||||
The CCID driver itself requires [http://libusb.info - libusb] to access the
|
||||
[https://pcsclite.alioth.debian.org/ccid.html - CCID] library as driver.
|
||||
The CCID driver itself requires [https://libusb.info - libusb] to access the
|
||||
USB device.
|
||||
|
||||
Vanilla PC/SC Lite is structured as a client-server architecture, consisting
|
||||
|
||||
@@ -154,7 +154,7 @@ edition are:
|
||||
: <p>
|
||||
: <div style="clear: both; float: left; margin-right:20px;">
|
||||
: <a class="internal-link" href="https://genode.org">
|
||||
: <img class="image-inline" src="http://genode.org/documentation/genode-foundations-title.png">
|
||||
: <img class="image-inline" src="https://genode.org/documentation/genode-foundations-title.png">
|
||||
: </a>
|
||||
: </div>
|
||||
: </p>
|
||||
@@ -834,7 +834,7 @@ Nim programming language
|
||||
========================
|
||||
|
||||
In the previous release, we were proud to debut a
|
||||
[http://genode.org/documentation/release-notes/17.02#Linux_TCP_IP_stack_as_VFS_plugin - pluggable TCP/IP stack]
|
||||
[https://genode.org/documentation/release-notes/17.02#Linux_TCP_IP_stack_as_VFS_plugin - pluggable TCP/IP stack]
|
||||
for the VFS library. This required an overhaul of the Berkley sockets and
|
||||
'select' implementation within the POSIX runtime, but scrutiny of the POSIX
|
||||
standard leaves us reluctant to endorse it as a network API.
|
||||
|
||||
@@ -643,7 +643,7 @@ system partition in a GUID partition table (GPT). The image is equipped by the
|
||||
new 'image/uefi' module with the GRUB2 boot loader, a GRUB2 configuration, and
|
||||
the corresponding Genode run scenario. The final image can be copied with 'dd'
|
||||
to a bootable USB stick. Additionally, we added support to boot such an image
|
||||
on Qemu leveraging [http://www.tianocore.org - TianoCore's] UEFI firmware.
|
||||
on Qemu leveraging [https://www.tianocore.org - TianoCore's] UEFI firmware.
|
||||
|
||||
As a side project, minor virtualization support for AMD has been added to
|
||||
Virtualbox 4 and to the NOVA kernel on Genode. This enables us to run a 32-bit
|
||||
|
||||
@@ -728,7 +728,7 @@ on Genode:
|
||||
noux package. Note, however, that this port comprises solely the
|
||||
functionality needed for simple scripting.
|
||||
|
||||
:[http://flif.info/ - FLIF]: is a library for the Free Lossless Image
|
||||
:[https://flif.info/ - FLIF]: is a library for the Free Lossless Image
|
||||
Format. Thanks to Emery Hemingway for making it available in the
|
||||
genode-world repository.
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ since the last year's edition are:
|
||||
: <p>
|
||||
: <div style="clear: both; float: left; margin-right:20px;">
|
||||
: <a class="internal-link" href="https://genode.org">
|
||||
: <img class="image-inline" src="http://genode.org/documentation/genode-foundations-title.png">
|
||||
: <img class="image-inline" src="https://genode.org/documentation/genode-foundations-title.png">
|
||||
: </a>
|
||||
: </div>
|
||||
: </p>
|
||||
@@ -603,7 +603,7 @@ Over the course of the past year, we started to look into Java support for
|
||||
Genode with the ultimate goal of porting an existing Java Virtual Machine
|
||||
(JVM), which translates and executes Java byte code, to Genode. After
|
||||
investigating possible JVM candidates, it became obvious that
|
||||
[http://openjdk.java.net - OpenJDK] is the only viable option when looking for
|
||||
[https://openjdk.java.net - OpenJDK] is the only viable option when looking for
|
||||
a functional, maintained, feature complete, and open-source Java SDK.
|
||||
Therefore, we decided upon OpenJDK version 9 and started to port OpenJDK's
|
||||
HotSpot virtual machine.
|
||||
|
||||
@@ -979,7 +979,7 @@ NOVA microhypervisor
|
||||
====================
|
||||
|
||||
The NOVA kernel branch in use has been switched to revision r10, which is an
|
||||
intermediate result of [http://cyberus-technology.de/ - Cyberus Technology]
|
||||
intermediate result of [https://cyberus-technology.de/ - Cyberus Technology]
|
||||
and of [https://www.genode-labs.com/ - Genode Labs] to harmonize their
|
||||
independently developed NOVA kernel branches. We hope to mutually benefit from
|
||||
the evolution of NOVA over the long run by having a common NOVA trunk and
|
||||
|
||||
@@ -620,7 +620,7 @@ system.
|
||||
|
||||
Now, one could use the Firefox appliance VM of Sculpt (see the
|
||||
[https://genode.org/documentation/release-notes/18.05 - release notes] or the
|
||||
[http://genodians.org/alex-ab/2019-03-06-disposal-browser-vm - Genodians article])
|
||||
[https://genodians.org/alex-ab/2019-03-06-disposal-browser-vm - Genodians article])
|
||||
for this. But this VM aims for a long-term browsing experience which, in the
|
||||
context of mere captive-portal handling, brings some drawbacks like a much
|
||||
higher RAM consumption or the required sessions for USB detection and shared
|
||||
@@ -665,13 +665,13 @@ in the new '-t <architecture-board-kernel>' command line option, which
|
||||
instructs autopilot to generate a build directory for _architecture_ and
|
||||
execute tests for the _board-kernel_ combination.
|
||||
|
||||
! autopilot -t x86_64-pc-sel4 -t x86_64-pc-nova -r run/log
|
||||
! autopilot -t x86_64-pc-sel4 -t x86_64-pc-nova -r log
|
||||
|
||||
The known options for '-k kernel' and '-p platform' are still supported with
|
||||
the small change that the platform must now be defined as
|
||||
_architecture-board_.
|
||||
|
||||
! autopilot -p x86_64-pc -k sel4 -k nova -r run/log
|
||||
! autopilot -p x86_64-pc -k sel4 -k nova -r log
|
||||
|
||||
Autopilot now also documents the hidden feature to propagate custom 'RUN_OPTs'
|
||||
via the 'RUN_OPT_AUTOPILOT' environment variable to the run tool executed.
|
||||
|
||||
@@ -36,7 +36,7 @@ Redesign of the administrative user interface of Sculpt OS
|
||||
##########################################################
|
||||
|
||||
On our [https://genode.org/about/road-map - road map] for 2020, we stated
|
||||
the dwarfing of the barrier of entry as our main concern of the year.
|
||||
the reducing of the barrier of entry as our main concern of the year.
|
||||
We highlighted the ease of use of Sculpt OS as one particular work area.
|
||||
|
||||
|
||||
@@ -248,7 +248,7 @@ Finally, you have to copy u-boot to the SD-card as root user:
|
||||
! dd if=`tool/ports/current uboot`/imx8q_evk/imx-mkimage/iMX8M/flash.bin \
|
||||
! of=/dev/sd<?> bs=1k seek=33 conv=fsync
|
||||
|
||||
Of course, you have replace 'sd<?>' with the correct device node of your
|
||||
Of course, you have to replace 'sd<?>' with the correct device node of your
|
||||
attached SD-card.
|
||||
|
||||
After enabling the USB host controller driver, we could successfully re-use the
|
||||
@@ -274,7 +274,7 @@ generates configurations for some of those drivers. For the time being, the
|
||||
changes to the Sculpt manager are not yet part of the official release.
|
||||
Nevertheless, you can produce a Sculpt OS image to be run on an i.MX 8M EVK
|
||||
board by using the following
|
||||
[https://github.com/skalk/sculpt_20.02_imx8q_evk/ - topic branch].
|
||||
[https://github.com/skalk/genode/commits/sculpt_20.02_imx8q_evk - topic branch].
|
||||
|
||||
Alternatively, you can also have a look at Sculpt OS on ARMv8 hardware by
|
||||
following the video recordings of the following talk at FOSDEM 2020.
|
||||
@@ -362,7 +362,7 @@ Base-framework refinements
|
||||
Replacing the 'Lock' type by new 'Mutex' and 'Blockade' types
|
||||
-------------------------------------------------------------
|
||||
|
||||
Up to now, Genode's lock implementation supports mainly two flavour of usage.
|
||||
Up to now, Genode's lock implementation supports mainly two flavours of usage.
|
||||
On the one hand, it is used to protect critical sections where the lock is
|
||||
initialized as unlocked. In the contention case, the lock holder is supposed
|
||||
to release the critical section. On the other hand, the lock is used as
|
||||
@@ -371,8 +371,8 @@ the lock is initialized as locked during instantiation whereby the thread that
|
||||
releases the lock is not necessarily the same thread as the creator of the
|
||||
lock.
|
||||
|
||||
We decided to make the two usage pattern more obvious by introducing two
|
||||
separate classes, called 'Mutex' and 'Blockade'. The reasons are two fold.
|
||||
We decided to make the two usage patterns more obvious by introducing two
|
||||
separate classes, called 'Mutex' and 'Blockade'. The reasons are twofold.
|
||||
First, during code review, the usage pattern at hand becomes more obvious.
|
||||
Second, by codifying the programmer's intent behind the use of a
|
||||
synchronization primitive, Genode becomes able to perform additional checks,
|
||||
@@ -385,7 +385,7 @@ releases and to ultimately remove the 'Genode::Lock' from the public API.
|
||||
|
||||
The 'Mutex' class is more restrictive compared to the 'Lock' class.
|
||||
|
||||
* At initialisation time, it is always unlocked.
|
||||
* At initialization time, it is always unlocked.
|
||||
* To enter and leave a critical section the methods 'acquire()' and
|
||||
'release()' are used.
|
||||
* A 'Mutex::Guard' is provided, which will 'acquire()' a mutex at
|
||||
@@ -447,7 +447,7 @@ after these attempts, a polling timeout exception is thrown. The function
|
||||
simply returns in case of success. With the current Genode release, we have
|
||||
added a 'wait_for_any' method with almost the same semantics but instead of
|
||||
waiting for all conditions to become true, it returns if any condition is
|
||||
meet, and thus, implements a logical OR.
|
||||
met, and thus, implements a logical OR.
|
||||
|
||||
|
||||
Migration to modern block-device API
|
||||
@@ -484,7 +484,7 @@ was rendered silent and brought in the 'printf' back end from DDE Linux to
|
||||
be able to produce better formatted LOG messages in the future.
|
||||
|
||||
Until now the component only supported HDA and EAP (ES1370 PCI) devices. The
|
||||
first is primarily intended to be used with real hardware wheres the latter
|
||||
first is primarily intended to be used with real hardware whereas the latter
|
||||
was used during the initial porting effort in Qemu. That being said, the EAP
|
||||
driver apparently also works on hardware according to community feedback.
|
||||
|
||||
@@ -496,7 +496,7 @@ usable. Nevertheless, with the driver enabled, interested parties are free to
|
||||
investigate the cause for the current issues.
|
||||
|
||||
All in all, this update is solely a catch up effort to stay more
|
||||
update-to-date with the upstream changes and to pull in HDA quirks for more
|
||||
up-to-date with the upstream changes and to pull in HDA quirks for more
|
||||
recent systems. More interesting changes to the driver component, like
|
||||
reworking the OpenBSD kernel emulation layer and bringing support for USB
|
||||
audio devices, are scheduled for future releases.
|
||||
@@ -551,7 +551,7 @@ constant load. With this release, we added the feature to dynamically adjust
|
||||
the GUI refresh rate depending on the rate of user interactivity.
|
||||
Additionally, if all virtual CPUs go to idle state, the GUI refresh is stopped
|
||||
completely. With these measures, the overall CPU load could be reduced
|
||||
noticeable.
|
||||
noticeably.
|
||||
|
||||
|
||||
TCP terminal
|
||||
@@ -588,14 +588,14 @@ implementations of a window-layouter, and decorator. The interplay of the
|
||||
latter three allows a window management that scales from simple to rich and
|
||||
sophisticated without lowering its security properties. For a brief description
|
||||
of its architecture, please refer to the release notes of
|
||||
[http://genode.org/documentation/release-notes/14.08 - 14.08].
|
||||
[https://genode.org/documentation/release-notes/14.08 - 14.08].
|
||||
|
||||
In this architecture, the window layouter is responsible for the arrangement
|
||||
of the different windows. It exports a data model of the window layout.
|
||||
Although, the example implementation of the window layouter introduced in
|
||||
14.08 was simple, it already contained a notion of having different virtual
|
||||
screens and screen sections, beside the actual window placements. However,
|
||||
until now there was no use-case of switching dynamically in between different
|
||||
until now there was no use-case of switching dynamically between different
|
||||
virtual screens respectively window sets related to them.
|
||||
|
||||
While using more and more different graphical components within Sculpt, the
|
||||
|
||||
1168
doc/release_notes-20-05.txt
Normal file
1168
doc/release_notes-20-05.txt
Normal file
File diff suppressed because it is too large
Load Diff
1015
doc/release_notes-20-08.txt
Normal file
1015
doc/release_notes-20-08.txt
Normal file
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@
|
||||
Herein, we lay out our plans for evolving Genode. Progress in addition to this
|
||||
planning will very much depend on the degree of community support the project
|
||||
will receive. The
|
||||
[http:/about/challenges - Challenges] page collects some of our ideas to
|
||||
[https://genode.org/about/challenges - Challenges] page collects some of our ideas to
|
||||
advance Genode in various further directions.
|
||||
|
||||
The road map is not fixed. If there is commercial interest of pushing the
|
||||
|
||||
@@ -111,11 +111,6 @@ but build upon of each other:
|
||||
The repository contains a server that uses a rump kernel to provide
|
||||
various NetBSD file systems to Genode.
|
||||
|
||||
:'dde_zircon':
|
||||
|
||||
This repository contains the emulation environment for drivers
|
||||
ported from the Zircon kernel.
|
||||
|
||||
:'ports':
|
||||
|
||||
This source-code repository hosts ports of 3rd-party applications to
|
||||
|
||||
@@ -1,119 +0,0 @@
|
||||
|
||||
=============================================
|
||||
How to use Genode with the Fiasco microkernel
|
||||
=============================================
|
||||
|
||||
|
||||
Norman Feske, Christian Helmuth
|
||||
|
||||
Abstract
|
||||
########
|
||||
|
||||
This documentation describes the process of building and booting the L4/Fiasco
|
||||
version of Genode. It assumes that you are familiar with basic concepts
|
||||
described in the introductory documentation of Genode, namely the "How to start
|
||||
exploring Genode" document.
|
||||
|
||||
|
||||
Preconditions
|
||||
#############
|
||||
|
||||
The Fiasco version of Genode relies on the following components from
|
||||
the source tree of the Fiasco microkernel and the L4 environment (which also
|
||||
need additional tools).
|
||||
|
||||
|
||||
Tools
|
||||
=====
|
||||
|
||||
* Gawk
|
||||
* Bison
|
||||
* Byacc
|
||||
* Python
|
||||
|
||||
|
||||
The Fiasco microkernel
|
||||
======================
|
||||
|
||||
Information about Fiasco are provided at its official website:
|
||||
|
||||
! http://os.inf.tu-dresden.de/fiasco/prev/
|
||||
|
||||
To download the kernel and integrate it with Genode, issue the following
|
||||
command from within the toplevel directory:
|
||||
|
||||
! ./tool/ports/prepare_port fiasco
|
||||
|
||||
For the vesa driver on x86 the x86emu library is required and can be downloaded
|
||||
and prepared by invoking the following command:
|
||||
|
||||
! ./tool/ports/prepare_port x86emu
|
||||
|
||||
This command will download a prepackaged version of the kernel tested
|
||||
with Genode. The build process of the kernel is integrated with Genode's
|
||||
build system. After creating a build directory using 'create_builddir'
|
||||
with 'fiasco_x86' as argument:
|
||||
|
||||
! <genode-dir>/tool/create_builddir fiasco_x86 \
|
||||
! BUILD_DIR=<build-dir>
|
||||
|
||||
From within the new <build-dir>, the kernel can be compiled via
|
||||
|
||||
! make kernel/fiasco
|
||||
|
||||
When using Genode's run mechanism, there is no need to explicitly build the
|
||||
kernel. The run environment (see 'tool/run/boot_dir/fiasco') takes care of it.
|
||||
So you can simple execute run scripts from within the build directory, for
|
||||
example:
|
||||
|
||||
! make run/demo
|
||||
|
||||
|
||||
Behind the scenes
|
||||
=================
|
||||
|
||||
For using the L4/Fiasco kernel, some basic user-level components and libraries
|
||||
are needed. These are subsumed under the name L4 environment an are organized
|
||||
as a number of packages. These packages provide two types of components. There
|
||||
are low-level components for booting up and interfacing to Fiasco and there are
|
||||
higher-level components that compose a basic OS infrastructure. For Genode, we
|
||||
only rely on the low-level packages.
|
||||
|
||||
Previous versions of Genode included all necessary sources from the L4
|
||||
environment in the '3rd/fiasco/snapshot' subdirectory. From release 10.02, the
|
||||
'3rd' directory is no longer part of the release archive and also removed from
|
||||
the subversion repository. Please download the '3rd_fiasco.tar.bz2' archive.
|
||||
The source are organized as follows
|
||||
|
||||
:'tool': contains the tools that are used by the build processes of
|
||||
the L4 environment and Fiasco. For example, the build process of Fiasco
|
||||
relies on the 'preprocess' tool.
|
||||
|
||||
:'kernel': contains the Fiasco microkernel.
|
||||
|
||||
:'l4': contains the L4-environment source tree. The single packages
|
||||
are located at 'l4/pkg'.
|
||||
|
||||
From all the packages of the L4 environment, the following three are of
|
||||
interest for using Genode:
|
||||
|
||||
:'pkg/l4sys': contains the Fiasco system-call bindings.
|
||||
|
||||
The system-call bindings are a set of C-header files that define the
|
||||
application-programming interface for invoking the system calls of
|
||||
Fiasco.
|
||||
|
||||
:'pkg/sigma0':
|
||||
|
||||
Sigma0 is the initial memory manager required to use Fiasco.
|
||||
|
||||
:'pkg/bootstrap':
|
||||
|
||||
Bootstrap is the program that is started by the boot loader.
|
||||
After being started, Bootstrap prepares the bare machine to
|
||||
accommodate Fiasco. On many embedded architectures, bootstrap
|
||||
is used to create a single binary image containing all boot-time
|
||||
OS components.
|
||||
|
||||
Those components are implicitly built by the Genode build system when
|
||||
issuing 'make kernel/fiasco'.
|
||||
@@ -10,7 +10,5 @@ LIBS += startup-fiasco syscall-fiasco
|
||||
|
||||
SRC_CC += capability.cc capability_raw.cc
|
||||
SRC_CC += rpc_dispatch_loop.cc
|
||||
SRC_CC += rpc_entrypoint_manage.cc
|
||||
SRC_CC += thread.cc thread_bootstrap.cc thread_myself.cc
|
||||
SRC_CC += stack_area_addr.cc
|
||||
SRC_CC += rpc_entry.cc
|
||||
|
||||
@@ -1 +1 @@
|
||||
2020-02-27 6311f83c887384fa01828af695bae799b148e0ad
|
||||
2020-08-27 b77ed0937d21da6a407cb5fd9738055dfaf68507
|
||||
|
||||
@@ -102,11 +102,6 @@ namespace Genode {
|
||||
*/
|
||||
void resume();
|
||||
|
||||
/**
|
||||
* Cancel currently blocking operation
|
||||
*/
|
||||
void cancel_blocking();
|
||||
|
||||
/**
|
||||
* This thread is about to be bound
|
||||
*
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
#define _CORE__INCLUDE__RPC_CAP_FACTORY_H_
|
||||
|
||||
#include <base/allocator.h>
|
||||
#include <base/lock.h>
|
||||
#include <base/capability.h>
|
||||
|
||||
namespace Genode { class Rpc_cap_factory; }
|
||||
|
||||
@@ -82,7 +82,7 @@ void Irq_object::_wait_for_irq()
|
||||
void Irq_object::start()
|
||||
{
|
||||
::Thread::start();
|
||||
_sync_bootup.lock();
|
||||
_sync_bootup.block();
|
||||
}
|
||||
|
||||
|
||||
@@ -94,10 +94,10 @@ void Irq_object::entry()
|
||||
}
|
||||
|
||||
/* thread is up and ready */
|
||||
_sync_bootup.unlock();
|
||||
_sync_bootup.wakeup();
|
||||
|
||||
/* wait for first ack_irq */
|
||||
_sync_ack.lock();
|
||||
_sync_ack.block();
|
||||
|
||||
while (true) {
|
||||
|
||||
@@ -108,7 +108,7 @@ void Irq_object::entry()
|
||||
|
||||
Genode::Signal_transmitter(_sig_cap).submit(1);
|
||||
|
||||
_sync_ack.lock();
|
||||
_sync_ack.block();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,7 +116,6 @@ void Irq_object::entry()
|
||||
Irq_object::Irq_object(unsigned irq)
|
||||
:
|
||||
Thread_deprecated<4096>("irq"),
|
||||
_sync_ack(Lock::LOCKED), _sync_bootup(Lock::LOCKED),
|
||||
_irq(irq)
|
||||
{ }
|
||||
|
||||
|
||||
@@ -142,17 +142,6 @@ Thread_state Platform_thread::state()
|
||||
}
|
||||
|
||||
|
||||
void Platform_thread::cancel_blocking()
|
||||
{
|
||||
l4_umword_t dummy;
|
||||
l4_threadid_t invalid = L4_INVALID_ID;
|
||||
|
||||
l4_inter_task_ex_regs(_l4_thread_id, ~0UL, ~0UL,
|
||||
&invalid, &invalid, &invalid,
|
||||
&dummy, &dummy, &dummy, 0, l4_utcb_get());
|
||||
}
|
||||
|
||||
|
||||
Platform_thread::Platform_thread(size_t, const char *name, unsigned,
|
||||
Affinity::Location, addr_t)
|
||||
: _l4_thread_id(L4_INVALID_ID), _name(name) { }
|
||||
|
||||
@@ -49,14 +49,6 @@ void Thread::start()
|
||||
}
|
||||
|
||||
|
||||
void Thread::cancel_blocking()
|
||||
{
|
||||
/*
|
||||
* Within core, we never need to unblock threads
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
void Thread::_deinit_platform_thread()
|
||||
{
|
||||
/* destruct platform thread */
|
||||
|
||||
@@ -204,11 +204,10 @@ void Genode::ipc_reply(Native_capability caller, Rpc_exception_code exc,
|
||||
}
|
||||
|
||||
|
||||
Genode::Rpc_request Genode::ipc_reply_wait(Reply_capability const &last_caller,
|
||||
Rpc_exception_code exc,
|
||||
Msgbuf_base &reply_msg,
|
||||
Msgbuf_base &request_msg,
|
||||
Rpc_entrypoint::Native_context &)
|
||||
Genode::Rpc_request Genode::ipc_reply_wait(Reply_capability const &last_caller,
|
||||
Rpc_exception_code exc,
|
||||
Msgbuf_base &reply_msg,
|
||||
Msgbuf_base &request_msg)
|
||||
{
|
||||
using namespace Fiasco;
|
||||
|
||||
@@ -275,10 +274,9 @@ Genode::Rpc_request Genode::ipc_reply_wait(Reply_capability const &last_
|
||||
}
|
||||
|
||||
|
||||
Ipc_server::Ipc_server(Rpc_entrypoint::Native_context& native_context)
|
||||
Ipc_server::Ipc_server()
|
||||
:
|
||||
Native_capability(Capability_space::import(Fiasco::l4_myself(), Rpc_obj_key())),
|
||||
_native_context(native_context)
|
||||
Native_capability(Capability_space::import(Fiasco::l4_myself(), Rpc_obj_key()))
|
||||
{ }
|
||||
|
||||
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
*/
|
||||
|
||||
/* Genode includes */
|
||||
#include <base/cancelable_lock.h>
|
||||
#include <base/thread.h>
|
||||
#include <cpu/atomic.h>
|
||||
#include <cpu/memory_barrier.h>
|
||||
@@ -25,7 +24,7 @@ namespace Fiasco {
|
||||
using namespace Genode;
|
||||
|
||||
|
||||
Cancelable_lock::Cancelable_lock(Cancelable_lock::State initial)
|
||||
Lock::Lock(Lock::State initial)
|
||||
: _state(UNLOCKED), _owner(nullptr)
|
||||
{
|
||||
if (initial == LOCKED)
|
||||
@@ -33,28 +32,27 @@ Cancelable_lock::Cancelable_lock(Cancelable_lock::State initial)
|
||||
}
|
||||
|
||||
|
||||
void Cancelable_lock::lock()
|
||||
void Lock::lock()
|
||||
{
|
||||
Applicant myself(Thread::myself());
|
||||
lock(myself);
|
||||
}
|
||||
|
||||
|
||||
void Cancelable_lock::lock(Applicant &myself)
|
||||
void Lock::lock(Applicant &myself)
|
||||
{
|
||||
/*
|
||||
* XXX: How to notice cancel-blocking signals issued when being outside the
|
||||
* 'l4_ipc_sleep' system call?
|
||||
*/
|
||||
while (!Genode::cmpxchg(&_state, UNLOCKED, LOCKED))
|
||||
if (Fiasco::l4_ipc_sleep(Fiasco::l4_ipc_timeout(0, 0, 500, 0)) != L4_IPC_RETIMEOUT)
|
||||
throw Genode::Blocking_canceled();
|
||||
Fiasco::l4_ipc_sleep(Fiasco::l4_ipc_timeout(0, 0, 500, 0));
|
||||
|
||||
_owner = myself;
|
||||
}
|
||||
|
||||
|
||||
void Cancelable_lock::unlock()
|
||||
void Lock::unlock()
|
||||
{
|
||||
_owner = Applicant(nullptr);
|
||||
Genode::memory_barrier();
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
|
||||
/* Genode includes */
|
||||
#include <base/sleep.h>
|
||||
#include <base/lock.h>
|
||||
|
||||
/* L4/Fiasco includes */
|
||||
namespace Fiasco {
|
||||
|
||||
@@ -1,120 +0,0 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Fiasco configuration
|
||||
#
|
||||
CONFIG_HAS_FPU_OPTION=y
|
||||
CONFIG_HAS_LAZY_FPU=y
|
||||
CONFIG_HAS_VIRT_OBJ_SPACE_OPTION=y
|
||||
CONFIG_HAS_SERIAL_OPTION=y
|
||||
CONFIG_HAS_JDB_DISASM_OPTION=y
|
||||
CONFIG_HAS_JDB_GZIP_OPTION=y
|
||||
CONFIG_HAS_MP_OPTION=y
|
||||
CONFIG_HAS_CPU_VIRT=y
|
||||
|
||||
#
|
||||
# Target configuration
|
||||
#
|
||||
# CONFIG_IA32 is not set
|
||||
# CONFIG_AMD64 is not set
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_MIPS is not set
|
||||
# CONFIG_PF_INTEGRATOR is not set
|
||||
# CONFIG_PF_REALVIEW is not set
|
||||
# CONFIG_PF_SUNXI is not set
|
||||
# CONFIG_PF_BCM283X is not set
|
||||
# CONFIG_PF_SA1100 is not set
|
||||
# CONFIG_PF_XSCALE is not set
|
||||
# CONFIG_PF_ARMADA38X is not set
|
||||
# CONFIG_PF_KIRKWOOD is not set
|
||||
# CONFIG_PF_TEGRA is not set
|
||||
# CONFIG_PF_LAYERSCAPE is not set
|
||||
# CONFIG_PF_IMX is not set
|
||||
# CONFIG_PF_ARM_VIRT is not set
|
||||
# CONFIG_PF_RCAR3 is not set
|
||||
CONFIG_PF_EXYNOS=y
|
||||
# CONFIG_PF_S3C2410 is not set
|
||||
# CONFIG_PF_OMAP is not set
|
||||
# CONFIG_PF_ZYNQ is not set
|
||||
# CONFIG_PF_ZYNQMP is not set
|
||||
CONFIG_BSP_NAME="exynos"
|
||||
CONFIG_CAN_ARM_CPU_CORTEX_A15=y
|
||||
CONFIG_ARM_V7=y
|
||||
CONFIG_ARM_V6PLUS=y
|
||||
CONFIG_ARM_V7PLUS=y
|
||||
CONFIG_PF_EXYNOS5=y
|
||||
CONFIG_CPU_SUSPEND=y
|
||||
CONFIG_PF_EXYNOS_PKG_IDS=""
|
||||
# CONFIG_PF_EXYNOS4_4210 is not set
|
||||
# CONFIG_PF_EXYNOS4_4412 is not set
|
||||
CONFIG_PF_EXYNOS5_5250=y
|
||||
# CONFIG_PF_EXYNOS5_5410 is not set
|
||||
CONFIG_PF_EXYNOS_UART_NATIVE=y
|
||||
CONFIG_PF_EXYNOS_UART_NR=2
|
||||
CONFIG_PF_EXYNOS_TIMER_MCT=y
|
||||
# CONFIG_PF_EXYNOS_TIMER_PWM is not set
|
||||
# CONFIG_PF_EXYNOS_TIMER_GEN is not set
|
||||
CONFIG_ABI_VF=y
|
||||
CONFIG_ARM_CORTEX_A15=y
|
||||
# CONFIG_CPU_VIRT is not set
|
||||
CONFIG_FPU=y
|
||||
CONFIG_LAZY_FPU=y
|
||||
CONFIG_HAVE_ARM_SECMONIF_NONE=y
|
||||
CONFIG_HAVE_ARM_SECMONIF_MC=y
|
||||
# CONFIG_ARM_ALIGNMENT_CHECK is not set
|
||||
CONFIG_ARM_EM_STD=y
|
||||
# CONFIG_ARM_EM_NS is not set
|
||||
# CONFIG_ARM_EM_TZ is not set
|
||||
# CONFIG_ARM_SMC_USER is not set
|
||||
# CONFIG_ARM_ENABLE_SWP is not set
|
||||
# CONFIG_ARM_LPAE is not set
|
||||
CONFIG_ARM_CPU_ERRATA=y
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
#
|
||||
CONFIG_MP=y
|
||||
CONFIG_MP_MAX_CPUS=4
|
||||
CONFIG_CONTEXT_4K=y
|
||||
# CONFIG_FINE_GRAINED_CPUTIME is not set
|
||||
CONFIG_SCHED_FIXED_PRIO=y
|
||||
CONFIG_VIRT_OBJ_SPACE=y
|
||||
|
||||
#
|
||||
# Debugging
|
||||
#
|
||||
CONFIG_INLINE=y
|
||||
# CONFIG_NDEBUG is not set
|
||||
# CONFIG_NO_FRAME_PTR is not set
|
||||
# CONFIG_STACK_DEPTH is not set
|
||||
# CONFIG_LIST_ALLOC_SANITY is not set
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_JDB=y
|
||||
# CONFIG_JDB_LOGGING is not set
|
||||
# CONFIG_JDB_DISASM is not set
|
||||
CONFIG_JDB_GZIP=y
|
||||
# CONFIG_JDB_ACCOUNTING is not set
|
||||
# CONFIG_WARN_NONE is not set
|
||||
CONFIG_WARN_WARNING=y
|
||||
# CONFIG_WARN_ANY is not set
|
||||
|
||||
#
|
||||
# ARM debugging options
|
||||
#
|
||||
# CONFIG_VMEM_ALLOC_TEST is not set
|
||||
# CONFIG_DEBUG_KERNEL_PAGE_FAULTS is not set
|
||||
|
||||
#
|
||||
# Compiling
|
||||
#
|
||||
CONFIG_CC="gcc"
|
||||
CONFIG_CXX="g++"
|
||||
CONFIG_HOST_CC="gcc"
|
||||
CONFIG_HOST_CXX="g++"
|
||||
# CONFIG_MAINTAINER_MODE is not set
|
||||
CONFIG_LABEL=""
|
||||
# CONFIG_EXPERIMENTAL is not set
|
||||
CONFIG_PERF_CNT=y
|
||||
CONFIG_BIT32=y
|
||||
CONFIG_WARN_LEVEL=1
|
||||
CONFIG_XARCH="arm"
|
||||
CONFIG_ABI="vf"
|
||||
@@ -1,84 +0,0 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# L4Re Configuration
|
||||
#
|
||||
CONFIG_ARCH_ENABLE_STACK_PROTECTOR=y
|
||||
# CONFIG_BUILD_ARCH_amd64 is not set
|
||||
CONFIG_BUILD_ARCH_arm=y
|
||||
# CONFIG_BUILD_ARCH_arm64 is not set
|
||||
# CONFIG_BUILD_ARCH_mips is not set
|
||||
# CONFIG_BUILD_ARCH_ppc32 is not set
|
||||
# CONFIG_BUILD_ARCH_sparc is not set
|
||||
# CONFIG_BUILD_ARCH_x86 is not set
|
||||
CONFIG_BUILD_ARCH="arm"
|
||||
CONFIG_BUILD_ABI_l4f=y
|
||||
CONFIG_BUILD_ABI="l4f"
|
||||
# CONFIG_CPU_ARM_ARMV4 is not set
|
||||
# CONFIG_CPU_ARM_ARMV4T is not set
|
||||
# CONFIG_CPU_ARM_ARMV5 is not set
|
||||
# CONFIG_CPU_ARM_ARMV5T is not set
|
||||
# CONFIG_CPU_ARM_ARMV5TE is not set
|
||||
# CONFIG_CPU_ARM_ARMV6 is not set
|
||||
# CONFIG_CPU_ARM_ARMV6T2 is not set
|
||||
# CONFIG_CPU_ARM_ARMV6ZK is not set
|
||||
CONFIG_CPU_ARM_ARMV7A=y
|
||||
CONFIG_CPU="armv7a"
|
||||
CONFIG_CPU_ARMV6KPLUS=y
|
||||
CONFIG_CPU_ARMV6PLUS=y
|
||||
# CONFIG_PLATFORM_TYPE_exynos4 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx35 is not set
|
||||
# CONFIG_PLATFORM_TYPE_zedboard is not set
|
||||
# CONFIG_PLATFORM_TYPE_beagleboard is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_pbx is not set
|
||||
CONFIG_PLATFORM_TYPE_exynos5=y
|
||||
# CONFIG_PLATFORM_TYPE_kirkwood is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1012afrdm is not set
|
||||
# CONFIG_PLATFORM_TYPE_pandaboard is not set
|
||||
# CONFIG_PLATFORM_TYPE_arm_virt is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra2 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress_a15 is not set
|
||||
# CONFIG_PLATFORM_TYPE_cubieboard2 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3_am33xx is not set
|
||||
# CONFIG_PLATFORM_TYPE_parallella is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_b is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx21 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1021atwr is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx7 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx28 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3evm is not set
|
||||
# CONFIG_PLATFORM_TYPE_zynqmp is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6ul is not set
|
||||
# CONFIG_PLATFORM_TYPE_armada38x is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap5 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_a is not set
|
||||
# CONFIG_PLATFORM_TYPE_integrator is not set
|
||||
# CONFIG_PLATFORM_TYPE_custom is not set
|
||||
CONFIG_PLATFORM_TYPE="exynos5"
|
||||
CONFIG_DROPS_STDDIR="/path/to/l4re"
|
||||
CONFIG_DROPS_INSTDIR="/path/to/l4re"
|
||||
CONFIG_BID_COLORED_PHASES=y
|
||||
|
||||
#
|
||||
# Building
|
||||
#
|
||||
CONFIG_YACC="yacc"
|
||||
CONFIG_LEX="flex"
|
||||
CONFIG_CTAGS="ctags"
|
||||
CONFIG_ETAGS="etags"
|
||||
CONFIG_HAVE_LDSO=y
|
||||
CONFIG_INT_CPP_NAME_SWITCH=y
|
||||
CONFIG_INT_LD_NAME_SWITCH=y
|
||||
# CONFIG_BID_STRIP_PROGS is not set
|
||||
# CONFIG_BID_GCC_OMIT_FP is not set
|
||||
CONFIG_BID_GCC_ENABLE_STACK_PROTECTOR=y
|
||||
# CONFIG_BID_GCC_STACK_PROTECTOR_ALL is not set
|
||||
CONFIG_BID_GCC_STACK_PROTECTOR=y
|
||||
# CONFIG_BID_BUILD_DOC is not set
|
||||
# CONFIG_RELEASE_MODE is not set
|
||||
CONFIG_MAKECONFS_ADD=""
|
||||
@@ -1,121 +0,0 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Fiasco configuration
|
||||
#
|
||||
CONFIG_HAS_FPU_OPTION=y
|
||||
CONFIG_HAS_LAZY_FPU=y
|
||||
CONFIG_HAS_VIRT_OBJ_SPACE_OPTION=y
|
||||
CONFIG_HAS_SERIAL_OPTION=y
|
||||
CONFIG_HAS_JDB_DISASM_OPTION=y
|
||||
CONFIG_HAS_JDB_GZIP_OPTION=y
|
||||
CONFIG_HAS_MP_OPTION=y
|
||||
|
||||
#
|
||||
# Target configuration
|
||||
#
|
||||
# CONFIG_IA32 is not set
|
||||
# CONFIG_AMD64 is not set
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_MIPS is not set
|
||||
# CONFIG_PF_INTEGRATOR is not set
|
||||
# CONFIG_PF_REALVIEW is not set
|
||||
# CONFIG_PF_SUNXI is not set
|
||||
# CONFIG_PF_BCM283X is not set
|
||||
# CONFIG_PF_SA1100 is not set
|
||||
# CONFIG_PF_XSCALE is not set
|
||||
# CONFIG_PF_ARMADA38X is not set
|
||||
# CONFIG_PF_KIRKWOOD is not set
|
||||
# CONFIG_PF_TEGRA is not set
|
||||
# CONFIG_PF_LAYERSCAPE is not set
|
||||
# CONFIG_PF_IMX is not set
|
||||
# CONFIG_PF_ARM_VIRT is not set
|
||||
# CONFIG_PF_RCAR3 is not set
|
||||
CONFIG_PF_EXYNOS=y
|
||||
# CONFIG_PF_S3C2410 is not set
|
||||
# CONFIG_PF_OMAP is not set
|
||||
# CONFIG_PF_ZYNQ is not set
|
||||
# CONFIG_PF_ZYNQMP is not set
|
||||
CONFIG_BSP_NAME="exynos"
|
||||
CONFIG_CAN_ARM_CPU_CORTEX_A9=y
|
||||
CONFIG_CAN_ARM_CACHE_L2CXX0=y
|
||||
CONFIG_ARM_V7=y
|
||||
CONFIG_ARM_V6PLUS=y
|
||||
CONFIG_ARM_V7PLUS=y
|
||||
CONFIG_PF_EXYNOS4=y
|
||||
CONFIG_PF_EXYNOS_PKG_IDS=""
|
||||
# CONFIG_PF_EXYNOS4_4210 is not set
|
||||
CONFIG_PF_EXYNOS4_4412=y
|
||||
# CONFIG_PF_EXYNOS5_5250 is not set
|
||||
# CONFIG_PF_EXYNOS5_5410 is not set
|
||||
CONFIG_PF_EXYNOS_UART_NATIVE=y
|
||||
CONFIG_PF_EXYNOS_UART_NR=1
|
||||
CONFIG_PF_EXYNOS_TIMER_MCT=y
|
||||
# CONFIG_PF_EXYNOS_TIMER_MP is not set
|
||||
# CONFIG_PF_EXYNOS_TIMER_PWM is not set
|
||||
# CONFIG_PF_EXYNOS_EXTGIC is not set
|
||||
CONFIG_ABI_VF=y
|
||||
CONFIG_ARM_CORTEX_A9=y
|
||||
CONFIG_FPU=y
|
||||
CONFIG_LAZY_FPU=y
|
||||
CONFIG_HAVE_ARM_SECMONIF_NONE=y
|
||||
CONFIG_HAVE_ARM_SECMONIF_MC=y
|
||||
# CONFIG_ARM_ALIGNMENT_CHECK is not set
|
||||
# CONFIG_ARM_EM_STD is not set
|
||||
CONFIG_ARM_EM_NS=y
|
||||
# CONFIG_ARM_EM_TZ is not set
|
||||
# CONFIG_ARM_SECMONIF_NONE is not set
|
||||
CONFIG_ARM_SECMONIF_MC=y
|
||||
# CONFIG_ARM_SMC_USER is not set
|
||||
CONFIG_ARM_CACHE_L2CXX0=y
|
||||
# CONFIG_ARM_ENABLE_SWP is not set
|
||||
# CONFIG_ARM_CPU_ERRATA is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
#
|
||||
CONFIG_MP=y
|
||||
CONFIG_MP_MAX_CPUS=4
|
||||
CONFIG_CONTEXT_4K=y
|
||||
# CONFIG_FINE_GRAINED_CPUTIME is not set
|
||||
CONFIG_SCHED_FIXED_PRIO=y
|
||||
CONFIG_VIRT_OBJ_SPACE=y
|
||||
|
||||
#
|
||||
# Debugging
|
||||
#
|
||||
CONFIG_INLINE=y
|
||||
# CONFIG_NDEBUG is not set
|
||||
CONFIG_NO_FRAME_PTR=y
|
||||
# CONFIG_STACK_DEPTH is not set
|
||||
# CONFIG_LIST_ALLOC_SANITY is not set
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_JDB=y
|
||||
# CONFIG_JDB_LOGGING is not set
|
||||
# CONFIG_JDB_DISASM is not set
|
||||
CONFIG_JDB_GZIP=y
|
||||
# CONFIG_JDB_ACCOUNTING is not set
|
||||
# CONFIG_WARN_NONE is not set
|
||||
CONFIG_WARN_WARNING=y
|
||||
# CONFIG_WARN_ANY is not set
|
||||
|
||||
#
|
||||
# ARM debugging options
|
||||
#
|
||||
# CONFIG_VMEM_ALLOC_TEST is not set
|
||||
# CONFIG_DEBUG_KERNEL_PAGE_FAULTS is not set
|
||||
|
||||
#
|
||||
# Compiling
|
||||
#
|
||||
CONFIG_CC="gcc"
|
||||
CONFIG_CXX="g++"
|
||||
CONFIG_HOST_CC="gcc"
|
||||
CONFIG_HOST_CXX="g++"
|
||||
# CONFIG_MAINTAINER_MODE is not set
|
||||
CONFIG_LABEL=""
|
||||
# CONFIG_EXPERIMENTAL is not set
|
||||
CONFIG_PERF_CNT=y
|
||||
CONFIG_BIT32=y
|
||||
CONFIG_WARN_LEVEL=1
|
||||
CONFIG_XARCH="arm"
|
||||
CONFIG_ABI="vf"
|
||||
@@ -1,84 +0,0 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# L4Re Configuration
|
||||
#
|
||||
CONFIG_ARCH_ENABLE_STACK_PROTECTOR=y
|
||||
# CONFIG_BUILD_ARCH_amd64 is not set
|
||||
CONFIG_BUILD_ARCH_arm=y
|
||||
# CONFIG_BUILD_ARCH_arm64 is not set
|
||||
# CONFIG_BUILD_ARCH_mips is not set
|
||||
# CONFIG_BUILD_ARCH_ppc32 is not set
|
||||
# CONFIG_BUILD_ARCH_sparc is not set
|
||||
# CONFIG_BUILD_ARCH_x86 is not set
|
||||
CONFIG_BUILD_ARCH="arm"
|
||||
CONFIG_BUILD_ABI_l4f=y
|
||||
CONFIG_BUILD_ABI="l4f"
|
||||
# CONFIG_CPU_ARM_ARMV4 is not set
|
||||
# CONFIG_CPU_ARM_ARMV4T is not set
|
||||
# CONFIG_CPU_ARM_ARMV5 is not set
|
||||
# CONFIG_CPU_ARM_ARMV5T is not set
|
||||
# CONFIG_CPU_ARM_ARMV5TE is not set
|
||||
# CONFIG_CPU_ARM_ARMV6 is not set
|
||||
# CONFIG_CPU_ARM_ARMV6T2 is not set
|
||||
# CONFIG_CPU_ARM_ARMV6ZK is not set
|
||||
CONFIG_CPU_ARM_ARMV7A=y
|
||||
CONFIG_CPU="armv7a"
|
||||
CONFIG_CPU_ARMV6KPLUS=y
|
||||
CONFIG_CPU_ARMV6PLUS=y
|
||||
CONFIG_PLATFORM_TYPE_exynos4=y
|
||||
# CONFIG_PLATFORM_TYPE_imx35 is not set
|
||||
# CONFIG_PLATFORM_TYPE_zedboard is not set
|
||||
# CONFIG_PLATFORM_TYPE_beagleboard is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_pbx is not set
|
||||
# CONFIG_PLATFORM_TYPE_exynos5 is not set
|
||||
# CONFIG_PLATFORM_TYPE_kirkwood is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1012afrdm is not set
|
||||
# CONFIG_PLATFORM_TYPE_pandaboard is not set
|
||||
# CONFIG_PLATFORM_TYPE_arm_virt is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra2 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress_a15 is not set
|
||||
# CONFIG_PLATFORM_TYPE_cubieboard2 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3_am33xx is not set
|
||||
# CONFIG_PLATFORM_TYPE_parallella is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_b is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx21 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1021atwr is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx7 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx28 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3evm is not set
|
||||
# CONFIG_PLATFORM_TYPE_zynqmp is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6ul is not set
|
||||
# CONFIG_PLATFORM_TYPE_armada38x is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap5 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_a is not set
|
||||
# CONFIG_PLATFORM_TYPE_integrator is not set
|
||||
# CONFIG_PLATFORM_TYPE_custom is not set
|
||||
CONFIG_PLATFORM_TYPE="exynos4"
|
||||
CONFIG_DROPS_STDDIR="/path/to/l4re"
|
||||
CONFIG_DROPS_INSTDIR="/path/to/l4re"
|
||||
CONFIG_BID_COLORED_PHASES=y
|
||||
|
||||
#
|
||||
# Building
|
||||
#
|
||||
CONFIG_YACC="yacc"
|
||||
CONFIG_LEX="flex"
|
||||
CONFIG_CTAGS="ctags"
|
||||
CONFIG_ETAGS="etags"
|
||||
CONFIG_HAVE_LDSO=y
|
||||
CONFIG_INT_CPP_NAME_SWITCH=y
|
||||
CONFIG_INT_LD_NAME_SWITCH=y
|
||||
# CONFIG_BID_STRIP_PROGS is not set
|
||||
# CONFIG_BID_GCC_OMIT_FP is not set
|
||||
CONFIG_BID_GCC_ENABLE_STACK_PROTECTOR=y
|
||||
# CONFIG_BID_GCC_STACK_PROTECTOR_ALL is not set
|
||||
CONFIG_BID_GCC_STACK_PROTECTOR=y
|
||||
# CONFIG_BID_BUILD_DOC is not set
|
||||
# CONFIG_RELEASE_MODE is not set
|
||||
CONFIG_MAKECONFS_ADD=""
|
||||
@@ -1,110 +0,0 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Fiasco configuration
|
||||
#
|
||||
CONFIG_HAS_FPU_OPTION=y
|
||||
CONFIG_HAS_LAZY_FPU=y
|
||||
CONFIG_HAS_VIRT_OBJ_SPACE_OPTION=y
|
||||
CONFIG_HAS_SERIAL_OPTION=y
|
||||
CONFIG_HAS_JDB_DISASM_OPTION=y
|
||||
CONFIG_HAS_JDB_GZIP_OPTION=y
|
||||
CONFIG_HAS_MP_OPTION=y
|
||||
|
||||
#
|
||||
# Target configuration
|
||||
#
|
||||
# CONFIG_IA32 is not set
|
||||
# CONFIG_AMD64 is not set
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_MIPS is not set
|
||||
# CONFIG_PF_INTEGRATOR is not set
|
||||
# CONFIG_PF_REALVIEW is not set
|
||||
# CONFIG_PF_SUNXI is not set
|
||||
# CONFIG_PF_BCM283X is not set
|
||||
# CONFIG_PF_SA1100 is not set
|
||||
# CONFIG_PF_XSCALE is not set
|
||||
# CONFIG_PF_ARMADA38X is not set
|
||||
# CONFIG_PF_KIRKWOOD is not set
|
||||
# CONFIG_PF_TEGRA is not set
|
||||
# CONFIG_PF_LAYERSCAPE is not set
|
||||
# CONFIG_PF_IMX is not set
|
||||
# CONFIG_PF_ARM_VIRT is not set
|
||||
# CONFIG_PF_RCAR3 is not set
|
||||
# CONFIG_PF_EXYNOS is not set
|
||||
# CONFIG_PF_S3C2410 is not set
|
||||
CONFIG_PF_OMAP=y
|
||||
# CONFIG_PF_ZYNQ is not set
|
||||
# CONFIG_PF_ZYNQMP is not set
|
||||
CONFIG_BSP_NAME="omap"
|
||||
CONFIG_CAN_ARM_CPU_CORTEX_A9=y
|
||||
CONFIG_CAN_ARM_CACHE_L2CXX0=y
|
||||
CONFIG_ARM_V7=y
|
||||
CONFIG_ARM_V6PLUS=y
|
||||
CONFIG_ARM_V7PLUS=y
|
||||
# CONFIG_PF_OMAP3_OMAP35XEVM is not set
|
||||
# CONFIG_PF_OMAP3_BEAGLEBOARD is not set
|
||||
# CONFIG_PF_OMAP3_AM33XX is not set
|
||||
CONFIG_PF_OMAP4_PANDABOARD=y
|
||||
# CONFIG_PF_OMAP5_5432EVM is not set
|
||||
CONFIG_ABI_VF=y
|
||||
CONFIG_ARM_CORTEX_A9=y
|
||||
CONFIG_FPU=y
|
||||
CONFIG_LAZY_FPU=y
|
||||
# CONFIG_ARM_ALIGNMENT_CHECK is not set
|
||||
CONFIG_ARM_EM_STD=y
|
||||
# CONFIG_ARM_EM_NS is not set
|
||||
# CONFIG_ARM_EM_TZ is not set
|
||||
# CONFIG_ARM_SMC_USER is not set
|
||||
CONFIG_ARM_CACHE_L2CXX0=y
|
||||
# CONFIG_ARM_ENABLE_SWP is not set
|
||||
# CONFIG_ARM_CPU_ERRATA is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
#
|
||||
CONFIG_MP=y
|
||||
CONFIG_MP_MAX_CPUS=4
|
||||
CONFIG_CONTEXT_4K=y
|
||||
# CONFIG_FINE_GRAINED_CPUTIME is not set
|
||||
CONFIG_SCHED_FIXED_PRIO=y
|
||||
CONFIG_VIRT_OBJ_SPACE=y
|
||||
|
||||
#
|
||||
# Debugging
|
||||
#
|
||||
CONFIG_INLINE=y
|
||||
# CONFIG_NDEBUG is not set
|
||||
# CONFIG_NO_FRAME_PTR is not set
|
||||
# CONFIG_STACK_DEPTH is not set
|
||||
# CONFIG_LIST_ALLOC_SANITY is not set
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_JDB=y
|
||||
CONFIG_JDB_LOGGING=y
|
||||
# CONFIG_JDB_DISASM is not set
|
||||
CONFIG_JDB_GZIP=y
|
||||
# CONFIG_JDB_ACCOUNTING is not set
|
||||
# CONFIG_WARN_NONE is not set
|
||||
CONFIG_WARN_WARNING=y
|
||||
# CONFIG_WARN_ANY is not set
|
||||
|
||||
#
|
||||
# ARM debugging options
|
||||
#
|
||||
# CONFIG_VMEM_ALLOC_TEST is not set
|
||||
# CONFIG_DEBUG_KERNEL_PAGE_FAULTS is not set
|
||||
|
||||
#
|
||||
# Compiling
|
||||
#
|
||||
CONFIG_CC="gcc"
|
||||
CONFIG_CXX="g++"
|
||||
CONFIG_HOST_CC="gcc"
|
||||
CONFIG_HOST_CXX="g++"
|
||||
# CONFIG_MAINTAINER_MODE is not set
|
||||
CONFIG_LABEL=""
|
||||
# CONFIG_EXPERIMENTAL is not set
|
||||
CONFIG_PERF_CNT=y
|
||||
CONFIG_BIT32=y
|
||||
CONFIG_WARN_LEVEL=1
|
||||
CONFIG_XARCH="arm"
|
||||
CONFIG_ABI="vf"
|
||||
@@ -1,82 +0,0 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# L4Re Configuration
|
||||
#
|
||||
CONFIG_ARCH_ENABLE_STACK_PROTECTOR=y
|
||||
# CONFIG_BUILD_ARCH_amd64 is not set
|
||||
CONFIG_BUILD_ARCH_arm=y
|
||||
# CONFIG_BUILD_ARCH_arm64 is not set
|
||||
# CONFIG_BUILD_ARCH_mips is not set
|
||||
# CONFIG_BUILD_ARCH_ppc32 is not set
|
||||
# CONFIG_BUILD_ARCH_sparc is not set
|
||||
# CONFIG_BUILD_ARCH_x86 is not set
|
||||
CONFIG_BUILD_ARCH="arm"
|
||||
CONFIG_BUILD_ABI_l4f=y
|
||||
CONFIG_BUILD_ABI="l4f"
|
||||
# CONFIG_CPU_ARM_ARMV4 is not set
|
||||
# CONFIG_CPU_ARM_ARMV4T is not set
|
||||
# CONFIG_CPU_ARM_ARMV5 is not set
|
||||
# CONFIG_CPU_ARM_ARMV5T is not set
|
||||
# CONFIG_CPU_ARM_ARMV5TE is not set
|
||||
# CONFIG_CPU_ARM_ARMV6 is not set
|
||||
# CONFIG_CPU_ARM_ARMV6T2 is not set
|
||||
# CONFIG_CPU_ARM_ARMV6ZK is not set
|
||||
CONFIG_CPU_ARM_ARMV7A=y
|
||||
CONFIG_CPU="armv7a"
|
||||
CONFIG_CPU_ARMV6KPLUS=y
|
||||
CONFIG_CPU_ARMV6PLUS=y
|
||||
# CONFIG_PLATFORM_TYPE_exynos4 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx35 is not set
|
||||
# CONFIG_PLATFORM_TYPE_zedboard is not set
|
||||
# CONFIG_PLATFORM_TYPE_beagleboard is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_pbx is not set
|
||||
# CONFIG_PLATFORM_TYPE_exynos5 is not set
|
||||
# CONFIG_PLATFORM_TYPE_kirkwood is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1012afrdm is not set
|
||||
CONFIG_PLATFORM_TYPE_pandaboard=y
|
||||
# CONFIG_PLATFORM_TYPE_arm_virt is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra2 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress_a15 is not set
|
||||
# CONFIG_PLATFORM_TYPE_cubieboard2 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3_am33xx is not set
|
||||
# CONFIG_PLATFORM_TYPE_parallella is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_b is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx21 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1021atwr is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx7 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx28 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3evm is not set
|
||||
# CONFIG_PLATFORM_TYPE_zynqmp is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6ul is not set
|
||||
# CONFIG_PLATFORM_TYPE_armada38x is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap5 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_a is not set
|
||||
# CONFIG_PLATFORM_TYPE_integrator is not set
|
||||
# CONFIG_PLATFORM_TYPE_custom is not set
|
||||
CONFIG_PLATFORM_TYPE="pandaboard"
|
||||
CONFIG_DROPS_STDDIR="/path/to/l4re"
|
||||
CONFIG_DROPS_INSTDIR="/path/to/l4re"
|
||||
CONFIG_BID_COLORED_PHASES=y
|
||||
|
||||
#
|
||||
# Building
|
||||
#
|
||||
CONFIG_YACC="yacc"
|
||||
CONFIG_LEX="flex"
|
||||
CONFIG_CTAGS="ctags"
|
||||
CONFIG_ETAGS="etags"
|
||||
CONFIG_HAVE_LDSO=y
|
||||
CONFIG_INT_CPP_NAME_SWITCH=y
|
||||
CONFIG_INT_LD_NAME_SWITCH=y
|
||||
# CONFIG_BID_STRIP_PROGS is not set
|
||||
# CONFIG_BID_GCC_OMIT_FP is not set
|
||||
# CONFIG_BID_GCC_ENABLE_STACK_PROTECTOR is not set
|
||||
# CONFIG_BID_BUILD_DOC is not set
|
||||
# CONFIG_RELEASE_MODE is not set
|
||||
CONFIG_MAKECONFS_ADD=""
|
||||
@@ -1,78 +0,0 @@
|
||||
|
||||
===================================
|
||||
Genode on the Fiasco.OC microkernel
|
||||
===================================
|
||||
|
||||
|
||||
Stefan Kalkowski
|
||||
|
||||
|
||||
Fiasco.OC is a microkernel originally developed by the OS group of the
|
||||
TU-Dresden. Nowadays, it is primarily maintained and developed by
|
||||
the company Kernkonzept. It's an object-oriented capability-based system
|
||||
for x86, ARM, PowerPC and MIPS platforms.
|
||||
|
||||
This document provides brief instructions about downloading, building and
|
||||
booting the Fiasco.OC version of Genode.
|
||||
|
||||
|
||||
Prerequisites
|
||||
#############
|
||||
|
||||
You need certain tools to use the Fiasco.OC build system. On Debian/Ubuntu
|
||||
systems you have to install the following packages:
|
||||
|
||||
! apt-get install make gawk g++ binutils pkg-config g++-multilib subversion
|
||||
|
||||
Moreover, you need to download and install the tool-chain used by Genode. Have
|
||||
a look at this page:
|
||||
|
||||
:[http://genode.org/download/tool-chain]:
|
||||
Genode tool-chain
|
||||
|
||||
|
||||
Building the Fiasco.OC version of Genode
|
||||
########################################
|
||||
|
||||
The current version of Genode is available at the public Github repository:
|
||||
|
||||
:http://github.com/genodelabs/genode:
|
||||
Github repository of Genode
|
||||
|
||||
After you've fetched the Genode source tree from the git repository, or
|
||||
downloaded the latest release tar archive, you need the Fiasco.OC source code,
|
||||
its kernel-bindings, additional bootstrap tools etc. To simplify that step,
|
||||
you can use the 'prepare_port' tool:
|
||||
|
||||
! ./tool/ports/prepare_port foc
|
||||
|
||||
This will install all necessary third-party source code in the 'contrib' folder.
|
||||
|
||||
Now, go to a directory where you want the Genode/Fiasco.OC build directory to
|
||||
remain. Use the helper script in the 'tool' directory of the Genode
|
||||
source tree to create the initial build environment. You need to state the
|
||||
build directory you want to create, and the hardware architecture to run
|
||||
Fiasco.OC/Genode on. Choose 'x86_32', 'x86_64', or one of the available ARM
|
||||
boards.
|
||||
|
||||
! <genode-dir>/tool/create_builddir x86_64
|
||||
|
||||
Now, go to the newly created build directory and type make:
|
||||
|
||||
! cd build/x86_64
|
||||
! make KERNEL=foc
|
||||
|
||||
This will build the Fiasco.OC kernel, its bootstrap code, and every Genode component,
|
||||
that runs on top of Fiasco.OC.
|
||||
|
||||
If you just want to give Genode/Fiasco.OC a try, you can call e.g.: the demo run-script
|
||||
instead of building everything:
|
||||
|
||||
! make run/demo KERNEL=foc
|
||||
|
||||
|
||||
Further Information
|
||||
###################
|
||||
|
||||
:[https://l4re.org/fiasco/]:
|
||||
Official website for the Fiasco.OC microkernel.
|
||||
@@ -17,7 +17,6 @@
|
||||
#define _INCLUDE__FOC__THREAD_STATE_H_
|
||||
|
||||
#include <base/capability.h>
|
||||
#include <base/lock.h>
|
||||
#include <base/thread_state.h>
|
||||
|
||||
/* Fiasco includes */
|
||||
@@ -33,17 +32,11 @@ struct Genode::Foc_thread_state : Thread_state
|
||||
Fiasco::l4_cap_idx_t kcap; /* thread's gate cap in its pd */
|
||||
int id; /* id of gate capability */
|
||||
addr_t utcb; /* thread's utcb in its pd */
|
||||
unsigned exceptions; /* counts exceptions raised by the thread */
|
||||
bool paused; /* indicates whether thread is stopped */
|
||||
bool in_exception; /* true if thread is in exception */
|
||||
Lock lock { };
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
Foc_thread_state()
|
||||
: kcap(Fiasco::L4_INVALID_CAP), id(0), utcb(0), exceptions(0),
|
||||
paused(false), in_exception(false) { }
|
||||
Foc_thread_state() : kcap(Fiasco::L4_INVALID_CAP), id(0), utcb(0) { }
|
||||
};
|
||||
|
||||
#endif /* _INCLUDE__FOC__THREAD_STATE_H_ */
|
||||
|
||||
@@ -10,9 +10,7 @@ LIBS += syscall-foc startup-foc
|
||||
|
||||
SRC_CC += spin_lock.cc cap_map.cc
|
||||
SRC_CC += rpc_dispatch_loop.cc
|
||||
SRC_CC += rpc_entrypoint_manage.cc
|
||||
SRC_CC += thread.cc thread_bootstrap.cc thread_myself.cc utcb.cc
|
||||
SRC_CC += capability.cc
|
||||
SRC_CC += signal_source_client.cc
|
||||
SRC_CC += platform.cc
|
||||
SRC_CC += rpc_entry.cc
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
KERNEL_CONFIG := $(REP_DIR)/config/arndale.kernel
|
||||
|
||||
include $(REP_DIR)/lib/mk/kernel-foc.inc
|
||||
@@ -1,5 +0,0 @@
|
||||
L4_CONFIG := $(call select_from_repositories,config/arndale.user)
|
||||
|
||||
L4_BIN_DIR := $(LIB_CACHE_DIR)/syscall-foc/arndale-build/bin/arm_armv7a
|
||||
|
||||
include $(REP_DIR)/lib/mk/spec/arm/syscall-foc.inc
|
||||
@@ -1,3 +0,0 @@
|
||||
KERNEL_CONFIG := $(REP_DIR)/config/odroid_x2.kernel
|
||||
|
||||
include $(REP_DIR)/lib/mk/kernel-foc.inc
|
||||
@@ -1,5 +0,0 @@
|
||||
L4_CONFIG := $(call select_from_repositories,config/odroid_x2.user)
|
||||
|
||||
L4_BIN_DIR := $(LIB_CACHE_DIR)/syscall-foc/odroid_x2-build/bin/arm_armv7a
|
||||
|
||||
include $(REP_DIR)/lib/mk/spec/arm/syscall-foc.inc
|
||||
@@ -1,3 +0,0 @@
|
||||
KERNEL_CONFIG := $(REP_DIR)/config/panda.kernel
|
||||
|
||||
include $(REP_DIR)/lib/mk/kernel-foc.inc
|
||||
@@ -1,5 +0,0 @@
|
||||
L4_CONFIG := $(call select_from_repositories,config/panda.user)
|
||||
|
||||
L4_BIN_DIR := $(LIB_CACHE_DIR)/syscall-foc/panda-build/bin/arm_armv7a
|
||||
|
||||
include $(REP_DIR)/lib/mk/spec/arm/syscall-foc.inc
|
||||
@@ -1,34 +0,0 @@
|
||||
From 8ce1c02d02fa8a9e50124e3237c2e01ae73c248c Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Sumpf <sebastian.sumpf@genode-labs.com>
|
||||
Date: Wed, 8 Mar 2017 16:58:27 +0100
|
||||
Subject: [PATCH 06/15] FOC: adjust panda timer to version A6
|
||||
|
||||
A6 runs at 800 not 700 MHz (as the ES2 does) when bootstrapped by U-boot
|
||||
|
||||
(thanks to mstein)
|
||||
---
|
||||
.../fiasco/src/kern/arm/bsp/omap/timer-arm-mptimer-omap4.cpp | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/kernel/fiasco/src/kern/arm/bsp/omap/timer-arm-mptimer-omap4.cpp b/kernel/fiasco/src/kern/arm/bsp/omap/timer-arm-mptimer-omap4.cpp
|
||||
index 72ef9b90..c0aef990 100644
|
||||
--- a/kernel/fiasco/src/kern/arm/bsp/omap/timer-arm-mptimer-omap4.cpp
|
||||
+++ b/kernel/fiasco/src/kern/arm/bsp/omap/timer-arm-mptimer-omap4.cpp
|
||||
@@ -4,5 +4,13 @@ INTERFACE [arm && mptimer && pf_omap4_pandaboard]:
|
||||
EXTENSION class Timer
|
||||
{
|
||||
private:
|
||||
- static Mword interval() { return 499999; }
|
||||
+ static Mword interval()
|
||||
+ {
|
||||
+ /*
|
||||
+ * This is only valid for Panda A6, as we run it at our offices. For A6
|
||||
+ * U-Boot will clock the board at 800 MHz leading to a 400 MHz private timer
|
||||
+ * tick.
|
||||
+ */
|
||||
+ return 399999;
|
||||
+ }
|
||||
};
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -1 +1 @@
|
||||
91ca3363690c5b9c992a110375242f5d426a6848
|
||||
ce2d3e9f54b383ef2368e4cd285b0b48b0424f63
|
||||
|
||||
@@ -28,7 +28,6 @@ PATCH_OPT(patches/0001-L4RE-Remove-moe-from-switch_ram_base-target.patch)
|
||||
PATCH_OPT(patches/0002-FOC-change-l4_task_cap_equal-semantic.patch) := -p3 -d${DIR(foc)}
|
||||
PATCH_OPT(patches/0003-Sigma0-raise-sigma0-s-priority-to-maximum.patch) := -p4 -d${DIR(l4re-core)}
|
||||
PATCH_OPT(patches/0005-FOC-Increase-name-buffer-of-JDB-to-32K.patch) := -p3 -d${DIR(foc)}
|
||||
PATCH_OPT(patches/0006-FOC-adjust-panda-timer-to-version-A6.patch) := -p3 -d${DIR(foc)}
|
||||
PATCH_OPT(patches/0007-L4RE-fix-x86-syscall-bindings-to-use-in-C-namespace.patch) := -p4 -d${DIR(l4re-core)}
|
||||
PATCH_OPT(patches/0009-Bootstrap-read-out-comport-on-x86-from-BDA-area.patch) := -p4 -d${DIR(bootstrap)}
|
||||
PATCH_OPT(patches/0010-L4RE-get-rid-of-__builtin_strlen-usage.patch) := -p4 -d${DIR(l4re-core)}
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
This archive contains the Fiasco.OC-specific part of Genode.
|
||||
|
||||
It also contains the source code of the Fiasco.OC kernel in the
|
||||
'src/kernel/foc' directory.
|
||||
|
||||
Please note that Fiasco.OC has a license distinct from Genode. Fiasco.OC's
|
||||
license can be found at 'src/kernel/foc/COPYING-GPL-2'.
|
||||
@@ -1,3 +0,0 @@
|
||||
BOARD := arndale
|
||||
|
||||
include $(GENODE_DIR)/repos/base-foc/recipes/src/base-foc_content.inc
|
||||
@@ -1 +0,0 @@
|
||||
2020-02-27 82bbd7275951340ff82061af8bc2cce41f1519e3
|
||||
@@ -1 +1 @@
|
||||
2020-02-27 c5602daf28cdc5d005a26f408527e64ab905197e
|
||||
2020-08-27 5f44c34120046861ee02a488b0e34c859cc7f2ec
|
||||
|
||||
@@ -1 +1 @@
|
||||
2020-02-27 a3912478467dcf01ab6379502bb15719b748c388
|
||||
2020-08-27 c1913f289544881002ba648e34b076f39b6cfd90
|
||||
|
||||
@@ -1 +1 @@
|
||||
2020-02-27 e7f8bca57dbed6597e46aafd0256dfd5a6ac42c3
|
||||
2020-08-27 e73882245d240ad99888c6887525fed6b2085d5e
|
||||
|
||||
@@ -1 +1 @@
|
||||
2020-02-27 b03dfe2bde7fe637c0a7eff9e709845e64b4d09c
|
||||
2020-08-27 40f98e27ab53cc631e951a745b292a6f722bbfce
|
||||
|
||||
@@ -1 +1 @@
|
||||
2020-02-27 a1eb6dfc01d82b598f0778c0b74f2a49387cc42d
|
||||
2020-08-27 9499c9b32821d0b483e00dab5321dc28acc59c09
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
/* Genode includes */
|
||||
#include <base/allocator_avl.h>
|
||||
#include <base/exception.h>
|
||||
#include <base/lock.h>
|
||||
#include <base/mutex.h>
|
||||
#include <synced_range_allocator.h>
|
||||
|
||||
namespace Genode {
|
||||
@@ -35,7 +35,7 @@ namespace Genode {
|
||||
|
||||
Synced_range_allocator<Allocator_avl> _id_alloc;
|
||||
|
||||
Lock _lock { };
|
||||
Mutex _mutex { };
|
||||
|
||||
public:
|
||||
|
||||
|
||||
@@ -14,8 +14,18 @@
|
||||
#ifndef _CORE__INCLUDE__PAGER_OBJECT_EXCEPTION_STATE_H_
|
||||
#define _CORE__INCLUDE__PAGER_OBJECT_EXCEPTION_STATE_H_
|
||||
|
||||
#include <base/mutex.h>
|
||||
#include <foc/thread_state.h>
|
||||
|
||||
namespace Genode { typedef Foc_thread_state Pager_object_exception_state; }
|
||||
namespace Genode { struct Pager_object_exception_state; }
|
||||
|
||||
struct Genode::Pager_object_exception_state
|
||||
{
|
||||
Mutex mutex { };
|
||||
unsigned exceptions; /* counts exceptions raised by the thread */
|
||||
bool paused; /* indicates whether thread is stopped */
|
||||
bool in_exception; /* true if thread is in exception */
|
||||
Foc_thread_state state; /* accessible via native cpu thread RPC */
|
||||
};
|
||||
|
||||
#endif /* _CORE__INCLUDE__PAGER_OBJECT_EXCEPTION_STATE_H_ */
|
||||
|
||||
@@ -116,11 +116,6 @@ namespace Genode {
|
||||
*/
|
||||
void resume();
|
||||
|
||||
/**
|
||||
* Cancel currently blocking operation
|
||||
*/
|
||||
void cancel_blocking();
|
||||
|
||||
/**
|
||||
* This thread is about to be bound
|
||||
*
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
#define _CORE__VM_SESSION_COMPONENT_H_
|
||||
|
||||
/* Genode includes */
|
||||
#include <base/allocator_guard.h>
|
||||
#include <base/rpc_server.h>
|
||||
#include <base/heap.h>
|
||||
#include <vm_session/vm_session.h>
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
/* Genode includes */
|
||||
#include <base/env.h>
|
||||
#include <base/log.h>
|
||||
#include <base/lock.h>
|
||||
|
||||
/* core includes */
|
||||
#include <pager.h>
|
||||
@@ -58,8 +57,8 @@ void Pager_entrypoint::entry()
|
||||
case Ipc_pager::EXCEPTION:
|
||||
{
|
||||
if (_pager.exception()) {
|
||||
Lock::Guard guard(obj->state.lock);
|
||||
_pager.get_regs(obj->state);
|
||||
Mutex::Guard guard(obj->state.mutex);
|
||||
_pager.get_regs(obj->state.state);
|
||||
obj->state.exceptions++;
|
||||
obj->state.in_exception = true;
|
||||
obj->submit_exception_signal();
|
||||
@@ -95,11 +94,11 @@ void Pager_entrypoint::entry()
|
||||
_pager.acknowledge_wakeup();
|
||||
|
||||
{
|
||||
Lock::Guard guard(obj->state.lock);
|
||||
Mutex::Guard guard(obj->state.mutex);
|
||||
/* revert exception flag */
|
||||
obj->state.in_exception = false;
|
||||
/* set new register contents */
|
||||
_pager.set_regs(obj->state);
|
||||
_pager.set_regs(obj->state.state);
|
||||
}
|
||||
|
||||
/* send wake up message to requested thread */
|
||||
@@ -114,8 +113,8 @@ void Pager_entrypoint::entry()
|
||||
*/
|
||||
case Ipc_pager::PAUSE:
|
||||
{
|
||||
Lock::Guard guard(obj->state.lock);
|
||||
_pager.get_regs(obj->state);
|
||||
Mutex::Guard guard(obj->state.mutex);
|
||||
_pager.get_regs(obj->state.state);
|
||||
obj->state.exceptions++;
|
||||
obj->state.in_exception = true;
|
||||
|
||||
|
||||
@@ -41,5 +41,5 @@ void Pager_object::wake_up()
|
||||
|
||||
void Pager_object::unresolved_page_fault_occurred()
|
||||
{
|
||||
state.unresolved_page_fault = true;
|
||||
state.state.unresolved_page_fault = true;
|
||||
}
|
||||
|
||||
@@ -89,16 +89,18 @@ void Platform_thread::pause()
|
||||
if (!_pager_obj)
|
||||
return;
|
||||
|
||||
_pager_obj->state.lock.lock();
|
||||
_pager_obj->state.mutex.acquire();
|
||||
|
||||
if (_pager_obj->state.paused == true) {
|
||||
_pager_obj->state.lock.unlock();
|
||||
_pager_obj->state.mutex.release();
|
||||
return;
|
||||
}
|
||||
|
||||
Foc_thread_state ®_state = _pager_obj->state.state;
|
||||
|
||||
unsigned exc = _pager_obj->state.exceptions;
|
||||
_pager_obj->state.ip = ~0UL;
|
||||
_pager_obj->state.sp = ~0UL;
|
||||
reg_state.ip = ~0UL;
|
||||
reg_state.sp = ~0UL;
|
||||
l4_umword_t flags = L4_THREAD_EX_REGS_TRIGGER_EXCEPTION;
|
||||
|
||||
/* Mark thread to be stopped */
|
||||
@@ -109,14 +111,14 @@ void Platform_thread::pause()
|
||||
* The pager thread, which also acts as exception handler, will
|
||||
* leave the thread in exception state until, it gets woken again
|
||||
*/
|
||||
l4_thread_ex_regs_ret(_thread.local.data()->kcap(), &_pager_obj->state.ip,
|
||||
&_pager_obj->state.sp, &flags);
|
||||
l4_thread_ex_regs_ret(_thread.local.data()->kcap(), ®_state.ip,
|
||||
®_state.sp, &flags);
|
||||
|
||||
/*
|
||||
* The thread state ("ready") is encoded in the lowest bit of the flags.
|
||||
*/
|
||||
bool in_syscall = (flags & 1) == 0;
|
||||
_pager_obj->state.lock.unlock();
|
||||
_pager_obj->state.mutex.release();
|
||||
|
||||
/**
|
||||
* Check whether the thread was in ongoing ipc, if so it won't raise
|
||||
@@ -149,11 +151,11 @@ void Platform_thread::resume()
|
||||
if (!_pager_obj)
|
||||
return;
|
||||
|
||||
_pager_obj->state.lock.lock();
|
||||
_pager_obj->state.mutex.acquire();
|
||||
|
||||
/* Mark thread to be runable again */
|
||||
_pager_obj->state.paused = false;
|
||||
_pager_obj->state.lock.unlock();
|
||||
_pager_obj->state.mutex.release();
|
||||
|
||||
/* Send a message to the exception handler, to unblock the client */
|
||||
Msgbuf<16> snd, rcv;
|
||||
@@ -202,14 +204,14 @@ void Platform_thread::pager(Pager_object &pager_obj)
|
||||
void Platform_thread::state(Thread_state s)
|
||||
{
|
||||
if (_pager_obj)
|
||||
*static_cast<Thread_state *>(&_pager_obj->state) = s;
|
||||
*static_cast<Thread_state *>(&_pager_obj->state.state) = s;
|
||||
}
|
||||
|
||||
|
||||
Foc_thread_state Platform_thread::state()
|
||||
{
|
||||
Foc_thread_state s;
|
||||
if (_pager_obj) s = _pager_obj->state;
|
||||
if (_pager_obj) s = _pager_obj->state.state;
|
||||
|
||||
s.kcap = _gate.remote;
|
||||
s.id = _gate.local.local_name();
|
||||
@@ -219,12 +221,6 @@ Foc_thread_state Platform_thread::state()
|
||||
}
|
||||
|
||||
|
||||
void Platform_thread::cancel_blocking()
|
||||
{
|
||||
l4_irq_trigger(_irq.local.data()->kcap());
|
||||
}
|
||||
|
||||
|
||||
void Platform_thread::affinity(Affinity::Location location)
|
||||
{
|
||||
_location = location;
|
||||
|
||||
@@ -192,7 +192,7 @@ Cap_id_allocator::Cap_id_allocator(Allocator &alloc)
|
||||
|
||||
unsigned long Cap_id_allocator::alloc()
|
||||
{
|
||||
Lock::Guard lock_guard(_lock);
|
||||
Mutex::Guard lock_guard(_mutex);
|
||||
|
||||
void *id = nullptr;
|
||||
if (_id_alloc.alloc(CAP_ID_OFFSET, &id))
|
||||
@@ -203,7 +203,7 @@ unsigned long Cap_id_allocator::alloc()
|
||||
|
||||
void Cap_id_allocator::free(unsigned long id)
|
||||
{
|
||||
Lock::Guard lock_guard(_lock);
|
||||
Mutex::Guard lock_guard(_mutex);
|
||||
|
||||
if (id < CAP_ID_RANGE)
|
||||
_id_alloc.free((void*)(id & CAP_ID_MASK), CAP_ID_OFFSET);
|
||||
|
||||
@@ -110,11 +110,3 @@ void Thread::start()
|
||||
new (platform().core_mem_alloc()) Core_trace_source(Trace::sources(),
|
||||
*this, pt);
|
||||
}
|
||||
|
||||
|
||||
void Thread::cancel_blocking()
|
||||
{
|
||||
/*
|
||||
* Within core, we never need to unblock threads
|
||||
*/
|
||||
}
|
||||
|
||||
@@ -316,11 +316,10 @@ void Genode::ipc_reply(Native_capability, Rpc_exception_code exc,
|
||||
}
|
||||
|
||||
|
||||
Genode::Rpc_request Genode::ipc_reply_wait(Reply_capability const &,
|
||||
Rpc_exception_code exc,
|
||||
Msgbuf_base &reply_msg,
|
||||
Msgbuf_base &request_msg,
|
||||
Rpc_entrypoint::Native_context &)
|
||||
Genode::Rpc_request Genode::ipc_reply_wait(Reply_capability const &,
|
||||
Rpc_exception_code exc,
|
||||
Msgbuf_base &reply_msg,
|
||||
Msgbuf_base &request_msg)
|
||||
{
|
||||
Receive_window &rcv_window = Thread::myself()->native_thread().rcv_window;
|
||||
|
||||
@@ -371,10 +370,9 @@ Genode::Rpc_request Genode::ipc_reply_wait(Reply_capability const &,
|
||||
}
|
||||
|
||||
|
||||
Ipc_server::Ipc_server(Rpc_entrypoint::Native_context& native_context)
|
||||
Ipc_server::Ipc_server()
|
||||
:
|
||||
Native_capability((Cap_index*)Fiasco::l4_utcb_tcr()->user[Fiasco::UTCB_TCR_BADGE]),
|
||||
_native_context(native_context)
|
||||
Native_capability((Cap_index*)Fiasco::l4_utcb_tcr()->user[Fiasco::UTCB_TCR_BADGE])
|
||||
{
|
||||
Thread::myself()->native_thread().rcv_window.init();
|
||||
}
|
||||
|
||||
@@ -102,9 +102,3 @@ void Thread::start()
|
||||
Cpu_thread_client cpu_thread(_thread_cap);
|
||||
cpu_thread.start((addr_t)_thread_start, _stack->top());
|
||||
}
|
||||
|
||||
|
||||
void Thread::cancel_blocking()
|
||||
{
|
||||
Cpu_thread_client(_thread_cap).cancel_blocking();
|
||||
}
|
||||
|
||||
@@ -227,14 +227,14 @@ struct Vcpu : Genode::Thread
|
||||
|
||||
State _state_request { NONE };
|
||||
State _state_current { NONE };
|
||||
Lock _remote_lock { Lock::UNLOCKED };
|
||||
Mutex _remote_mutex { };
|
||||
|
||||
void entry() override
|
||||
{
|
||||
_wake_up.down();
|
||||
|
||||
{
|
||||
Lock::Guard guard(_remote_lock);
|
||||
Mutex::Guard guard(_remote_mutex);
|
||||
|
||||
/* leave scope for Thread::join() - vCPU setup failed */
|
||||
if (_state_request == TERMINATE)
|
||||
@@ -319,7 +319,7 @@ struct Vcpu : Genode::Thread
|
||||
while (true) {
|
||||
/* read in requested state from remote threads */
|
||||
{
|
||||
Lock::Guard guard(_remote_lock);
|
||||
Mutex::Guard guard(_remote_mutex);
|
||||
_state_current = _state_request;
|
||||
_state_request = NONE;
|
||||
}
|
||||
@@ -331,7 +331,7 @@ struct Vcpu : Genode::Thread
|
||||
|
||||
if (_state_current != RUN && _state_current != PAUSE) {
|
||||
Genode::error("unknown vcpu state ", (int)_state_current);
|
||||
while (true) { _remote_lock.lock(); }
|
||||
while (true) { _remote_mutex.acquire(); }
|
||||
}
|
||||
|
||||
/* transfer vCPU state to Fiasco.OC */
|
||||
@@ -355,7 +355,7 @@ struct Vcpu : Genode::Thread
|
||||
reason = 0xfc;
|
||||
|
||||
{
|
||||
Lock::Guard guard(_remote_lock);
|
||||
Mutex::Guard guard(_remote_mutex);
|
||||
_state_request = NONE;
|
||||
_state_current = PAUSE;
|
||||
|
||||
@@ -380,7 +380,7 @@ struct Vcpu : Genode::Thread
|
||||
reason = Fiasco::l4_vm_vmx_read_32(vmcs, Vmcs::EXI_REASON);
|
||||
|
||||
{
|
||||
Lock::Guard guard(_remote_lock);
|
||||
Mutex::Guard guard(_remote_mutex);
|
||||
_state_request = NONE;
|
||||
_state_current = PAUSE;
|
||||
|
||||
@@ -1207,7 +1207,7 @@ struct Vcpu : Genode::Thread
|
||||
|
||||
void resume()
|
||||
{
|
||||
Lock::Guard guard(_remote_lock);
|
||||
Mutex::Guard guard(_remote_mutex);
|
||||
|
||||
if (_state_request == RUN || _state_request == PAUSE)
|
||||
return;
|
||||
@@ -1220,7 +1220,7 @@ struct Vcpu : Genode::Thread
|
||||
|
||||
void pause()
|
||||
{
|
||||
Lock::Guard guard(_remote_lock);
|
||||
Mutex::Guard guard(_remote_mutex);
|
||||
|
||||
if (_state_request == PAUSE)
|
||||
return;
|
||||
|
||||
@@ -1,97 +0,0 @@
|
||||
|
||||
===============================================
|
||||
Getting started with 'base-hw' on PandaBoard A2
|
||||
===============================================
|
||||
|
||||
|
||||
Martin Stein
|
||||
|
||||
Abstract
|
||||
########
|
||||
|
||||
This is a short tutorial that depicts a handy way to get a Genode ELF-image,
|
||||
build with 'base-hw', started on the PandaBoard A2. For informations
|
||||
about how to build Genode images with 'base-hw', have a look at
|
||||
'<GENODE_DIR>/repos/base-hw/doc/hw.txt'. This tutorial is dedicated to common
|
||||
Linux systems, but all examples originate from a Ubuntu 11.10.
|
||||
|
||||
|
||||
Tutorial
|
||||
########
|
||||
|
||||
Connect the PandaBoard to your local Ethernet through its RJ45 connector.
|
||||
Additionally connect the PandaBoard to your machine through its COM port.
|
||||
Ensure that you have installed the genode tool chain that is available at:
|
||||
|
||||
:[http://genode.org/download/tool-chain]:
|
||||
Genode tool-chain
|
||||
|
||||
Ensure that '<GENODE_TOOL_CHAIN_DIR>/bin/' is in your 'PATH' variable.
|
||||
Get the Linaro U-Boot repository and compile U-Boot for PandaBoard:
|
||||
|
||||
! git clone git://git.linaro.org/boot/u-boot-linaro-stable.git
|
||||
! cd <UBOOT_DIR>
|
||||
! make CROSS_COMPILE=genode-arm- omap4_panda_config
|
||||
! make CROSS_COMPILE=genode-arm-
|
||||
|
||||
During the compilation i had some errors. The first was in assembly code,
|
||||
it seemed to originate from a slip with the typo and was easy to fix.
|
||||
The second kind of errors occured because the GCC version had no support for
|
||||
direct array initialization, thus i avoided them by simply initialize
|
||||
the array elements separately.
|
||||
|
||||
Now install the following packages to communicate with the PandaBoard:
|
||||
|
||||
! apt-get install tftp-hpa minicom
|
||||
|
||||
Open '/etc/default/tftpd-hpa' with a text editor and ensure that it has
|
||||
the following content:
|
||||
|
||||
! TFTP_USERNAME="tftp"
|
||||
! TFTP_DIRECTORY="/var/lib/tftpboot"
|
||||
! TFTP_ADDRESS="0.0.0.0:69"
|
||||
! TFTP_OPTIONS="-l"
|
||||
|
||||
Tell TFTP wich image to provide:
|
||||
|
||||
! cd /var/lib/tftpboot/
|
||||
! ln -s <GENODE_BOOT_ELF> image.elf
|
||||
|
||||
Where '<GENODE_BOOT_ELF>' is the absolute path of the targeted ELF image.
|
||||
Start TFTP to enable the upload of the image:
|
||||
|
||||
! service tftp-hpa restart
|
||||
|
||||
Start Minicom in configuration mode:
|
||||
|
||||
! minicom -s
|
||||
|
||||
Go to 'Serial port setting' and ensure that the device is set to the
|
||||
TTY of the COM port you've conntected PandaBoard with. In my case it was
|
||||
'/dev/ttyS0'. Configure the other settings for a baud rate of '115200',
|
||||
8 bit char length, no parity and 1 stop bit. Quit Minicom and start
|
||||
it once more:
|
||||
|
||||
! minicom
|
||||
|
||||
Mount your SD-card and copy the U-Boot files to its boot partition:
|
||||
|
||||
! cd <UBOOT_DIR>; cp MLO /media/boot/; cp u-boot.bin /media/boot/
|
||||
|
||||
Unmount the SD card and insert it into the appropriate PandaBoard slot.
|
||||
Plug in the power connector or push the 'S1' button if the PandaBoard is
|
||||
already powered. Minicom should now show the following message below some
|
||||
bootloader info:
|
||||
|
||||
! Hit any key to stop autoboot:
|
||||
|
||||
We have to stop autoboot and type in this line to load and boot the genode
|
||||
image via ethernet:
|
||||
|
||||
! usb start; dhcp; bootelf 0x82000000
|
||||
|
||||
Now your Genode scenario should start and offer its debug output
|
||||
in Minicom. You can boot other images by redirecting the link
|
||||
'/var/lib/tftpboot/image.elf' accordingly, restarting your PandaBoard
|
||||
and instructing U-boot again as described above.
|
||||
|
||||
@@ -30,7 +30,7 @@ struct Genode::Hw_native_pd : Pd_session::Native_pd
|
||||
*********************/
|
||||
|
||||
GENODE_RPC_THROW(Rpc_upgrade_cap_slab, void, upgrade_cap_slab,
|
||||
GENODE_TYPE_LIST(Out_of_ram));
|
||||
GENODE_TYPE_LIST(Out_of_ram, Out_of_caps));
|
||||
GENODE_RPC_INTERFACE(Rpc_upgrade_cap_slab);
|
||||
};
|
||||
|
||||
|
||||
@@ -36,13 +36,12 @@ namespace Kernel
|
||||
constexpr Call_arg call_id_cancel_next_await_signal() { return 10; }
|
||||
constexpr Call_arg call_id_ack_signal() { return 11; }
|
||||
constexpr Call_arg call_id_print_char() { return 12; }
|
||||
constexpr Call_arg call_id_update_data_region() { return 13; }
|
||||
constexpr Call_arg call_id_update_instr_region() { return 14; }
|
||||
constexpr Call_arg call_id_ack_cap() { return 15; }
|
||||
constexpr Call_arg call_id_delete_cap() { return 16; }
|
||||
constexpr Call_arg call_id_timeout() { return 17; }
|
||||
constexpr Call_arg call_id_timeout_max_us() { return 18; }
|
||||
constexpr Call_arg call_id_time() { return 19; }
|
||||
constexpr Call_arg call_id_cache_coherent_region() { return 13; }
|
||||
constexpr Call_arg call_id_ack_cap() { return 14; }
|
||||
constexpr Call_arg call_id_delete_cap() { return 15; }
|
||||
constexpr Call_arg call_id_timeout() { return 16; }
|
||||
constexpr Call_arg call_id_timeout_max_us() { return 17; }
|
||||
constexpr Call_arg call_id_time() { return 18; }
|
||||
|
||||
|
||||
/*****************************************************************
|
||||
@@ -176,26 +175,16 @@ namespace Kernel
|
||||
}
|
||||
|
||||
/**
|
||||
* Globally apply writes to a data region in the current domain
|
||||
* Enforce coherent view (I-/D-Caches) on memory region
|
||||
*
|
||||
* \param base base of the region within the current domain
|
||||
* \param size size of the region
|
||||
*/
|
||||
inline void update_data_region(addr_t const base, size_t const size)
|
||||
inline void cache_coherent_region(addr_t const base, size_t const size)
|
||||
{
|
||||
call(call_id_update_data_region(), (Call_arg)base, (Call_arg)size);
|
||||
call(call_id_cache_coherent_region(), (Call_arg)base, (Call_arg)size);
|
||||
}
|
||||
|
||||
/**
|
||||
* Globally apply writes to an instruction region in the current domain
|
||||
*
|
||||
* \param base base of the region within the current domain
|
||||
* \param size size of the region
|
||||
*/
|
||||
inline void update_instr_region(addr_t const base, size_t const size)
|
||||
{
|
||||
call(call_id_update_instr_region(), (Call_arg)base, (Call_arg)size);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send request message and await receipt of corresponding reply message
|
||||
|
||||
@@ -27,59 +27,55 @@ namespace Genode
|
||||
|
||||
struct Genode::Vm_state : Genode::Cpu_state_modes
|
||||
{
|
||||
Genode::uint64_t vttbr;
|
||||
Genode::uint32_t sctrl;
|
||||
Genode::uint32_t hsr;
|
||||
Genode::uint32_t hpfar;
|
||||
Genode::uint32_t hdfar;
|
||||
Genode::uint32_t hifar;
|
||||
Genode::uint32_t ttbcr;
|
||||
Genode::uint32_t ttbr0;
|
||||
Genode::uint32_t ttbr1;
|
||||
Genode::uint32_t prrr;
|
||||
Genode::uint32_t nmrr;
|
||||
Genode::uint32_t dacr;
|
||||
Genode::uint32_t dfsr;
|
||||
Genode::uint32_t ifsr;
|
||||
Genode::uint32_t adfsr;
|
||||
Genode::uint32_t aifsr;
|
||||
Genode::uint32_t dfar;
|
||||
Genode::uint32_t ifar;
|
||||
Genode::uint32_t cidr;
|
||||
Genode::uint32_t tls1;
|
||||
Genode::uint32_t tls2;
|
||||
Genode::uint32_t tls3;
|
||||
Genode::uint32_t cpacr;
|
||||
Genode::uint64_t vttbr { 0 };
|
||||
Genode::uint32_t sctrl { 0 };
|
||||
Genode::uint32_t esr_el2 { 0 };
|
||||
Genode::uint32_t hpfar_el2 { 0 };
|
||||
Genode::uint32_t far_el2 { 0 };
|
||||
Genode::uint32_t hifar { 0 };
|
||||
Genode::uint32_t ttbcr { 0 };
|
||||
Genode::uint32_t ttbr0 { 0 };
|
||||
Genode::uint32_t ttbr1 { 0 };
|
||||
Genode::uint32_t prrr { 0 };
|
||||
Genode::uint32_t nmrr { 0 };
|
||||
Genode::uint32_t dacr { 0 };
|
||||
Genode::uint32_t dfsr { 0 };
|
||||
Genode::uint32_t ifsr { 0 };
|
||||
Genode::uint32_t adfsr { 0 };
|
||||
Genode::uint32_t aifsr { 0 };
|
||||
Genode::uint32_t dfar { 0 };
|
||||
Genode::uint32_t ifar { 0 };
|
||||
Genode::uint32_t cidr { 0 };
|
||||
Genode::uint32_t tls1 { 0 };
|
||||
Genode::uint32_t tls2 { 0 };
|
||||
Genode::uint32_t tls3 { 0 };
|
||||
Genode::uint32_t cpacr { 0 };
|
||||
|
||||
/**
|
||||
* Fpu registers
|
||||
*/
|
||||
Genode::uint32_t fpscr;
|
||||
Genode::uint64_t d0_d31[32];
|
||||
Genode::uint32_t fpscr { 0 };
|
||||
Genode::uint64_t d0_d31[32]{ 0 };
|
||||
|
||||
/**
|
||||
* Timer related registers
|
||||
*/
|
||||
|
||||
Genode::uint32_t timer_ctrl;
|
||||
Genode::uint32_t timer_val;
|
||||
bool timer_irq;
|
||||
|
||||
struct Timer {
|
||||
Genode::uint64_t offset { 0 };
|
||||
Genode::uint64_t compare { 0 };
|
||||
Genode::uint32_t control { 0 };
|
||||
Genode::uint32_t kcontrol { 0 };
|
||||
bool irq { false };
|
||||
} timer {};
|
||||
|
||||
/**
|
||||
* PIC related registers
|
||||
* Interrupt related values
|
||||
*/
|
||||
|
||||
enum { NR_IRQ = 4 };
|
||||
|
||||
Genode::uint32_t gic_hcr;
|
||||
Genode::uint32_t gic_vmcr;
|
||||
Genode::uint32_t gic_misr;
|
||||
Genode::uint32_t gic_apr;
|
||||
Genode::uint32_t gic_eisr;
|
||||
Genode::uint32_t gic_elrsr0;
|
||||
Genode::uint32_t gic_lr[4];
|
||||
unsigned gic_irq;
|
||||
struct Pic
|
||||
{
|
||||
unsigned last_irq { 1023 };
|
||||
unsigned virtual_irq { 1023 };
|
||||
} irqs {};
|
||||
};
|
||||
|
||||
#endif /* _INCLUDE__SPEC__ARNDALE__VM_STATE_H_ */
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user