summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/threadqprocesstimeout.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* score: New thread queue implementationSebastian Huber2015-05-191-80/+0
| | | | | | | | | Use thread wait flags for synchronization. The enqueue operation is now part of the initial critical section. This is the key change and enables fine grained locking on SMP for objects using a thread queue like semaphores and message queues. Update #2273.
* score: _Thread_queue_Extract()Sebastian Huber2015-05-191-1/+0
| | | | | Remove thread queue parameter from _Thread_queue_Extract() since the current thread queue is stored in the thread control block.
* 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.