Commit message (Collapse) | Author | Age | |
---|---|---|---|
* | Fix synchronous task system release support | Bjoern Brandenburg | 2013-06-08 |
| | | | | | | | | | | | | | | | | | ...and also finally fix the requeue() race (hopefully). Commit 4ffefb822b9d65d4efbedb60e3c9a0e76895cc5b broke the synchronous task system release code. The problem is that release_at() clears the tsk_rt(t)->completed flag. The patch thus only made the race window smaller, but didn't close it entirely. Further, it broke the synchronous task set release, which relies on schedule() being called with completed == 1. This patch fixes both problems by introducing a new flag dont_requeue, which indicates unambiguously that a task should not be requeued by other processors. This flag is cleared only when the job completion is being processed, which always happens while holding the appropriate scheduler locks, which closes the race window. | ||
* | Use do_div() for integer division in litmus/sync.c | Bjoern Brandenburg | 2013-05-04 |
| | | | | Breaks without do_div() on ARM. | ||
* | Changed completion flag use to remove race condition in Cedf,Gedf. | Jonathan Herman | 2013-04-12 |
| | |||
* | Avoid race in do_release_ts() | Bjoern Brandenburg | 2013-01-10 |
| | | | | | | | The list is concurrently being modified by the waking processes. This requires the use of the list_for_each_safe() iterator. Reported by Glenn Elliott. | ||
* | Re-implement synchronous task set release support | Bjoern Brandenburg | 2012-10-18 |
| | | | | | | | | | The old implementation had the problem that the first job release of all tasks was handled on the *same* CPU (that triggered the synchronous task set release). This could result in significant latency spikes. The new implementation uses a completion per task. Futher, each task programs its own release, which ensures that it will be on the proper processor. | ||
* | [ported from 2008.3] Add synchronous task release API | Andrea Bastoni | 2010-05-29 |