Commit Graph

7111 Commits

Author SHA1 Message Date
Norman Feske
869c6e1df2 Noux: dim naming noise using the Genode namespace
Because 'Noux::Child' implements several abstract Genode interfaces, the
'Genode::' prefix became almost ubiquitous, making the code harder to
read. By importing the 'Genode' namespace into the 'Noux' namespace,
this patch remedies this inconvenience.
2012-02-22 15:56:45 +01:00
Norman Feske
5aaf04915c Intercept CPU session of Noux::Child
To implement fork semantics, we need to customize the bootstrapping of
the newly created process, in particular the startup of the main thread.
The CPU session interface provides a suitable hook. By virtualizing the
CPU connection of the process to core, we can defer (and parametrize)
the startup of the main thread. Furthermore, this enables us to detect
illegal attempts by the Noux process to create threads in addition to
the main thread.
2012-02-22 15:56:45 +01:00
Norman Feske
652a4afd51 Intercept RAM and RM of Noux processes
By letting Noux processes talk to service implementations local to the
Noux server, we can track RAM allocations and RM operations. This is
needed as a prerequisite to implement fork.
2012-02-22 15:56:45 +01:00
Norman Feske
e4cefe58d5 Make Child's reference RAM session configurable
The 'Child' framework used to perform the transfer of session quota
using 'env()->ram_session()' as hard-wired reference account. When
locally virtualizing the RAM session supplied to the 'Child', this
policy does not work. When closing a session, core would try to transfer
session quota to the virtualized RAM service, which is of course not
possible. This patch makes the reference RAM session configable via the
'Child_policy' interface.
2012-02-22 15:56:45 +01:00
Norman Feske
15f0879402 Noux: skeleton for getpid and fork 2012-02-22 15:56:45 +01:00
Norman Feske
f3fcb5f56f Facility for reinitializing Platform_env
The new function 'Platform_env::reload_parent_cap' triggers a reload
of the parent capability and its respective resources. It is needed
during the bootstrap of a new process forked from an existing Noux
process.
2012-02-22 15:56:45 +01:00
Norman Feske
b6b05a032b Simple fork test and run script
Currently the test is failing because fork is not yet implemented.
2012-02-22 15:56:45 +01:00
Alexandre Bique
42c21e4582 Console: don't use buf for '-' and '0' padding
As buf is not sized depending on the padding, if a huge padding is put
in buf then we could see an overflow.
2012-02-16 09:11:39 +01:00
Alexandre Bique
a3266f8ec7 Log console: flush sooner rather than later 2012-02-16 09:11:13 +01:00
Christian Prochaska
06f155a644 Add 'Native_capability::dst()' accessor for Linux
This patch fixes #118.
2012-02-15 09:26:21 +01:00
Christian Prochaska
4b1f182e61 Unlock guarded lock before sending IPC error reply
Sending a reply message does not return, so the guarded lock needs to get
unlocked manually.

This patch fixes #117.
2012-02-15 09:26:21 +01:00
Christian Prochaska
e6f6defaca Test capability integrity
The test application tries to print a message using init's own LOG
session without permission.

This patch fixes #106.
2012-02-15 09:26:21 +01:00
Norman Feske
7ed13b3920 News entry about slides of FOSDEM 2012 2012-02-15 09:26:17 +01:00
Julian Stecklina
c7890c9423 Set ENOSYS for all libc dummies
This is a brute-force approach to issue #102. This might be a bit too
much. I don't know if we can clobber errno for all of those?
2012-02-14 16:44:43 +01:00
Julian Stecklina
9508cc0ed5 Fixed wrong sign extension in printf on 64 bit
This patch fixes printf errors caused by sign extension of values that
were supposed to be unsigned. Fixes #6. Also handles the case where
sizeof(long long) != sizeof(long).
2012-02-14 16:44:43 +01:00
Norman Feske
38ab3c50a5 Minor alterations made to the documentation
Thanks to ukn for reporting! Fixes #108.
2012-02-14 16:44:43 +01:00
Alexandre Bique
9adb24244a Update zlib to 1.2.6
Bump version from 1.2.5 to 1.2.6, as 1.2.5 is no more available at
zlib.net.
2012-02-14 16:44:43 +01:00
Alexandre Bique
f3a5b78d28 Explicitly specify use of python2 for gallium-aux
Without this fix, the library will fail to build on systems where
python3 is used by default.
2012-02-14 16:44:43 +01:00
Alexandre Bique
a6f0067e7f Hard-wire OKL4 elfweaver to python2
On executing "make prepare", patch elfweaver to specify python2 instead
of python, fix #107
2012-02-14 16:44:43 +01:00
Norman Feske
3c09a06620 Interactive browsing through a PDF
This patch introduces the basic key handling required to browse through
a multi-page PDF document ([page-up] or [enter] -> next page,
[page-down] or [backspace] -> previous page).
2012-02-14 16:44:42 +01:00
Norman Feske
ea8b113303 Moved code from main into 'Pdf_view' class
This way, we can register a meaningful 'user_data' pointer to at the
'pdfapp_t' structure and avoid the use of singletons for 'Framebuffer'
and 'pdfapp'.
2012-02-14 16:44:42 +01:00
Norman Feske
810654f45b Let MuPDF render a single page of a PDF document 2012-02-14 16:44:42 +01:00
Norman Feske
8201075671 Initial port of MuPDF application
This version of MuPDF will use Genode's framebuffer session and input
session to display a PDF file. At the current stage, the program is
merely a skeleton that compiles and starts. Neither the actual rendering
not the response to user input are implemented. To try it out, there
is a ready-to-use run script at 'libports/run/mupdf.run'.
2012-02-14 16:44:42 +01:00
Norman Feske
54cb49583b Libc plugin for using file I/O on ROM dataspaces 2012-02-14 16:44:42 +01:00
Norman Feske
dc4f6871c3 Make argument types of min and max more flexible 2012-02-14 16:44:42 +01:00
Norman Feske
8495a5fc96 Convenience helper for attached ROM dataspaces
In the line of the 'Attached_ram_dataspace' and
'Attached_io_mem_dataspace' classes, this new helper simplifies the
access to ROM dataspaces.
2012-02-14 16:44:42 +01:00
Julian Stecklina
a6bac95fbd Fix possible NULL-pointer dereference in _stat
When given NULL pointers as buffers to _stat, return EFAULT, just as
Linux and FreeBSD. Fixes #101.
2012-02-14 16:44:42 +01:00
Christian Prochaska
97b978c6c8 Fix sector calculation in GRUB's stage2_eltorito
The sector number was not calculated correctly for sector sizes < 2048
bytes. This commit updates the stage2_eltorito binary file, which was
created from CVS GRUB legacy (tag 'release_0_97') after applying Adam
Lackorzynski's 'os.8' patch
(http://os.inf.tu-dresden.de/~adam/grub/0.97/grub-0.97-os.8.diff.gz)
and the following patch:

diff --git a/stage2/asm.S b/stage2/asm.S
--- a/stage2/asm.S
+++ b/stage2/asm.S
@@ -98,7 +98,7 @@
        .string VERSION
 VARIABLE(config_file)
 #ifndef STAGE1_5
-       .string "(nd)/tftp/menu.lst"
+       .string "/boot/grub/menu.lst"
 #else   /* STAGE1_5 */
        .long   0xffffffff
        .string "/boot/grub/stage2"
diff --git a/stage2/fsys_iso9660.c b/stage2/fsys_iso9660.c
--- a/stage2/fsys_iso9660.c
+++ b/stage2/fsys_iso9660.c
@@ -81,12 +81,12 @@
   if (byte_len <= 0)
     return 1;

-  sector += (byte_offset >> sector_size_lg2);
-  byte_offset &= (buf_geom.sector_size - 1);
   asm volatile ("shl%L0 %1,%0"
            : "=r"(sector)
            : "Ic"((int8_t)(ISO_SECTOR_BITS - sector_size_lg2)),
            "0"(sector));
+  sector += (byte_offset >> sector_size_lg2);
+  byte_offset &= (buf_geom.sector_size - 1);

 #if !defined(STAGE1_5)
   if (disk_read_hook && debug)

This patch fixes #97.
This patch fixes #98.
2012-02-14 16:44:41 +01:00
Christian Prochaska
7690e5ad07 Fix QtScriptTools compilation
Make the 'moc_*.cpp' and '*.moc' files dependencies of '$(SRC_CC:.cpp=.o)'
to make sure that they get built. This patch fixes #99.
2012-02-14 16:44:22 +01:00
Christian Prochaska
f72ab94853 GDB monitor test for automatic testing
The following features are tested (currently on Fiasco.OC only):

- breakpoint in 'main()'
- breakpoint in a shared library function
- stack trace when not in a syscall
- thread info
- single stepping
- handling of segmention fault exception
- stack trace when in a syscall

This patch fixes #105.
2012-02-10 18:46:41 +01:00
Christian Prochaska
8b7252cdde Fix a typo in GDB monitor
This patch fixes #104.
2012-02-10 18:45:36 +01:00
Norman Feske
349dccd46d Make signal test more robust wrt scheduling 2012-02-10 10:09:55 +01:00
Norman Feske
b8f88c035a Support for prefetching a static list of ROM files
The ROM prefetcher service can be used to prefetch complete ROM files,
which is handy when using the iso9660 server (which normally reads file
content block-wise on demand). The server used to perform the
prefetching upon request of the respective ROM session. This patch adds
a facility for prefetching a predefined list of files. It is primarily
intended for eagerly fetching live-CD content in the background after
having passed the first boot stage.
2012-02-08 19:35:25 +01:00
Norman Feske
b11bbd30c2 Work-around of running Genode with PaX enabled
Thanks to Torsten Hilbrich for reporting. Fixes #91.
2012-02-08 19:30:55 +01:00
Christian Prochaska
ec09842fc7 Define struct 'generic_settings_operations'
The definition is needed to compile nic_drv with -O0 for Fiasco.OC.

This patch fixes #96.
2012-02-08 12:07:24 +01:00
Norman Feske
9399800c65 Limit width of launchpad window
Without limiting the size of the launchpad window, the application
prepares itself for the worst case, taking the screen size as maximum
size to allocate its pixel buffers. Limiting the maximum width to a
reasonable value reduces the memory footprint.
2012-02-01 15:18:31 +01:00
Christian Prochaska
4e43cdd041 Send 'invalid opcode' exception IPC on OKL4
When an invalid opcode gets executed, OKL4 switches to the kernel debugger
console instead of sending an exception IPC to the userland. This patch
fixes the problem by removing the code that invokes the debugger console.

This patch fixes #95.
2012-02-01 10:25:36 +01:00
Norman Feske
0cf5df378a Increase quota for USB stack in d3m 2012-01-30 23:55:54 +01:00
Norman Feske
da5bf709e6 Consider count_in in Noux terminal-read function
It does not suffice to constrain the amount of returned data with chunk
size of the transport buffer because the client may have specified an
even smaller value. For example, libreadline reads single characters
from the terminal and expects a single character in return. A different
amount is interpreted as EOF.
2012-01-28 02:54:29 +01:00
Norman Feske
36be5ec4b0 Support closing of terminal sessions 2012-01-28 00:02:01 +01:00
Norman Feske
227bab4aa6 Test d3m's auto-probing of the boot device 2012-01-27 18:08:25 +01:00
Norman Feske
d880386091 Qualifying RPC functions as const
This patch makes use of the recently added support for const RPC
functions by turning 'Framebuffer::Session::mode()' and
'Input::Session::is_pending()' into const functions.
2012-01-27 16:54:05 +01:00
Norman Feske
210eb98598 Support const RPC functions with no arguments
Until now, the RPC framework did not support const RPC functions. Rather
than being a limitation inherent to the concept, const RPC functions
plainly did not exist. So supporting them was not deemed too important.
However, there are uses of RPC interfaces that would benefit from a way
to declare an RPC function as const. Candidates are functions like
'Framebuffer::Session::mode()' and 'Input::Session::is_pending()'.

This patch clears the way towards declaring such functions as const.
Even though the patch is simple enough, the thorough support for
const-qualified RPC functions would double the number of overloads for
the 'call_member' function template (in 'base/include/util/meta.h'). For
this reason, the patch does support const getter functions with no
arguments only. This appears to be the most common use of such
functions.
2012-01-27 16:54:05 +01:00
Norman Feske
83a8e83ae0 Mark qt_script46, qt_scripttools as deprecated 2012-01-27 13:08:02 +01:00
Norman Feske
66fc277372 Add missing include search directory to qt_svg 2012-01-27 13:07:23 +01:00
Norman Feske
48ac5143a2 Add spin lock to DDE Kit
Linux DDE used to implement Linux spin locks based on 'dde_kit_lock'.
This works fine if a spin lock is initialized only once and used
infinitely. But if spin locks are initialized on-the-fly at a high rate,
each initialization causes the allocation of a new 'dde_kit_lock'.
Because in contrast to normal locks, spinlocks cannot be explicitly
destroyed, the spin-lock emulating locks are never freed. To solve the
leakage of locks, there seems to be no other way than to support the
semantics as expected by the Linux drivers. Hence, this patch introduces
a DDE Kit API for spin locks.
2012-01-27 02:01:07 +01:00
Norman Feske
a107c89a8e Exceptions at construction time of dynamic objects
This patch implements the support needed to handle exceptions that occur
during the construction of objects dynamically allocated via the
'Allocator' interface. In this case, the compiler automatically invokes
a special delete operator that takes the allocator type (as supplied to
'new') as second argument. The implementation of this delete operator
has been added to the 'cxx' library. Because the operator delete is
called without the size of the object, we can use only those allocators
that ignore the size argument of the free function and print a warning
otherwise. The added 'Allocator::need_size_for_free()' function is used
to distinguish safe and unsafe allocators.
2012-01-26 21:19:30 +01:00
Norman Feske
759e789ddd Demo device driver manager (d3m)
The new d3m component is the designated device-driver manager for the
upcoming live CD. It addresses the auto probing of USB storage and ATAPI
boot devices (issue #94) and the aggregation of user input coming from
USB HID and PS/2.
2012-01-25 20:19:03 +01:00
Norman Feske
526671609b Let Git ignore 'linux_drivers' 2012-01-25 20:17:41 +01:00
Norman Feske
0058b15763 Helper for running a service as a child (slave)
The new 'Slave_policy' and 'Slave' classes are built upon the existing
child framework. They support the implementation of scenarios where a
service is started as a child of the client. This is usefull for
employing an existing service implementation as a local utility or
plugin.
2012-01-25 20:04:42 +01:00