Commit graph

84 commits

Author SHA1 Message Date
Thomas Martitz
6d85de3419 Implement cooperative threads on hosted platforms using C code.
This replaces SDL threads with real cooperative threads, which are less cpu intensive and allow priority scheduling.
The backend for context switching is dependant on the host (sigaltstack/longjmp on Unix, Fibers on Windows).
configure has options to force or disallow SDL threads.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29327 a1c6a512-1295-4272-9138-f99709370657
2011-02-18 22:46:01 +00:00
Andree Buschmann
992f897440 Make sim build compilable under Cygwin. Fixes FS#11832.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28899 a1c6a512-1295-4272-9138-f99709370657
2010-12-25 22:17:02 +00:00
Thomas Martitz
87c8be4a08 RaaA: Improve tagcache search to make the database built.
First, it add the ability to tagcache to walk through multiple search roots.
Second, it adds symlinks targets to the search roots if they're are not inside any of the current search roots, otherwise the symlink is ignored (unless it's a file).

The default search root is still /, so no search root will be actually added.
But the tagcache now isn't trapped by recursive symlinks anymore and successfully builds, and it's prepared for a future music directory setting.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28884 a1c6a512-1295-4272-9138-f99709370657
2010-12-23 19:02:18 +00:00
Thomas Martitz
2c2416094f Get rid of get_user_file_path and do the path handling in wrappers for open() and friends.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28752 a1c6a512-1295-4272-9138-f99709370657
2010-12-06 22:26:31 +00:00
Thomas Martitz
0d4585b28f Extend lc_open() to also being able to load overlay plugins.
For this it needs to look at the plugin header. Since lc_open() doesn't know
it's a plugin, the header needs to be changed slightly to include the new lc_header (which needs to be the first element in plugin_header so it can be casted savely).

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28054 a1c6a512-1295-4272-9138-f99709370657
2010-09-09 16:17:21 +00:00
Thomas Martitz
ded525e466 Revert r27972 to fix FS#11610 (but in a way android builds still work).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28050 a1c6a512-1295-4272-9138-f99709370657
2010-09-08 21:26:36 +00:00
Thomas Martitz
89dcb1c984 fix red.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28049 a1c6a512-1295-4272-9138-f99709370657
2010-09-08 20:42:34 +00:00
Thomas Martitz
e22aa75f5c Cleanup io.c a bit.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28048 a1c6a512-1295-4272-9138-f99709370657
2010-09-08 20:39:55 +00:00
Thomas Martitz
a4264eb89a Redo previous commit to not break android builds.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27972 a1c6a512-1295-4272-9138-f99709370657
2010-09-01 22:06:03 +00:00
Thomas Martitz
6eaab4d004 Ged rid of uisimulator/common/io.c for android builds.
Use host's functions for file i/o directly (open(), close() ,etc.), not the sim_* variants.
Some dir functions need to be wrapped still because we need to cache the parents dir's path (host's dirent doesn't let us know).
For the same reason (incompatibility) with host's dirent) detach some members from Rockbox' dirent struct and put it into an extra one,
the values can be retrieved via the new dir_get_info().

Get rid of the sim_ prefix for sleep as well and change the signature to unix sleep().

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27968 a1c6a512-1295-4272-9138-f99709370657
2010-09-01 21:29:34 +00:00
Thomas Martitz
2c2e261648 Use system headers a bit more: use host's fcntl.h for O_RDONLY etc.
Removes the need to fix up those in the simulator.

Also work around some posix-mingw incompatibilities (e.g. getcwd()).

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27904 a1c6a512-1295-4272-9138-f99709370657
2010-08-27 12:38:25 +00:00
Thomas Martitz
194174a371 2nd try: Introduce a small api for loading code (codecs,plugins) from disk/memory.
It's a used by codec/plugin loading and vastly reduces code duplication. It's also a step forward in getting rid of libuisimulator in the application ports.

Apparently sh needs linker symbols prefixed with _ even if they're referenced without from C code.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27902 a1c6a512-1295-4272-9138-f99709370657
2010-08-27 00:29:50 +00:00
Thomas Martitz
97d2a6ec5c Revert "Introduce a small api for loading code (codecs,plugins) from disk/memory."
I don't understand the build error at all, plugin_bss_start is clearly defined in plugin.lds

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27901 a1c6a512-1295-4272-9138-f99709370657
2010-08-27 00:16:26 +00:00
Thomas Martitz
73f057be6f Introduce a small api for loading code (codecs,plugins) from disk/memory.
It's a used by codec/plugin loading and vastly reduces code duplication. It's also a step forward in getting rid of libuisimulator in the application ports.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27900 a1c6a512-1295-4272-9138-f99709370657
2010-08-26 23:20:02 +00:00
Thomas Martitz
240923a801 Rockbox as an application: Commit current Android port progress.
General state is: Rockbox is usable (plays music, saves configuration, touchscreen works too).
Problems:
 - Playing music in the background (i.e. when switching to another app) doesn't work reliably, but I'm working on that now.
 - no cabbiev2 (only some preliminary files for it), no other default theme.
 - screen flickers sometimes if the updates are too frequent
 - no multi screen apk/package
 - strange behavior when a phone call comes in

The java files (and the eclipse project) resides in android/, which is also supposed to be the build folder.
I've put a small README in there for instructions. There are some steps needed after the make part, which are described there,
and which eclipse mostly handles. But there ought to be some script/makefile rules which do that instead in the future.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27668 a1c6a512-1295-4272-9138-f99709370657
2010-08-02 20:34:47 +00:00
Thomas Martitz
9c0b2479f7 Rockbox as an application: add get_user_file_path().
For RaaA it evaluates user paths at runtime. For everything but codecs/plugins it will give the path under $HOME/.config/rockbox.org if write access is needed or if the file/folder in question exists there (otherwise it gives /usr/local/share/rockbox).
This allows for installing themes under $HOME as well as having config.cfg and other important files there while installing the application (and default themes) under /usr/local.

On the DAPs it's a no-op, returing /.rockbox directly.

Not converted to use get_user_file_path() are plugins themselves, because RaaA doesn't build plugins yet.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27656 a1c6a512-1295-4272-9138-f99709370657
2010-08-01 16:15:27 +00:00
Thomas Martitz
3d0cee8abb - Move uisimulator/sdl/*.[ch] into the target tree, under firmware/target/hosted/sdl, uisdl.c is split up across button-sdl.c and system-sdl.c.
- Refactor the program startup. main() is now in main.c like on target, and the implicit application thread will now act as our main thread (previously a separate one was created for this in thread initialization).

This is part of Rockbox as an application and is the first step to make an application port from the uisimulator. In a further step the sim bits from the sdl build will be separated out.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26065 a1c6a512-1295-4272-9138-f99709370657
2010-05-15 21:02:47 +00:00
Thomas Martitz
e919b5d5b9 Fix disastrous variable shadowing, change casts to unsigned in (cygwin doesn't like mode_t there, and unsigned int should be equally correct) and check the correct bitmask in sim_open().
Should repair filesystem accesses on the sim.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25881 a1c6a512-1295-4272-9138-f99709370657
2010-05-07 16:56:40 +00:00
Thomas Martitz
0a1d7c28b7 Make open() posix compliant api-wise. A few calls (those with O_CREAT) need the additional optional mode parameter so add it. Impact for the core is almost zero, as open() is a wrapper macro for the real open function which doesn't take the variable parameter.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25844 a1c6a512-1295-4272-9138-f99709370657
2010-05-06 17:35:13 +00:00
Thomas Martitz
c61e89c0ed Make creat() posix compliant API-wise. Shouldn't affect the core as it's wrapped via a static inline.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25843 a1c6a512-1295-4272-9138-f99709370657
2010-05-06 17:35:04 +00:00
Jens Arnold
181e0e0878 Switch to using statvfs for simulated fat_size(). This makes io.c build on opensolaris, and also removes special ifdefing for freebsd and OS X.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25256 a1c6a512-1295-4272-9138-f99709370657
2010-03-20 12:45:54 +00:00
Amaury Pouly
e9b3c90622 FS#10954: fix rename under simulator by Alex Bennee
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24443 a1c6a512-1295-4272-9138-f99709370657
2010-02-01 22:45:27 +00:00
Steve Bavin
b61f0c6884 FS#9964 take 2. Including the whole patch is a good idea.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20133 a1c6a512-1295-4272-9138-f99709370657
2009-02-27 21:25:17 +00:00
Steve Bavin
6eea66fbc1 FS#9964 - Fix simulator file i/o when the --root option is used.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20132 a1c6a512-1295-4272-9138-f99709370657
2009-02-27 21:15:52 +00:00
Björn Stenberg
ff498519d0 Red build fix.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19744 a1c6a512-1295-4272-9138-f99709370657
2009-01-10 21:38:56 +00:00
Björn Stenberg
ee46a3d88e Moved database builder into a separate directory, and gave it its' own Makefile. Now it compiles cleanly and builds a database if ran in root of music tree.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19448 a1c6a512-1295-4272-9138-f99709370657
2008-12-15 23:42:19 +00:00
Björn Stenberg
819378bf9d Renamed simulator disk directory from 'archos' to 'simdisk'.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19204 a1c6a512-1295-4272-9138-f99709370657
2008-11-24 20:32:57 +00:00
Daniel Stenberg
2acc0ac542 Updated our source code header to explicitly mention that we are GPL v2 or
later. We still need to hunt down snippets used that are not. 1324 modified
files...
http://www.rockbox.org/mail/archive/rockbox-dev-archive-2008-06/0060.shtml


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17847 a1c6a512-1295-4272-9138-f99709370657
2008-06-28 18:10:04 +00:00
Steve Bavin
ac313abe87 Best use C, not C++
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17021 a1c6a512-1295-4272-9138-f99709370657
2008-04-07 17:27:56 +00:00
Steve Bavin
799e9489ca Remove some more simulator debugging output.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17019 a1c6a512-1295-4272-9138-f99709370657
2008-04-07 17:19:53 +00:00
Michael Sevakis
6a05883239 Simulate the effects of sector caching a bit. Bypass I/O yield if a byte counter hasn't reached a certain threshold. Can be dialed-in by changing a #define.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15871 a1c6a512-1295-4272-9138-f99709370657
2007-12-03 15:33:12 +00:00
Michael Sevakis
a4d19b7e89 Simplify the uisimulator I/O routine and let the rockbox thread calling the functions be the background thread. Should speed things up too and lose none of the advantanges of background I/O.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15870 a1c6a512-1295-4272-9138-f99709370657
2007-12-03 14:01:12 +00:00
Steve Bavin
f87eb608a8 Code police; trailing spaces mainly.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15527 a1c6a512-1295-4272-9138-f99709370657
2007-11-08 12:11:34 +00:00
Steve Bavin
9e05cc537b Add --root option to allow overriding of simulator root menu.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15526 a1c6a512-1295-4272-9138-f99709370657
2007-11-08 10:15:44 +00:00
Nicolas Pennequin
c70671b652 Fix sims: sim_codec_load_ram() needed an update
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15411 a1c6a512-1295-4272-9138-f99709370657
2007-11-02 17:43:37 +00:00
Jonas Häggqvist
b24631c07f Fix crosscompiling the uisim with mingw32 by adding a definition of CLOSE
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15047 a1c6a512-1295-4272-9138-f99709370657
2007-10-09 17:51:02 +00:00
Nicolas Pennequin
ef9abe4385 Keep track of the number of opened files in the sim to enforce the same limit as on target.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15045 a1c6a512-1295-4272-9138-f99709370657
2007-10-09 15:15:00 +00:00
Jens Arnold
5128080328 FS #7752 by Catalin Patulea: Stop 'Rockbox Info' from crashing multivolume target simulators (Ondio, Sansa).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14684 a1c6a512-1295-4272-9138-f99709370657
2007-09-13 20:53:32 +00:00
Michael Sevakis
c4a7631eb9 UISIMULATOR: Do a graceful shutdown of all threads and avoid (mostly lockup) problems caused by not worrying about states. Have rockbox objects initialized only by rockbox threads save for the main 'gui' thread which is a needed exception.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14660 a1c6a512-1295-4272-9138-f99709370657
2007-09-10 03:49:12 +00:00
Michael Sevakis
0107dfc827 UISIMULATOR: Give the host OS some needed context switching hints (which _is_ supposed to work on Linux - but I can't tell on VMWare - and does on Windows). I guess I'll know for sure soon. Give sleep() even more genuine behavior. Add some button driver sync with the rockbox threads that should have been there for some time - this is basically interrupt-like processing as any thread not in the kernel pool should be considered. Make the screendump work again by posting the request. Perhaps help out shutting down for some users but not in the way I'd prefer - to think about.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14646 a1c6a512-1295-4272-9138-f99709370657
2007-09-09 01:59:07 +00:00
Michael Sevakis
f64ebb1c1f Sim I/O and threading that runs more like on target. Tweakable if any genuine slowness imitation is required for any one of them. One point of concern is the sim shutdown on an OS other than Linux just because terminating threads in a manner other than having the do it themselves is kind of dirty IMHO.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14639 a1c6a512-1295-4272-9138-f99709370657
2007-09-08 12:20:53 +00:00
Jens Arnold
49be3faf07 A bit more readable code. Also saves one buffer.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13222 a1c6a512-1295-4272-9138-f99709370657
2007-04-20 17:35:05 +00:00
Jens Arnold
2fd7c3c828 Make the simulator work with unicode filenames on windows. This includes both file operations and console (debug) output. Note that the console window _must_ be configured to use a truetype font for proper unicode display.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13211 a1c6a512-1295-4272-9138-f99709370657
2007-04-19 20:17:24 +00:00
Peter D'Hoye
6be615615d Fix sim crashes on long filenames. Patch by Sean Morrisey with some minor changes by me. Fixes FS #6009
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13138 a1c6a512-1295-4272-9138-f99709370657
2007-04-12 22:38:54 +00:00
Jens Arnold
d6cb716697 Declare struct sim_dirent the same way as rockbox core's struct dirent. Fixes file time reading for 64 bit sims.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13053 a1c6a512-1295-4272-9138-f99709370657
2007-04-07 00:14:16 +00:00
Peter D'Hoye
f0ed594aaa Fix red
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13052 a1c6a512-1295-4272-9138-f99709370657
2007-04-06 23:54:21 +00:00
Peter D'Hoye
832e0dfb16 Fix file date and time reading in the simulator (used by the properties plugin)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13051 a1c6a512-1295-4272-9138-f99709370657
2007-04-06 23:33:33 +00:00
Jens Arnold
bd5c0ad7bb Cast some more to keep both 32 bit and 64 bit simulator platforms happy.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12819 a1c6a512-1295-4272-9138-f99709370657
2007-03-17 10:50:58 +00:00
Jens Arnold
6b0fdae0f6 Removed unused 'mode' parameter from mkdir() for consistency with creat().
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12183 a1c6a512-1295-4272-9138-f99709370657
2007-02-03 10:28:55 +00:00
Jens Arnold
67eb154146 Removed 'mode' parameter from creat(). It wasn't pure posix anyway, it was ignored on target and mixed into 'oflags' in the simulator. * Simplified io.c a bit by defining a dummy O_BINARY for OSes which don't have that.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12179 a1c6a512-1295-4272-9138-f99709370657
2007-02-01 23:08:15 +00:00