Commit Graph

62 Commits

Author SHA1 Message Date
Christian Prochaska
ed58040794 Define 'TZ_MAX_TIMES' as 1
This patch defines 'TZ_MAX_TIMES' as 1 when building 'localtime.c' to avoid
a big stack allocation in the 'tzload()' function.

Fixes #250.
2012-07-02 14:18:58 +02:00
Christian Prochaska
b8ee4bda81 libports: MPC
This patch adds the 'MPC' library to the 'libports' repository.

Fixes #263.
2012-07-02 14:15:42 +02:00
Sebastian Sumpf
e23c334b90 OMAP4 USB driver 2012-06-22 11:38:36 +02:00
Alexander Boettcher
ae6257dce1 Use NOVA microkernel from github, add 64bit
Use git to get recent kernels from github. Adjust NOVA patch to compile
with recent github version. Patch and use makefile of NOVA microkernel
to avoid duplicated (and outdated) makefile in Genode

Furthermore, this patch adds support for using NOVA on x86_64. The
generic part of the syscall bindings has been moved to
'base-nova/include/nova/syscall-generic.h'. The 32/64-bit specific
parts are located at 'base-nova/include/32bit/nova/syscalls.h' and
'base-nova/include/64bit/nova/syscalls.h' respectively.

On x86_64, the run environment boots qemu using the Pulsar boot loader
because GRUB legacy does not support booting 64bit ELF executables.

In addition to the NOVA-specific changes in base-nova, this patch
rectifies compile-time warnings or build errors in the 'ports' and
'libports' repositories that are related to NOVA x86_64 (i.e., Vancouver
builds for 32bit only and needed an adaptation to NOVAs changed
bindings)

Fixes #233, fixes #234
2012-06-20 19:44:07 +02:00
Christian Prochaska
4fc9383c31 libports: Expat
This patch adds the "Expat" XML parser library to libports.

Fixes #245.
2012-06-20 19:44:02 +02:00
Josef Söntgen
896d12d0b8 Add writev() to libc
This function is needed by perror(3).

Closes #239.
2012-06-08 14:33:15 +02:00
Josef Söntgen
b6394495d3 Replace yacc call with bison
We are using bison to generate certain files when preparing the libc.
However the yacc(1) wrapper script is used instead of calling bison
directly which does not work if bison is not installed but the original
yacc(1).

Fixes #225. Fixes #227.
2012-06-01 12:44:48 +02:00
Christian Helmuth
a497a22edf Moon: Route to IO_PORT/IRQ services
The timer needs IRQ and IO_PORT on platforms where it uses the PIT.
2012-05-30 08:51:28 +02:00
Christian Helmuth
7bffdacc9a Increase RAM quotas for 64-bit architectures 2012-05-29 16:08:50 +02:00
Josef Söntgen
7b8ebe34e9 libcrypto: Provide x86_64-specific implementations
modexp512 and rc4-md5 code were missing for x86_64. The files are now
generated on openssl-prepare and will be used when building for x86_64.

Fixes #224.
2012-05-29 14:58:01 +02:00
Stefan Kalkowski
337bb6d5f8 Build gmp and mpfr libary on x86_32 only (fix #135)
By now the gmp-library works builds on x86/32bit only. The mpfr library
depends on gmp, so make both library dependent on the corresponding platform
variables. Look at the discussion of issue #135.
2012-05-29 13:55:00 +02:00
Norman Feske
b86f0c8b32 Fix getdirentries in libc_ffat 2012-05-29 13:55:00 +02:00
Christian Helmuth
bf91ea8926 Enable building libav without optimization
Some source files do not build with -O0 due to conflicting register
allocation and inline assembler constrains. We enforce optimization (O2)
for these files.

Also, I reduced the noise from warning messages induced by lazy handling
of "assignment discards ‘const’ qualifier" and "passing argument from
incompatible pointer type" in third-party sources.
2012-05-29 13:55:00 +02:00
Christian Helmuth
36ae42b8ff Check for required tools on 'make prepare'
Fixes #221.
2012-05-29 13:55:00 +02:00
Josef Söntgen
d211007aba Add port of OpenSSL to libports
This commit contains the initial port of OpenSSL to Genode. It certainly
needs some more work to get things straight - it compiles fine but does
not work because of a NULL pointer exception.
2012-05-29 13:54:59 +02:00
Norman Feske
db21cd6f0e Add shutdown to lwIP libc plugin 2012-05-29 13:54:59 +02:00
Josef Söntgen
30fe9d1912 Extend libc with libresolv functionality
This commit enables libc's own libresolv and its dependencies.
2012-05-29 13:54:59 +02:00
Christian Prochaska
ba6dae9946 'avplay' media player
With this patch the SDL-based 'avplay' media player, which is part of
'libav', can be built. The run script expects a media file named
'mediafile' in the 'bin' directory.

Fixes #216.
2012-05-29 13:54:59 +02:00
Christian Prochaska
25a82d6dd5 Add 'libav' to libports
Fixes #212.
2012-05-29 13:54:59 +02:00
Christian Helmuth
9471490d01 Lua: Put Genode integration into own Lua lib 2012-05-29 13:54:58 +02:00
Christian Helmuth
28d4bdba83 Lua: Use some Genode functions from example
The example provides Timer::msleep() and the process' quota() to Lua
code.
2012-05-29 13:54:58 +02:00
Christian Helmuth
0200c27e33 Lua: Port of Lua runtime and simple example
The Lua runtime library is built in two variants: ANSI C and C++. The
C++ provides all Lua API function with C++ linkage and uses C++
exceptions instead of setjmp/longjmp for protected execution of Lua
chunks.

The ported version of Lua is 5.1.5.
2012-05-29 13:54:52 +02:00
Sebastian Sumpf
3bffcc17de Separate setjmp/longjmp from libc into own library 2012-05-23 19:18:33 +02:00
Christian Prochaska
b6896cf22f SDL timer support
This patch adds a Genode-specific SDL timer backend.

Fixes #211.
2012-05-21 17:17:06 +02:00
Norman Feske
95766bd4a1 Let mmap return aligned anonymous memory 2012-05-18 17:04:52 +02:00
Norman Feske
ae1d0c04ae File-system interface, ram_fs, libc-fs
This patch introduces the file-system-session interface, provides an
implementation of this interface in the form of an in-memory file
system, and enables the libc to use the new file-system facility.

The new interface resides in 'os/include/file_system_session/'. It
uses synchronous RPC calls for functions referring to directory
and meta-data handling. For transferring payload from/to files, the
packet-stream interface is used. I envision that the asynchronous design
of the packet-stream interface fits well will the block-session
interface. Compared to Unix-like file-system APIs, Genode's file-system
session interface is much simpler. In particular, it does not support
per-file permissions. On Genode, we facilitate binding policy (such as
write-permission) is sessions rather than individual file objects.

As a reference implementation of the new interface, there is the
new 'ram_fs' service at 'os/src/server/ram_fs'. It stores sparse
files in memory. At the startup, 'ram_fs' is able to populate the
file-system content with directories and ROM modules as specified
in its configuration.

To enable libc-using programs to access the new file-system interface,
there is the new libc plugin at 'libports/src/lib/libc-fs'. Using this
plugin, files stored on a native Genode file system can be accessed
using the traditional POSIX file API.

To see how the three parts described above fit together, the test
case at 'libports/run/libc_fs' can be taken as reference. It reuses
the original 'libc_ffat' test to exercise several file operations
on a RAM file-system using the libc API.

:Known limitations:

The current state should be regarded as work in progress. In particular
the error handling is not complete yet. Not all of the session functions
return the proper exceptions in the event of an error. I plan to
successively refine the interface while advancing the file-system
implementations. Also the support for truncating files and symlink
handling are not yet implemented.

Furthermore, there is much room for optimization, in particular for the
handling of directory entries. Currently, we communicate only one dir
entry at a time, which is bad when traversing large trees. However, I
decided to focus on functionality first and defer optimizations (such as
batching dir entries) to a later stage.

The current implementation does not handle file modification times at
all, which may be a severe limitation for tools that depend on this
information such as GNU make. Support for time will be added after we
have revisited Genode's timer-session interface (issue #1).

Fixes #54
Fixes #171
2012-05-17 20:33:53 +02:00
Christian Prochaska
ac628b106b SDL audio support
This patch implements a Genode-specific audio backend for SDL.

The audio volume (in percent) can be configured in the config file of the
SDL application:

<config>
	<sdl_audio_volume value="100"/>
</config>

Fixes #204.
2012-05-10 19:07:54 +02:00
Norman Feske
eeb0896d06 Update zlib to version 1.2.7, fix #196 2012-05-03 23:32:56 +02:00
Christian Prochaska
48d547e2fd Enable SDL thread support
This patch enables the use of threads and locking mechanisms in SDL
applications. The 'pthread' libary is used as backend. Not all features
are currently supported.

Fixes #185.
2012-04-20 11:21:24 +02:00
Christian Prochaska
ff3e08f9ea POSIX threads and semaphores
This patch implements a subset of the POSIX thread and semaphore functions
in the 'pthread' library.

Fixes #174.
2012-04-16 12:16:40 +02:00
Christian Prochaska
df95b8b2b4 Add 'Qoost' to libports
Fixes #173.
2012-04-05 10:40:46 +02:00
Norman Feske
63827dda00 Heuristics for determining python2 binary 2012-04-05 10:40:46 +02:00
Christian Prochaska
12e1ae9d72 Implement '_nanosleep()'
This patch provides an implementation of the '_nanosleep()' libc function,
which blocks on a timed semaphore for the given time, but at least 10ms.
This should result in better performance than creating a timer connection
on every call (for thread-safety), but could still be improved.

Fixes #158.
2012-03-21 22:05:55 +01:00
Christian Prochaska
983ee6321a Add 'include/SDL' to include search path
Fixes #159.
2012-03-21 22:05:31 +01:00
Norman Feske
cca4b7b43c Change include order to remedy conflicting defines
Both the libc and the NOVA syscall bindings provide the definition of
PAGE_SIZE. In contrast to the libc, which uses a #define, the NOVA
syscalls uses a proper enum value. Thus, we can work around the conflict
by including the NOVA syscalls header prior the libc header. Fixes #152.
2012-03-16 14:45:54 +01:00
Althaf K Backer
e607ba9271 Fixed a typo from 32bit to 64bit (fixed #137) 2012-03-08 10:42:26 +01:00
Christian Prochaska
2d290c0898 Preliminary 'log2()' and 'log2f()' implementation
The 'log2()' and 'log2f()' functions have been added in FreeBSD's libc
version 9.0.0, but they are missing in version 8.2.0, which is used in
Genode. This patch provides preliminary implementations of these
functions until the Genode libc gets updated to version 9.0.0 or above.

Fixes #143.
2012-03-08 10:42:21 +01:00
Christian Helmuth
92171e9b86 Fiasco.OC: Reduce capability-allocator size
The old variant provided 8K capability slots to all processes on core,
which increased binaries by 180 KB for the static allocator. I reduced it
to 4K capabilities stay under 100 KB overhead for the allocator.

Anyway, pci_drv and pl11x_drv need more RAM quota now: 2M for pl11x_drv
and 1M for pci_drv.
2012-02-28 10:54:42 +01:00
Norman Feske
0bf0b31c54 Build jbig2dec as shared library, fix mupdf.run 2012-02-24 13:39:23 +01:00
Norman Feske
1a833ebd30 Allow for overriding time-related libc functions
If using the libc for Noux programs, the default implementation of these
functions cannot be used because they rely on a dedicated
timeout-scheduler thread. Noux programs, however, are expected to
contain only the main thread. By turning the functions into weak
symbols, the noux libc-plugin can provide custom implementations.
2012-02-23 10:42:11 +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
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
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
5bd2c1f205 Constrain build of gallium-i915 lib to i915 SPEC 2012-01-25 16:08:32 +01:00
Norman Feske
9e3ecade16 Replace Framebuffer::info by Framebuffer::mode
As a preliminary step for working on issue #11, this patch revisits the
'Framebuffer::info' RPC call. Instead of using C-style out paramters,
the new 'mode()' RPC call returns the mode information as an object of
type 'Mode'. Consequently, mode-specific functions such as
'bytes_per_pixel' have been moved to the new 'Framebuffer::Mode' class.
2012-01-25 13:27:47 +01:00