summaryrefslogtreecommitdiffstats
path: root/testsuites/tmtests (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Rename CONFIGURE_SMP_MAXIMUM_PROCESSORSSebastian Huber2017-02-142-2/+2
| | | | | | | Rename CONFIGURE_SMP_MAXIMUM_PROCESSORS to CONFIGURE_MAXIMUM_PROCESSORS since the SMP part is superfluous. Update #2894.
* Remove CONFIGURE_SMP_APPLICATIONSebastian Huber2017-02-022-4/+0
| | | | | | Enable the SMP support if CONFIGURE_SMP_MAXIMUM_PROCESSORS > 1. Update #2893.
* powerpc: Add _CPU_Get_current_per_CPU_control()Sebastian Huber2016-11-101-2100/+2100
| | | | | | | | Add _CPU_Get_current_per_CPU_control() on SMP configurations. Use SPRG0 for the current per-CPU control. This reduces the code size by three instructions and is slightly faster. Update #2805.
* score: Inline some SMP lock operations by defaultSebastian Huber2016-11-091-2100/+2100
| | | | | | | | | The SMP ticket lock release turned out to be suitable for inlining, e.g. a hand full of instructions, no branches. The changes in the screen files do not reflect the changes due to this commit. However, they are now up to date. Obtained on a T4240 running at 1.5GHz using GCC 7.0.0 20161108..
* score: Prevent assignment to _Thread_ExecutingSebastian Huber2016-11-072-15/+12
|
* score: Optimize self-contained mutexesSebastian Huber2016-11-041-2100/+2100
|
* rtems: Fix binary semaphore resource countSebastian Huber2016-11-031-2/+2
| | | | | | Binary semaphores (not simple binary semaphores) maintain the resource count since 8797c76addf22a2f0ffc3717ff977695e35b9b0b. Do this also for initially locked binary semaphores.
* tmtests/tmfine01: Update screen fileSebastian Huber2016-11-032-1800/+2194
| | | | Add plot script.
* score: Introduce Thread_Scheduler_control::homeSebastian Huber2016-11-022-6/+6
| | | | | | | | Replace Thread_Scheduler_control::control and Thread_Scheduler_control::own_control with new Thread_Scheduler_control::home. Update #2556.
* tmfine01: Add self-contained mutex test caseSebastian Huber2016-10-101-1/+46
| | | | | This demonstrates the effect of false cache line sharing in case of Classic mutexes.
* score: Introduce Thread_queue_Lock_contextSebastian Huber2016-09-081-1/+1
| | | | | | Introduce Thread_queue_Lock_context to contain the context necessary for thread queue lock and thread wait lock acquire/release operations to reduce the Thread_Control size.
* score: Add _Thread_queue_Context_set_MP_callout()Sebastian Huber2016-05-301-1/+1
| | | | | | Add _Thread_queue_Context_set_MP_callout() to simplify _Thread_queue_Context_initialize(). This makes it possible to more easily add additional fields to Thread_queue_Context.
* score: Move thread queue MP callout to contextSebastian Huber2016-05-251-5/+6
| | | | | | | | Drop the multiprocessing (MP) dependent callout parameter from the thread queue extract, dequeue, flush and unblock methods. Merge this parameter with the lock context into new structure Thread_queue_Context. This helps to gets rid of the conditionally compiled method call helpers.
* Replace *_Get_interrupt_disable() with *_Get()Sebastian Huber2016-05-201-9/+6
| | | | | Uniformly use *_Get() to get an object by identifier with a lock context.
* rtems: _Semaphore_Get_interrupt_disable()Sebastian Huber2016-05-201-3/+0
| | | | | | Use _Objects_Get_local() for _Semaphore_Get_interrupt_disable() to get rid of the location parameter. Move remote object handling to semaphore MPCI support.
* score: Rename _ISR_Flash() into _ISR_Local_flash()Sebastian Huber2016-05-201-1/+1
| | | | | | This is a preparation to remove the Giant lock. Update #2555.
* score: Rename _ISR_Disable() and _ISR_Enable()Sebastian Huber2016-05-201-2/+2
| | | | | | | | | Rename _ISR_Disable() into _ISR_Local_disable(). Rename _ISR_Enable() into _ISR_Local_enable(). Remove _Debug_Is_owner_of_giant(). This is a preparation to remove the Giant lock. Update #2555.
* score: Rename _ISR_Disable_without_giant()Sebastian Huber2016-05-202-8/+8
| | | | | | | | | Rename _ISR_Disable_without_giant() into _ISR_Local_disable(). Rename _ISR_Enable_without_giant() into _ISR_Local_enable(). This is a preparation to remove the Giant lock. Update #2555.
* testsuites: Avoid Giant lockSebastian Huber2016-05-202-85/+17
| | | | | | | | | Replace _Thread_Disable_dispatch() with _Thread_Dispatch_disable(). Replace _Thread_Enable_dispatch() with _Thread_Dispatch_enable(). This is a preparation to remove the Giant lock. Update #2555.
* testsuites: Replace _Thread_Get()Sebastian Huber2016-05-201-11/+14
| | | | | | | Replace _Thread_Get() with _Thread_Get_interrupt_disable() to avoid the Giant lock. Update #2555.
* score: Avoid Giant lock for _Thread_Start()Sebastian Huber2016-05-201-3/+3
| | | | Update #2555.
* score: Use thread state lock for current stateSebastian Huber2016-05-121-5/+13
| | | | | | | In addition protect scheduler of thread by thread state lock. Enables use of scheduler per-instance locks. Update #2555.
* rtems: Avoid Giant lock for semaphoresSebastian Huber2016-05-021-3/+11
| | | | Update #2555.
* Obsolete rtems_clock_get() directive.Joel Sherrill2016-04-142-6/+5
| | | | | | | This service was marked as deprecated long prior to the 4.11 release series and is now being removed. closes #2676.
* score: Replace watchdog handler implementationSebastian Huber2016-03-041-45/+45
| | | | | | | | | Use a red-black tree instead of delta chains. Close #2344. Update #2554. Update #2555. Close #2606.
* tmtests/tmtimer01: New testSebastian Huber2016-03-027-0/+408
| | | | | | | Test run performed on T4240 running at 1667MHz in uni-processor configuration. Update #2554.
* api: Remove deprecated NotepadsAun-Ali Zaidi2015-12-247-94/+1
| | | | | | | | | | | | | | | | | | | | | | | Notepads where a feature of RTEMS' tasks that simply functioned in the same way as POSIX keys or threaded local storage (TLS). They were introduced well before per task variables, which are also deprecated, and were barely used in favor of their POSIX alternatives. In addition to their scarce usage, Notepads took up unnecessary memory. For each task: - 16 32-bit integers were allocated. - A total of 64 bytes per task per thread. This is especially critical in low memory and safety-critical applications. They are also defined as uint32_t, and therefore are not guaranteed to hold a pointer. Lastly, they are not portable solutions for SMP and uniprocessor systems, like POSIX keys and TLS. updates #2493.
* basdefs.h: Add and use RTEMS_UNUSEDSebastian Huber2015-10-261-1/+1
|
* Delete CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEMSebastian Huber2015-10-151-2/+0
| | | | This define accidentally re-appeared.
* rtems: Add rtems_interrupt_local_disable|enable()Sebastian Huber2015-06-221-2/+7
| | | | | | | | Add rtems_interrupt_local_disable|enable() as suggested by Pavel Pisa to emphasize that interrupts are only disabled on the current processor. Do not define the rtems_interrupt_disable|enable|flash() macros and functions on SMP configurations since they don't ensure system wide mutual exclusion.
* tmtests/tm27: Use scheduler lockSebastian Huber2015-06-191-10/+5
|
* tmtests/tm26: Fix context switch to FP taskSebastian Huber2015-05-291-3/+0
| | | | | | | It is wrong to restore the floating point context here. The _Context_Switch() ends up in _Thread_Handler() which will call _Thread_Restore_fp(). In _Thread_Do_dispatch() the FP restore is after the context switch.
* Revert "tmtests/tm26: Avoid NULL pointer access"Sebastian Huber2015-05-291-0/+3
| | | | | | | There is no NULL pointer access. Please note that _Thread_Get_executing() != executing variable in Low_task(). This reverts commit 5611839a7e2e371dd1f327c336c785095f634e55.
* tmtests/tm26: Avoid NULL pointer accessSebastian Huber2015-05-291-3/+0
|
* rtems: Atomically suspend/resume tasksSebastian Huber2015-04-081-1/+1
|
* tests misc: Disable deprecated method usage warning when intentionalJoel Sherrill2015-03-171-25/+37
| | | | | These tests intentionally use the deprecated method. Eventually this code in the sections can be deleted.
* testsupport: Add worker setup handlerSebastian Huber2015-03-171-1/+1
| | | | Add rtems_test_parallel_get_task_id().
* tmtests/tmfine01: New testSebastian Huber2015-03-166-0/+2612
|
* cpukit: deprecate notepadsGedare Bloom2015-03-101-0/+2
| | | | | | | | | | | | | | | Deprecate Classic API Notepads. Mark task_set/get_note() with the deprecated attribute, and also mark the notepads field. Replace disable with enable option for notepads in confdefs.h, and make notepads disabled by default. The previous option CONFIGURE_DISABLE_CLASSIC_API_NOTEPADS is now unused and will emit a compile-time warning. A new option CONFIGURE_ENABLE_CLASSIC_API_NOTEPADS is available to turn on notepads, but it also will emit a compile-time warning to indicate that notepads are deprecated. Closes #2265
* score: Add and use _Thread_Do_dispatch()Sebastian Huber2015-03-051-0/+4
| | | | | | | | | | | | The _Thread_Dispatch() function is quite complex and the time to set up and tear down the stack frame is significant. Split this function into two parts. The complex part is now in _Thread_Do_dispatch(). Call _Thread_Do_dispatch() in _Thread_Enable_dispatch() only if necessary. This increases the average case performance. Simplify _Thread_Handler() for SMP configurations. Update #2273.
* score: Update _Thread_Heir only if necessarySebastian Huber2015-03-051-0/+3
| | | | | | | | | | | | | | | | | | | | Previously, the _Thread_Heir was updated unconditionally in case a new heir was determined. The _Thread_Dispatch_necessary was only updated in case the executing thread was preemptible or an internal thread was unblocked. Change this to update the _Thread_Heir and _Thread_Dispatch_necessary only in case the currently selected heir thread is preemptible or a dispatch is forced. Move the schedule decision into the change priority operation and use the schedule operation only in rtems_task_mode() in case preemption is enabled or an ASR dispatch is necessary. This is a behaviour change. Previously, the RTEMS_NO_PREEMPT also prevented signal delivery in certain cases (not always). Now, signal delivery is no longer influenced by RTEMS_NO_PREEMPT. Since the currently selected heir thread is used to determine if a new heir is chosen, non-preemptible heir threads currently not executing now prevent a new heir. This may have an application impact, see change test tm04. Document this change in sp04. Update #2273.
* tests: Fix warningsSebastian Huber2015-03-051-1/+1
|
* Update bug report URLSebastian Huber2014-12-051-1/+1
|
* tmtests/tmcontext01: Improve cache dirty functionSebastian Huber2014-09-111-14/+24
| | | | Increment by cache line size to allow more cycles per second.
* tmtests/tmcontext01: Improve cache dirty functionSebastian Huber2014-09-081-4/+7
|
* tmtests/tmcontext01: Plot a legendSebastian Huber2014-09-051-6/+20
|
* Enhance Semaphore Blocking and Readying Time Test CasesJoel Sherrill2014-07-1421-171/+477
| | | | | | | | | | | | | | | | tm02 and tm03 were modified to be reused for multiple configurations of RTEMS Classic API Semaphores. This added tm31-36. The messages for tm02 and tm03 were modified to indicate the semaphore attributes. tm31 - tm36 were added. This resulted in the following cases: tm02 - rtems_semaphore_obtain: Counting/FIFO not available caller blocks tm03 - rtems_semaphore_release: Counting/FIFO task readied preempts caller tm31 - rtems_semaphore_obtain: Counting/priority not available caller blocks tm32 - rtems_semaphore_release: Counting/priority task readied preempts caller tm33 - rtems_semaphore_obtain: Binary/FIFO not available caller blocks tm34 - rtems_semaphore_release: Binary/FIFO task readied preempts caller tm35 - rtems_semaphore_obtain: Binary/priority not available caller blocks tm36 - rtems_semaphore_release: Binary/priority task readied preempts caller
* score: Implement forced thread migrationSebastian Huber2014-05-071-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current implementation of task migration in RTEMS has some implications with respect to the interrupt latency. It is crucial to preserve the system invariant that a task can execute on at most one processor in the system at a time. This is accomplished with a boolean indicator in the task context. The processor architecture specific low-level task context switch code will mark that a task context is no longer executing and waits that the heir context stopped execution before it restores the heir context and resumes execution of the heir task. So there is one point in time in which a processor is without a task. This is essential to avoid cyclic dependencies in case multiple tasks migrate at once. Otherwise some supervising entity is necessary to prevent life-locks. Such a global supervisor would lead to scalability problems so this approach is not used. Currently the thread dispatch is performed with interrupts disabled. So in case the heir task is currently executing on another processor then this prolongs the time of disabled interrupts since one processor has to wait for another processor to make progress. It is difficult to avoid this issue with the interrupt latency since interrupts normally store the context of the interrupted task on its stack. In case a task is marked as not executing we must not use its task stack to store such an interrupt context. We cannot use the heir stack before it stopped execution on another processor. So if we enable interrupts during this transition we have to provide an alternative task independent stack for this time frame. This issue needs further investigation.
* testsuite: Add a per BSP test check for tests not to build.Chris Johns2014-05-051-3/+3
| | | | | | | | Provide a file per BSP to list tests that do not build for a BSP. This change removes the BSP_SMALL_MEMORY hack from the code. That hack was a mistake. Provide configuration files for each BSP with tests that cannot build.
* score: Static scheduler configurationSebastian Huber2014-04-152-22/+29
| | | | | | Do not allocate the scheduler control structures from the workspace. This is a preparation step for configuration of clustered/partitioned schedulers on SMP.