summaryrefslogtreecommitdiff
path: root/firmware/kernel/include/thread.h (follow)
Commit message (Collapse)AuthorAge
* Fix some stuff for no priority andMichael Sevakis2014-08-06
| | | | | | | | | | thread_queue_wake() doesn't need the 2nd parameter. The original purpose for it never came to be. Non priority version mrsw_writer_wakeup_readers was left improperly finished. Get that back into line. Change-Id: Ic613a2479f3cc14dc7c761517670eb15178da9f5
* Add multi-reader, single-writer locks to kernel.Michael Sevakis2014-08-06
| | | | | | | | | | | | | | | | | | | | | | | | Any number of readers may be in the critical section at a time and writers are mutually exclusive to all other threads. They are a better choice when data is rarely modified but often read and multiple threads can safely access it for reading. Priority inheritance is fully implemented along with other changes to the kernel to fully support it on multiowner objects. This also cleans up priority code in the kernel and updates some associated structures in existing objects to the cleaner form. Currently doesn't add the mrsw_lock.[ch] files since they're not yet needed by anything but the supporting improvements are still useful. This includes a typed bitarray API (bitarray.h) which is pretty basic for now. Change-Id: Idbe43dcd9170358e06d48d00f1c69728ff45b0e3 Reviewed-on: http://gerrit.rockbox.org/801 Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Tested: Michael Sevakis <jethead71@rockbox.org>
* Make errno a thread-local variable.Michael Sevakis2014-05-09
| | | | | | | | | | | | | | | | errno is supposed to be thread local and we do that here in a rather makeshift way by implementing a function that returns a pointer to the __errno variable in the thread block. If more serious TLS is required, perhaps it would be worthwhile implementing it using the linker and the "__thread" storage attribute. That's a bit overkill just for this. I'm also not liking what I saw the compiler producing. Change-Id: I03bc0bd6a89f6e3d6bae7653284ee01054614f9a Reviewed-on: http://gerrit.rockbox.org/803 Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Tested: Michael Sevakis <jethead71@rockbox.org>
* kernel: Break out kernel primitives into separate files and move to separate ↵Thomas Martitz2014-03-03
dir. No code changed, just shuffling stuff around. This should make it easier to build only select parts kernel and use different implementations. Change-Id: Ie1f00f93008833ce38419d760afd70062c5e22b5