| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Close #2286.
|
| |
|
|
|
|
| |
closes 2285.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
See also:
https://nahratzah.wordpress.com/2012/10/12/a-trivial-fair-spinlock/
http://concurrencyfreaks.blogspot.de/2014/05/relaxed-atomics-optimizations-for.html
|
| |
|
|
|
|
| |
Update #2273.
|
|
|
|
| |
Update #2273.
|
|
|
|
|
|
|
|
|
| |
This enables per-object SMP locks on SMP configurations and is the first
step to support fine-grained locking. On uni-processor configuration
there will be no overhead. The _Objects_Acquire() is intended to
replace _Objects_Get_isr_disable().
Update #2273.
|
|
|
|
| |
Update #2273.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
Deliver the POSIX signals after the thread state was updated to avoid
race-conditions on SMP configurations.
Update #2273.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
Update #2273.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Empty structures are implementation-defined in C. GCC gives them a size
of zero. In C++ empty structures have a non-zero size.
Add ISR_LOCK_DEFINE() to define ISR locks for structures used by C and
C++.
Update #2273.
|
|
|
|
| |
Update #2273.
|
| |
|
|
|
|
| |
Update #2273.
|
| |
|
|
|
|
|
|
|
|
| |
Make <rtems/score/atomic.h> available for all RTEMS configurations. Use
inline functions instead of macros. Use ISR disable/enable on
uni-processor configurations to ensure atomicity.
Update #2273.
|
|
|
|
|
|
|
|
|
|
| |
After a context switch we end up in the second part of
_Thread_Dispatch() or in _Thread_Handler() in case of new threads. Use
the same function _Thread_Restore_fp() to restore the floating-point
context. It makes no sense to do this in _Thread_Start_multitasking().
This fixes also a race condition in SMP configurations.
Update #2268.
|
|
|
|
|
| |
This value depends on the _Heap_Initialize() call sequence and carries
no useful information.
|
| |
|
|
|
|
|
|
|
|
| |
The previous timeout handling was flawed. In case a waiting thread
helped out the owner could use the scheduler node indefinitely long.
Update the resource tree in _MRSP_Timeout() to avoid this issue.
Bug reported by Luca Bonato.
|
|
|
|
|
| |
Add lifetime bytes allocated and freed since they were present in the
malloc statistics. Add number of failed allocations.
|
|
|
|
| |
Print out heap statistics via the MALLOC and WKSPACE shell commands.
|
|
|
|
|
|
|
| |
Ensure that scheduler nodes in the SCHEDULER_HELP_ACTIVE_OWNER or
SCHEDULER_HELP_ACTIVE_RIVAL helping state are always
SCHEDULER_SMP_NODE_READY or SCHEDULER_SMP_NODE_SCHEDULED to ensure the
MrsP protocol properties.
|
| |
|
|
|
|
|
| |
CodeSonar flagged this as a possible NULL deference. This should never
occur but adding the _Assert() ensures we are guarding against that.
|
|
|
|
|
| |
CodeSonar flagged this as a potential NULL deference. That should never
occur but adding the _Assert() ensures we are checking that.
|
|
|
|
|
| |
Delete this variable since it is no longer necessary due to the thread
priority queue implementation change to use RB trees.
|
|
|
|
|
|
|
|
|
|
|
|
| |
New test case for smptests/smpmrsp01.
Fix _Scheduler_Block_node() in case the node is in the
SCHEDULER_HELP_ACTIVE_RIVAL helping state. For example a
rtems_task_suspend() on a task waiting for a MrsP semaphore.
Fix _Scheduler_Unblock_node() in case the node is in the
SCHEDULER_SMP_NODE_READY state. For example a rtems_task_resume() on a
task owning or waiting for a MrsP semaphore.
|
|
|
|
| |
close 1423
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Selection of 16-bit object Ids is a port specific decision. Somewhere
along the way, the file providing this information was dropped from
the include file set. This resulted in the code being compiled with
a mix of 16 and 32 bit ID assumptions for those targets with 16-bit Ids.
|
|
|
|
|
|
| |
Ensure that the global construction is performed in the context of the
first initialization thread. On SMP this was not guaranteed in the
previous implementation.
|
|
|
|
| |
This field is no longer used.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This implementation is able to catch cast to type
which differs not only in qualifiers. The error
diagnostic message when used in function is self
descriptive. Macro is compatible with used in initializers
but there message about not constant initial value
signals types incompatibility.
The actual implementation does not distinguish between
volatile and const removal.
|
| |
|
| |
|
|
|
|
| |
Update documentation.
|
|
|
|
|
|
|
|
|
| |
Adds functions that allows the user to specify which cores that should
perform the cache operation. SMP messages are sent to all the specified
cores and the caller waits until all cores have acknowledged that they
have flushed their cache. If CPU_CACHE_NO_INSTRUCTION_CACHE_SNOOPING is
defined the instruction cache invalidation function will perform the
operation on all cores using the previous method.
|
|
|
|
| |
Change message type to unsigned long to match other SMP message functions.
|