summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/threadqprocesstimeout.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* score: PR2172: _Thread_queue_Extract()Sebastian Huber2014-04-011-6/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add _Thread_queue_Extract_with_return_code(). On SMP this sequence in _Thread_queue_Process_timeout() was broken: [...] /* * After we enable interrupts here, a lot may happen in the * meantime, e.g. nested interrupts may release the resource that * times out here. So we enter _Thread_queue_Extract() * speculatively. Inside this function we check the actual status * under ISR disable protection. This ensures that exactly one * executing context performs the extract operation (other parties * may call _Thread_queue_Dequeue()). If this context won, then * we have a timeout. * * We can use the_thread_queue pointer here even if * the_thread->Wait.queue is already set to NULL since the extract * operation will only use the thread queue discipline to select * the right extract operation. The timeout status is set during * thread queue initialization. */ we_did_it = _Thread_queue_Extract( the_thread_queue, the_thread ); if ( we_did_it ) { the_thread->Wait.return_code = the_thread_queue->timeout_status; } [...] In case _Thread_queue_Extract() successfully extracted a thread, then this thread may start execution on a remote processor immediately and read the the_thread->Wait.return_code before we update it here with the timeout status. Thus it observes a successful operation even if it timed out.
* Change all references of rtems.com to rtems.org.Chris Johns2014-03-211-1/+1
|
* score: PR2140: Fix _Thread_queue_Process_timeout()Sebastian Huber2013-08-261-8/+37
| | | | | | The _Thread_queue_Process_timeout() operation had several race conditions in the event of nested interrupts. Protect the critical sections via disabled interrupts.
* score: Create threadq implementation headerSebastian Huber2013-07-261-1/+1
| | | | | | | | Move implementation specific parts of tqdata.h, threadq.h and threadq.inl into new header file threadqimpl.h. The threadq.h contains now only the application visible API. Delete tqdata.h.
* score: Create thread implementation headerSebastian Huber2013-07-261-7/+1
| | | | | | | | Move implementation specific parts of thread.h and thread.inl into new header file threadimpl.h. The thread.h contains now only the application visible API. Remove superfluous header file includes from various files.
* Score misc: Clean up Doxygen #4 (GCI 2012)Alexandre Devienne2012-11-281-3/+7
| | | | | | | This patch is a task from GCI 2012 which improves the Doxygen comments in the RTEMS source. http://www.google-melange.com/gci/task/view/google/gci2012/7985215
* Remove All CVS Id Strings Possible Using a ScriptJoel Sherrill2012-05-111-2/+0
| | | | | | | | | | | | Script does what is expected and tries to do it as smartly as possible. + remove occurrences of two blank comment lines next to each other after Id string line removed. + remove entire comment blocks which only exited to contain CVS Ids + If the processing left a blank line at the top of a file, it was removed.
* 2008-01-30 Joel Sherrill <joel.sherrill@OARcorp.com>Joel Sherrill2008-01-301-0/+57
* score/Makefile.am, score/include/rtems/score/threadq.h, score/inline/rtems/score/threadq.inl: _Thread_queue_Process_timeout was really too complex to be inlined. * score/src/threadqprocesstimeout.c: New file.