Commit Graph

2508 Commits

Author SHA1 Message Date
Stefan Kalkowski 1f9890d635 Follow-up for: "Merge libc_vfs plugin into libc"
This patch avoids the construction of the Genode::Config object in Noux
processes. The construction of this object would populate the Noux
process with additional capabilities, which cannot be handled by
'fork()'.
2014-05-07 10:37:51 +02:00
Stefan Kalkowski 42cce8668b noux: upgrade RM session for client (fix #1138) 2014-05-07 10:37:40 +02:00
Stefan Kalkowski 6553e9d79f part_blk test: increase failing timeout 2014-05-07 10:37:40 +02:00
Alexander Boettcher 8c5f350e0e nova: avoid fault during core thread fault dump 2014-05-07 10:37:40 +02:00
Christian Helmuth de0a771fae Generic sleep_forever() based on lock
The old implementation of sleep_forever() used a local Ipc_server
object, which is not announced (i.e., known) outside of the blocking
process/thread, to infinitely wait for incoming messages. In past and
present, this leads to problems (e.g., issues #538 and #1032).

Fixes #1135.
Fixes #538.
Fixes #1032.
2014-05-07 10:37:39 +02:00
Alexander Boettcher 8366d07082 vbox: use separate memory spaces
Use the libc Mem_alloc implementation per MMTYP of virtualbox. With this the
invariant that all memory allocation of a MMTYP are dense located.

Fixes #1130
2014-05-07 10:37:39 +02:00
Alexander Boettcher 8da1c77908 libc: move mem alloc definition in header file
Prerequisite to fix Issue #1130, to be able to reinstantiate the libc
memory allocator several times if wanted.
2014-05-07 10:37:39 +02:00
Christian Helmuth bab5bb67e7 ahci: enable simple test on x86_64
Related to #1133.
2014-05-07 10:37:39 +02:00
Stefan Kalkowski ed2d54ed87 hw: make core target require 'hw' spec (fix #599) 2014-05-07 10:37:39 +02:00
Stefan Kalkowski 73eb7a8d4b hw: map core on demand (fix #723)
Instead of mapping all physical memory 1:1 into core/kernel's address space,
this commit limits the 1:1 mapping to the binary image, and I/O memory
regions used by the kernel only. All subsequent memory accesses of core
are done by mapping the corresponding memory on demand, and not necessarily
1:1.

This commit has several side effects:

The page table code had to be revisited completely. The kernel inserts no
longer anything into the page tables, apart from the initial translations
to have the core/kernel image available when enabling the MMU. The page
tables and higher level translation tables are no longer named Tlb, but
Translation_table instead. There is no indirection class required to define
the translation tables of a concrete SoC, the appropriated ARM specifier
is sufficient.
The ability to map core's memory the same way like it's done for all other
protection domains, makes a special treatment of core's threads (no context
area) obsolete.

Ref #567 (partly solves it)
Fix #723
Fix #1068
2014-05-07 10:37:39 +02:00
Stefan Kalkowski 34b18e9da2 hw: restrict processor broadcast to TLB flushing
Removes the generic processor broadcast function call. By now, that call
was used for cross processor TLB maintance operations only. When core/kernel
gets its memory mapped on demand, and unmapped again, the previous cross
processor flush routine doesn't work anymore, because of a hen-egg problem.
The previous cross processor broadcast is realized using a thread constructed
by core running on top of each processor core. When constructing threads in
core, a dataspace for its thread context is constructed. Each constructed
RAM dataspace gets attached, zeroed out, and detached again. The detach
routine requires a TLB flush operation executed on each processor core.

Instead of executing a thread on each processor core, now a thread waiting
for a global TLB flush is removed from the scheduler queue, and gets attached
to a TLB flush queue of each processor. The processor local queue gets checked
whenever the kernel is entered. The last processor, which executed the TLB
flush, re-attaches the blocked thread to its scheduler queue again.

To ease uo the above described mechanism, a platform thread is now directly
associated with a platform pd object, instead of just associate it with the
kernel pd's id.

Ref #723
2014-05-07 10:37:38 +02:00
Stefan Kalkowski b888a26d57 core: extend core memory allocator
* Allow to translate physical to virtual core addresses and vice versa
* Eliminate race introduced by commit "core: re-design memory allocator"

Ref #723
2014-05-07 10:37:38 +02:00
Alexander Boettcher 0ddc69d370 vbox: join emt and vcpu handler thread
Fixes #1129
2014-05-07 10:37:38 +02:00
Alexander Boettcher 4782fd34f6 vmm: parameterize Vcpu_dispatcher
Pre-condition to realize #1129, to be able to let a vCPU handler thread also
be a pthread.
2014-05-07 10:37:37 +02:00
Alexander Boettcher 512c29c486 nova: mtd fields are unsigned
Bit 31 (FPU Mtd) got negative expanded when combined with 64bit value.

Detected during work on #1129
2014-05-07 10:37:37 +02:00
Alexander Boettcher 37dc5c2c78 vbox: remove patches regarding ioport width check
Issue #1129
2014-05-07 10:37:37 +02:00
Alexander Boettcher 8824ce8962 libc: don't take alien thread for main pthread
It covers bugs which we should detect and fix, especially depending on
the result of pthread_myself locking implementation (ours and vbox) takes
decision to take a lock or just to assume it is a reentrant locking attempt.

Fixes #1128
2014-05-07 10:37:37 +02:00
Norman Feske b9cf2eade8 nitpicker: Consider menubar for pointer reports
The pointer-report facility used to report the screen-absolute position
of the mouse pointer. For nitpicker clients, however, this position is
meaningless because their coordinate is always constrained to the area
below the menu bar. This patch offsets the reported position
accordingly.
2014-05-07 10:37:36 +02:00
Norman Feske 13cc423050 os: Add Point::operator == 2014-05-07 10:37:36 +02:00
Norman Feske fb673fe4fd os: Add Rect::contains() to geometry utils 2014-05-07 10:37:36 +02:00
Norman Feske 3e4eb0d135 os: Refine Attached_rom_dataspace::update 2014-05-07 10:37:36 +02:00
Norman Feske 34dd7f982c os: Make buffer size of 'Reporter' configurable 2014-05-07 10:37:36 +02:00
Norman Feske 5de17d4223 os: Add 'Framebuffer::Session::sync_sigh'
The new framebuffer-session function allows a client to register a
handler for receiving display-synchronization events.
2014-05-07 10:37:35 +02:00
Alexander Boettcher 0b04f9de25 run: limit created threads in test
The rm_session quota of the context area is not sufficient to start more
then ~95 threads per address space. If one really needs so many threads per
address space one could increase the quota or dynamically respond to it using
the Expanding_rm_session class. Until now there is no need to support so much
threads per address space.

Issue #1122
2014-05-07 10:37:35 +02:00
Alexander Boettcher 9fd6034e94 base: check cpu_session pointer during destruction
Issue #1122
2014-04-29 15:30:27 +02:00
Norman Feske a9fc5304c0 Unify success messages of run scripts
The pattern "Test succeeded" is relied on by the automated
testing framework. We need to use it consistently to avoid
false negatives.
2014-04-29 15:27:13 +02:00
Norman Feske 60d9c90921 Merge libc_vfs plugin into libc
Issue #999
2014-04-29 15:27:13 +02:00
Norman Feske c7f1b85652 Retire libc_{log, block, fs, rom}
Those plugins are superseded by libc_vfs.

Issue #999
2014-04-29 15:25:39 +02:00
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