Commit Graph

3080 Commits

Author SHA1 Message Date
Norman Feske
8876dd057d Add libc_vfs plugin and test
Issue #999
2014-04-29 15:19:28 +02:00
Norman Feske
d65872a815 fs test: Appropriately use rmdir instead of unlink 2014-04-29 15:19:28 +02:00
Norman Feske
fd66252ca4 libc_fs: Use priority higher than libc_vfs
This way, we make sure that libc_fs is used if both plugins are
present, which happens during the transition to libc_vfs.
2014-04-29 15:19:28 +02:00
Norman Feske
16378745bf libc_terminal: Use prio to override libc_vfs 2014-04-29 15:19:28 +02:00
Norman Feske
7750a399cc libc: Add 'rmdir' to plugin interface 2014-04-29 15:19:28 +02:00
Norman Feske
a011c76d85 libc: Make File_descriptor::fd_path char const * 2014-04-29 15:19:28 +02:00
Norman Feske
dd9b606182 libc: Add fd status and flags to File_descriptor
Those values need to be stored local to the FD. Including
them in the 'File_descriptor' eases the handling of libc
plugins.
2014-04-29 15:19:28 +02:00
Norman Feske
8e74fdc585 vfs: inline file system 2014-04-29 15:19:27 +02:00
Norman Feske
959b26fee0 vfs: ROM file system 2014-04-29 15:19:27 +02:00
Norman Feske
83a03df6a4 vfs: LOG file system 2014-04-29 15:19:27 +02:00
Norman Feske
c3c6a82d13 Move VFS from noux to 'os/include/vfs'
By separating the VFS from Noux, we become able to reuse the
VFS for libc-using programs. The most substantial change is the
removal of Noux::Sysio data structures from the VFS. Instead, the
Noux::Sysio refers to the VFS types now.

The new VFS library is located at 'os/include/vfs/'.

Furthermore, the patch removes various code duplications related
to pseudo file systems that provide a single file (block, zero,
random, terminal, null). The new 'Single_file_system' holds the
common boilerplate code for those.

Issue #999
2014-04-29 15:19:27 +02:00
Norman Feske
d7d62c53a6 mixer: Increase stack size of entrypoint 2014-04-24 14:56:36 +02:00
Norman Feske
2b5f4b0aaf file system: Exception for non-permitted symlinks
Until now, there was not exception type for the condition where a
symlink was created on a file system w/o supporting symlinks, e.g., FAT.
The corresponding file-system server (ffat_fs) used to return a negative
handle as a work around. I added 'Permission_denied' to the list of
exceptions thrown by 'File_system::Session::symlink' to handle this case
in a clean way.
2014-04-24 14:56:36 +02:00
Norman Feske
b43a5f1255 tar_fs: Return correct size of stat'ed dirs
Genode's file system interface returns the number of directories
multiplied by sizeof(Directory_entry) as size of a directory. The
tar_fs server used to return zero. The fix counts the sub nodes of
the given directory.
2014-04-24 14:56:36 +02:00
Norman Feske
a96f912f73 test/libc_ffat: Operate on cwd instead of root dir
The test used to rely on a writable root directory. To reuse the test
for the new VFS, where '/' is never writable, I changed all absolute
paths to relative paths.
2014-04-24 14:56:36 +02:00
Norman Feske
797a6c7422 libc_noux: style fix 2014-04-24 14:56:36 +02:00
Norman Feske
3bb7d4e67b noux: Decouple Dir_file_system from file systems
By introducing the new 'File_system_registry', we can remove the
knowledge about the actual file-system implementations from the
'Dir_file_system'. Thereby the code becomes more generic, which is
a precondition for using it as the basis for Genode's VFS library.

Issue #999
2014-04-24 14:56:36 +02:00
Norman Feske
28a5404281 noux: Handle SYSCALL_KILL in switch (fix warning) 2014-04-24 14:56:36 +02:00
Norman Feske
d83e076f11 terminal_session: Add label argument to connection 2014-04-24 14:56:36 +02:00
Sebastian Sumpf
b1a6db090f rump: Stabilize rump libs and fs server
* Perform sanity check before calculating memory available to rump kernel
* Distinguish between 'Hard_context' and 'Hard_context_thread', so no dead
  threads (that will not be started) are created
* Install signal-handler for memory-resource requests. This way the fs server
  will not block forever when the quota is execeeded and a resource requests
  fails, leaving the rump kernels to perform necessary actions

Fixes #1127
2014-04-24 10:32:58 +02:00
Stefan Kalkowski
4dd2db7634 use consistent scheme for chosen MAC addresses
Take a similar MAC address scheme within run scripts like
within the nic bridge to simplify DHCP configuration.
2014-04-22 14:48:33 +02:00
Martin Stein
58c4f1585b hw: fix bug in Kernel::update_*_region
fix #1125
2014-04-17 14:01:35 +02:00
Christian Prochaska
0e208c3d3d Arora: apply all patches
Fixes #1124.
2014-04-17 13:38:15 +02:00
Martin Stein
5d23e5903e hw: raise max amount of signal contexts
This is needed at least for the resource-request test since all available
interrupts are provided through a signal context.

fix #1123
2014-04-17 11:05:20 +02:00
Martin Stein
b53601d01b hw: cleanup signal-session component
ref #1123
2014-04-17 11:04:59 +02:00
Christian Helmuth
3d274366ab vbox: improve BFE argument handling 2014-04-16 17:31:24 +02:00
Christian Helmuth
2c7c814e19 Generate Genode version string on each build
The version string was generated when core/main.cc was rebuilt, which
happens on changes in the file itself or in a header file it includes.
But, the version should reflect if the Genode repository was changed at
any place. Therefore, I moved the version string to its own version.cc
which is forcedly rebuilt any time core is examined by the build system.

@nfeske what do you think about it? Core is now relinked on any build.

Fixes #551.
2014-04-16 17:30:31 +02:00
Alexander Boettcher
a7bc8bac9a nova: support usage of priorities in Genode/Nova
Enables finally the usage of priorities on base-nova.

Fixes #986
2014-04-16 17:30:31 +02:00
Alexander Boettcher
9ae441e469 nova: replacement of generic Genode spinlock
Turn Genode user-level spinlock into a user-level "helpinglock". This requires
support by the kernel introduced with kernel branch r5.

The commit avoids live-locks when multiple threads with SCs on different
priority levels compete for the same user-level Genode "spinlock".

Issue #986
2014-04-16 17:30:31 +02:00
Alexander Boettcher
bfa3053e62 nova: set pager and native ec cap for main thread
Prerequisite for follow up commit regarding base-nova specific Genode Spinlock
replacement.

Issue #986
2014-04-16 17:30:30 +02:00
Alexander Boettcher
ecaf09a41b nova: extent ec_ctrl in kernel and base-nova
The commit switches the kernel branch to r5 and updates the syscall bindings
in base-nova accordingly. Beside some cleanups, r5 extents the ec_ctrl syscall
to support following features:

* An EC may yield its current timeslice. The timeslice gets enqueued at the end
  of the run queue without refreshing the left budget of the quantum.
* An EC helps with the current SC another EC. Used in Genode to implement
  helping over a user-level lock to avoid live-lock situation. (Think of
  a limited priority-inheritance mechanism.)
* An EC requests a new scheduler decision. Used in Genode to transfer back the
  potentially helping SC to the helper EC.

Issue #986
2014-04-14 12:32:31 +02:00
Christian Prochaska
617d5ee3e6 OpenSSL: update to version 1.0.1g
Fixes #1118.
2014-04-14 12:32:31 +02:00
Alexander Boettcher
69bc875ac7 tool: increase amt reset timeout 2014-04-14 12:32:31 +02:00
Alexander Boettcher
0eef45e63f vbox: implement pthread_create specifically
Issue #1114
2014-04-14 12:32:31 +02:00
Alexander Boettcher
0c08334b2c pthread: separate structure and create function
With the commit an application may create a modified version of pthread_create.
Will be used by Virtualbox port.

Issue #1114
2014-04-14 12:32:31 +02:00
Alexander Boettcher
03ce614c23 base: add cpu_session parameter to thread creation
Fixes #1114
2014-04-14 12:32:31 +02:00
Alexander Boettcher
5169de72c4 base: set default cpu affinity
Set cpu_session default affinity space already during
construction of the thread, so that main thread is placed in the cpu affinity
space as defined by the parent. Otherwise the main thread is placed potentially
outside the affinity space, typically on the first/boot CPU.

Fixes #1107
2014-04-14 12:32:31 +02:00
Alexander Boettcher
73f71322f0 init: put ep for child in affinity space of child
Issue #1107
2014-04-14 12:32:30 +02:00
Alexander Boettcher
93f06dd11a nova: set invalid affinity space in thread constructor
Otherwise affinity space is set to 1x1 and in cpu_session_component.cc the cpu
session local affinity space defined by parent is not taken because
"Location::valid()" returns true.

Issue #1107
2014-04-14 12:32:30 +02:00
Stefan Kalkowski
b5fe1d752b hw: don't implement IRQ usage policy in core
Fix #995
Fix #1112
Fix #1113
2014-04-14 12:32:30 +02:00
Martin Stein
a9521853bd hw: provide Kernel::update_instr_region
fix #1115
2014-04-14 12:28:16 +02:00
Martin Stein
3f14defd9d hw: don't restrict update_data_region to core
ref #1115
2014-04-14 12:28:16 +02:00
Martin Stein
5a1fc6da60 hw: rename update_region in update_data_region
ref #1115
2014-04-14 12:28:16 +02:00
Norman Feske
b7e806d5eb News item for TrustZone article 2014-04-10 15:40:40 +02:00
Martin Stein
fabea7fba1 hw: provide invalidate_instr_caches_by_virt_region
ref #1115
2014-04-07 17:11:53 +02:00
Martin Stein
f8c2596259 hw: beautify flush_data_caches_by_virt_region
ref #1115
2014-04-07 17:11:46 +02:00
Martin Stein
d67a26ea4c hw: invalidate data caches on kernel init
fix #1108
2014-04-07 17:11:37 +02:00
Martin Stein
7836d92b22 hw & arm_v7: make flush_data_caches more readable
ref #1108
2014-04-07 17:11:28 +02:00
Martin Stein
9f95784f02 hw: diversify feedback from IPC node to thread
ref #1108
2014-04-07 17:11:20 +02:00
Martin Stein
e856158824 hw: no msg_base argument to Ipc_node::send_request
ref #1108
2014-04-07 17:10:53 +02:00