Michael Sevakis
bfb281ff63
Messages queues must be guarded on both ends or else it's a race between detecting a message present and missing a wakeup on thread about to wait. Keeping IRQs from interacting with the scheduler would be preferable but this should do at the moment. Add more detailed panic info regarding blocking violations so we know who. Make panicf function well enough on Gigabeat and PortalPlayer targets. Move the core sleep instructions into a CPU-specific inline to keep thing organized.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13374 a1c6a512-1295-4272-9138-f99709370657
2007-05-12 05:20:04 +00:00
Michael Sevakis
bd6cb34f48
Hrmph. Forgot the other instance of cache hacking.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13146 a1c6a512-1295-4272-9138-f99709370657
2007-04-13 21:25:07 +00:00
Michael Sevakis
d95c39072a
Portal Player: Add invalidate_icache and flush_icache. Flush the cache on the core for newborn threads. In doing so, move more ARM stuff to the target tree and organize it to make a clean job of it. If anything isn't appropriate for some particular device give a hollar or even just fix it by some added #ifdefing. I was informed that the PP targets are register compatible so I'm going off that advice. The Sansa likes it though.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13144 a1c6a512-1295-4272-9138-f99709370657
2007-04-13 20:55:48 +00:00
Miika Pekkarinen
4954bdf6d3
Accidentally enabled core locking mechanism. Now disabled again because it still causes problems on some players.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12989 a1c6a512-1295-4272-9138-f99709370657
2007-04-01 11:47:58 +00:00
Miika Pekkarinen
28b061d1e3
remove_thread(NULL) contained a null pointer bug causing a crash.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12988 a1c6a512-1295-4272-9138-f99709370657
2007-04-01 11:33:33 +00:00
Miika Pekkarinen
02a4802d3e
A temporary fix to crashing on some dual core targets.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12941 a1c6a512-1295-4272-9138-f99709370657
2007-03-27 20:41:10 +00:00
Miika Pekkarinen
66258a30a4
Make scheduler functions thread safe core wise. A big step towards playback running on COP (not yet possible because more protection on file system level is necessary).
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12926 a1c6a512-1295-4272-9138-f99709370657
2007-03-26 16:55:17 +00:00
Michael Sevakis
165f62d0cd
Fix a hole in the scheduler where collisions between waking blocked threads in mutexes with interrupts waking blocked threads in message queues can occur. Queue posts will put the threads on a separate list that is then added to the running list with IRQs disabled on the next task switch or CPU wakeup. Basically no overhead for other operations. Seems a likely cause of my occasional observation of the backlight fade causing playback threads to stop running and a recently reported blocking violation upon USB plugging. Time will tell but banging the backlight on and off frequently hasn't hiccuped again for me on H120.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12915 a1c6a512-1295-4272-9138-f99709370657
2007-03-26 03:24:36 +00:00
Michael Sevakis
dee43ece20
Put an end to priority inversion in the ata driver. Gave up trying to have fully atomic dual use mutexes so just replaced the ata driver locking with spins. Maybe I'll have better luck later. Things should run smoothly with database updates and such happening in the background.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12688 a1c6a512-1295-4272-9138-f99709370657
2007-03-09 08:03:18 +00:00
Michael Sevakis
b425de71df
Fix problem with recording screen creep and bag a bigfoot. Voice clips aren't long enough now to untrigger the thread boost that was supposed to be applied to the codec thread. The voice thread was needlessly boosting the codec thread and leaving it boosted which explains the encoders' ability to flood the output buffer when everything else was stopped in its tracks. Check which thread is calling pcmbuf_under_watermark and only initiate the boost when it's the codec thread. Always return the codec thread to its usual priority in pcmbuf_play_stop.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12649 a1c6a512-1295-4272-9138-f99709370657
2007-03-06 20:32:13 +00:00
Daniel Ankers
82f9056988
Dual core support for PP502x players (iPod G4 and later, iriver h10, Sansa - iPod G3 will be coming soon.) This allows threads to be run on either core provided that all communications between the cores is done using uncached memory. There should be no significant change in battery life from doing this. Documentation (on the RockboxKernel wiki page) will follow shortly.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12601 a1c6a512-1295-4272-9138-f99709370657
2007-03-04 20:06:41 +00:00
Michael Sevakis
1915c10994
Turns out I don't have a magic DAP. :( I didn't get the problem because I RoLod it. Clean the useless macros from thread_init and leave it for spawned threads.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12488 a1c6a512-1295-4272-9138-f99709370657
2007-02-26 00:04:25 +00:00
Michael Sevakis
2c9cbc12e1
Add CPU-model-specific init to newborn threads. Add default %macsr for each thread created on coldfire (EMAC_FRACTIONAL | EMAC_SATURATE).
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12483 a1c6a512-1295-4272-9138-f99709370657
2007-02-25 21:43:10 +00:00
Marcoen Hirschberg
6d15996e6d
add missing variable declaration
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11862 a1c6a512-1295-4272-9138-f99709370657
2006-12-29 23:42:43 +00:00
Marcoen Hirschberg
6a6c2dcb17
fix idle mode for the gigabeat
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11860 a1c6a512-1295-4272-9138-f99709370657
2006-12-29 23:29:04 +00:00
Michael Sevakis
43c15921e4
Add queue_send synchronous message sending. Right now only for SWCODEC. Actual usage to be added to playback and recording shortly in upcoming commits.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11776 a1c6a512-1295-4272-9138-f99709370657
2006-12-16 18:35:12 +00:00
Brandon Low
58e7547e89
Fix my warnings with explicit blocking on platforms w/o cpu_boost()
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11511 a1c6a512-1295-4272-9138-f99709370657
2006-11-11 05:53:32 +00:00
Brandon Low
8a82892e52
Thread API enhancements.
...
1) block_thread -> block_thread + block_thread_w_tmo -- this call was always used in distinct ways so having one call with a conditional was ugly.
2) enhance Slasheri's scheduler controlled boost concept. now any thread may trigger a boost which will last until that thread next sleeps.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11509 a1c6a512-1295-4272-9138-f99709370657
2006-11-11 05:33:24 +00:00
Jens Arnold
780f79e7a4
Removed the Gmini 120 and Gmini SP code. These ports are dead, unfortunately.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11504 a1c6a512-1295-4272-9138-f99709370657
2006-11-10 20:26:01 +00:00
Michael Sevakis
0f5cb94aa4
Big Patch adds primarily: Samplerate and format selection to recording for SWCODEC. Supprort for samplerates changing in playback (just goes with the recording part inseparably). Samplerates to all encoders. Encoders can be configured individually on a menu specific to the encoder in the recording menu. File creation is delayed until flush time to reduce spinups when splitting. Misc: statusbar icons for numbers are individual digits to display any number. Audio buffer was rearranged to maximize memory available to recording and properly reinitialized when trashed. ColdFire PCM stuff moved to target tree to avoid a complicated mess when adding samplerate switching. Some needed API changes and to neaten up growing gap between hardware and software codecs.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11452 a1c6a512-1295-4272-9138-f99709370657
2006-11-06 18:07:30 +00:00
Miika Pekkarinen
7058752789
Removed ugly boosting solutions from playback code and let scheduler
...
handle unboosting instead.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11226 a1c6a512-1295-4272-9138-f99709370657
2006-10-15 11:57:52 +00:00
Magnus Holmgren
13f3c5b2cb
Fix profiling builds.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11034 a1c6a512-1295-4272-9138-f99709370657
2006-09-23 14:38:04 +00:00
Miika Pekkarinen
92ae9155a7
Don't remove the thread twice.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10960 a1c6a512-1295-4272-9138-f99709370657
2006-09-16 18:30:10 +00:00
Miika Pekkarinen
a85044bf9e
New scheduler, with priorities for swcodec platforms. Frequent task
...
switching should be more efficient and tasks are stored in linked
lists to eliminate unnecessary task switching to improve performance.
Audio should no longer skip on swcodec targets caused by too CPU
hungry UI thread or background threads.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10958 a1c6a512-1295-4272-9138-f99709370657
2006-09-16 16:18:11 +00:00
Miika Pekkarinen
3686228f9d
Cleanup threads.c by moving declarations inside structs.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10853 a1c6a512-1295-4272-9138-f99709370657
2006-09-02 07:56:52 +00:00
Daniel Ankers
67ddef9aac
Fix profile builds
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10734 a1c6a512-1295-4272-9138-f99709370657
2006-08-24 13:10:20 +00:00
Daniel Ankers
0aec12f3fd
Threading changes in preparation for multiple core support
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10681 a1c6a512-1295-4272-9138-f99709370657
2006-08-21 17:35:35 +00:00
Marcoen Hirschberg
dd754886f5
update the gigabeat code and move to target_tree
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10535 a1c6a512-1295-4272-9138-f99709370657
2006-08-12 08:01:54 +00:00
Thom Johansen
0a952512c3
Sleep PP5020 CPU on idle.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8632 a1c6a512-1295-4272-9138-f99709370657
2006-02-08 21:30:35 +00:00
Thom Johansen
023936d5e4
ARM: r12 is scratch, so don't save it.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8505 a1c6a512-1295-4272-9138-f99709370657
2006-01-31 14:48:10 +00:00
Brandon Low
05dccc3551
Profiling support, tools and documentation.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8375 a1c6a512-1295-4272-9138-f99709370657
2006-01-18 20:54:13 +00:00
Dave Chapman
d83e929f3f
Work-in-progress iriver iFP-7xx port by Tomasz Malesinski
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8342 a1c6a512-1295-4272-9138-f99709370657
2006-01-12 00:35:50 +00:00
Thom Johansen
544b03cf9a
Add interrupt handler for iPod. Add timer tick support. Remove temporary thread sleep solution. Remove temporary iPod current_tick solution.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8224 a1c6a512-1295-4272-9138-f99709370657
2005-12-12 13:53:22 +00:00
Thom Johansen
27cd6ca152
Make threading code for iPod compile on all ARM CPUs, comment out sleep loop until we have iPod interrupts.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8214 a1c6a512-1295-4272-9138-f99709370657
2005-12-10 19:51:56 +00:00
Thom Johansen
391f6af7ab
Shave off an instruction by use of conditionals.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7896 a1c6a512-1295-4272-9138-f99709370657
2005-11-15 16:56:20 +00:00
Thom Johansen
52e91de5d3
First attempt at iPod threading.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7852 a1c6a512-1295-4272-9138-f99709370657
2005-11-13 23:47:38 +00:00
Dave Chapman
d31a32c501
iPod: Code cleanup - the bootloader now compiles with zero warnings
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7812 a1c6a512-1295-4272-9138-f99709370657
2005-11-11 17:51:35 +00:00
Dave Chapman
77372d1218
Initial commit of work-in-progress iPod port
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7781 a1c6a512-1295-4272-9138-f99709370657
2005-11-07 23:07:19 +00:00
Jens Arnold
abd9f83e92
Two new sections for IRAM usage: .irodata (selectable with the ICONST_ATTR attribute macro), allowing to put 'const' data into IRAM without causing a section type conflict, and .ibss (selectable with the IBSS_ATTR attribute macro) for uninitialised data. * Rockbox core: Adjusted the linker scripts and init code to not include the .ibss section in the binary, it is cleared instead. Saves ~500 bytes on archos and ~30KB on iriver. Codecs and plugins don't handle .ibss in a special way yet. * The init code properly handles empty sections now (except .stack, which should never be empty). * Unified the init code for SH1 and coldfire a bit.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7644 a1c6a512-1295-4272-9138-f99709370657
2005-10-19 19:35:24 +00:00
Jens Arnold
904f7fd970
Coldfire: Made the MACSR register part of the thread context to allow easier handling in the codecs.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7445 a1c6a512-1295-4272-9138-f99709370657
2005-09-01 20:06:38 +00:00
Jens Arnold
6d54d6c088
SH1: Tiny optimisation of the thread scheduler.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7406 a1c6a512-1295-4272-9138-f99709370657
2005-08-26 22:52:31 +00:00
Christian Gmeiner
c6ff1f5eb5
Added CPU_COLDFIRE define - one step closer to iAudio-port
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7186 a1c6a512-1295-4272-9138-f99709370657
2005-07-18 12:40:29 +00:00
Linus Nielsen Feltzing
a19acbdadd
Removed picky warnings
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7116 a1c6a512-1295-4272-9138-f99709370657
2005-07-12 10:05:13 +00:00
Jens Arnold
a4aa508bd0
Thread scheduler reworked to be less dependent on compiler behaviour. Stack overflow check is now possible on coldfire, enabled it. Unified code as much as possible.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6665 a1c6a512-1295-4272-9138-f99709370657
2005-06-10 23:05:15 +00:00
Jens Arnold
8779802aaf
Make sure the context functions are always inlined, independent of optimisation level.
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6512 a1c6a512-1295-4272-9138-f99709370657
2005-05-23 19:48:55 +00:00
Jean-Philippe Bernardy
8ec05779e3
Gmini work:
...
* Better USB
* Better comments
* Better coding style
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6022 a1c6a512-1295-4272-9138-f99709370657
2005-02-19 17:49:58 +00:00
Jean-Philippe Bernardy
9dcb575b74
Feature conditional compilation policy
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5940 a1c6a512-1295-4272-9138-f99709370657
2005-02-13 18:55:14 +00:00
Jean-Philippe Bernardy
a1eb3d93f6
Feature conditional compilation policy
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5939 a1c6a512-1295-4272-9138-f99709370657
2005-02-13 17:07:40 +00:00
Jean-Philippe Bernardy
7e8914daf7
more int -> long
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5656 a1c6a512-1295-4272-9138-f99709370657
2005-01-24 14:41:06 +00:00
Jean-Philippe Bernardy
1265d03141
Oops, deadbeef is unsigned
...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5653 a1c6a512-1295-4272-9138-f99709370657
2005-01-24 13:32:52 +00:00