Age | Commit message (Collapse) | Author |
|
|
|
|
|
Add this application configuration option. This configuration option can be
used to reserve space for the dynamic linking of modules with thread-local
storage objects.
Add RTEMS_TASK_STORAGE_ALIGNMENT to define the minium alignment of a
thread-local storage size.
Update #4074.
|
|
Update #3959.
Update #4074.
|
|
Update #3959.
Update #4074.
|
|
This avoids a dependency to the stack free function in the thread
destruction.
Update #3959.
|
|
Do the stack allocator initialization and sanity check only if a
user-provided stack allocator was configured. This avoids a dependency
of _Thread_Handler_initialization() on the stack allocator.
Update #3959.
|
|
Hide implementation details.
Update #3959.
|
|
Update #3959.
|
|
Simplify object name to identifier directives. Using
_RTEMS_Name_to_id() to implement the directives enables a tail call
optimization.
Change license to BSD-2-Clause according to file history.
Update #3053.
|
|
|
|
This addresses compiler warnings like this:
warning: array subscript 0 is outside the bounds of an interior
zero-length array 'abc[0]' [-Wzero-length-bounds]
|
|
Update #4032.
|
|
|
|
This type was deprecated in RTEMS 5.1.
Close #3991.
|
|
Close #3586.
|
|
Close #3584.
|
|
This type was deprecated in RTEMS 5.1.
Close #3988.
|
|
Close #3978.
|
|
Update #3949.
|
|
Delete unused RTEMS_DECLARE_GLOBAL_SYMBOL().
Update #3799.
|
|
Update #3799.
|
|
|
|
On most architectures, the size of the thread-local storage TCB must be
8 bytes. Fix the definition for 64-bit targets.
|
|
Update #3904.
|
|
In uniprocessor and SMP configurations, the context switch extensions
were called during _Thread_Do_dispatch():
void _Thread_Do_dispatch( Per_CPU_Control *cpu_self, ISR_Level level )
{
Thread_Control *executing;
executing = cpu_self->executing;
...
do {
Thread_Control *heir;
heir = _Thread_Get_heir_and_make_it_executing( cpu_self );
...
_User_extensions_Thread_switch( executing, heir );
...
_Context_Switch( &executing->Registers, &heir->Registers );
...
} while ( cpu_self->dispatch_necessary );
...
}
In uniprocessor configurations, this is fine and the context switch
extensions are called for all thread switches except the very first
thread switch to the initialization thread. However, in SMP
configurations, the context switch may be invalidated and updated in the
low-level _Context_Switch() routine. See:
https://docs.rtems.org/branches/master/c-user/symmetric_multiprocessing_services.html#thread-dispatch-details
In case such an update happens, a thread will execute on the processor
which was not seen in the previous call of the context switch
extensions. This can confuse for example event record consumers which
use events generated by a context switch extension.
Fixing this is not straight forward. The context switch extensions call
must move after the low-level context switch. The problem here is that
we may end up in _Thread_Handler(). Adding the context switch
extensions call to _Thread_Handler() covers now also the thread switch
to the initialization thread. We also have to save the last executing
thread (ancestor) of the processor. Registers or the stack cannot be
used for this purpose. We have to add it to the per-processor
information. Existing extensions may be affected, since now context
switch extensions use the stack of the heir thread. The stack checker
is affected by this.
Calling the thread switch extensions in the low-level context switch is
difficult since at this point an intermediate stack is used which is
only large enough to enable servicing of interrupts.
Update #3885.
|
|
The CONFIGURE_DISABLE_SMP_CONFIGURATION configuration option and
rtems_configuration_is_smp_enabled() were added during the SMP support
development cycle as a workaround to fix some testsuite failures in SMP
configurations. All use cases were replaced with tests for specific
conditions. The configuration option and test macro were undocumented.
Close #3876.
|
|
If the non-preempt mode for threads is supported depends on the
scheduler implementation. Add
_Scheduler_Is_non_preempt_mode_supported() to indicate this.
Update #3876.
|
|
Test for the proper system condition instead of using the
rtems_configuration_is_smp_enabled() workaround.
Update #3876.
|
|
The IO library used a POSIX key to store an optional POSIX user
environment pointer. This pulled in the POSIX keys support in every
application configuration. Add a user environment pointer to the thread
control block (TCB) instead. Applications which do not need the POSIX
user environment will just get an overhead of one pointer per thread.
Close #3882.
|
|
Move the is SMP enabled configuration constant out of the
configuration table.
Since this was the last configuration constant in
rtems_configuration_table, remove this type.
Update #3875.
|
|
Move the processor maximum configuration constant out of the
configuration table.
Update #3875.
|
|
Move the unified workspace configuration constant out of the
configuration table.
Provide a default definition of the unified workspace constant.
Update #3875.
|
|
Move the workspace size configuration constant out of the configuration
table.
Update #3875.
|
|
Move the idle thread body configuration constant out of the
configuration table.
Provide a default definition of the idle thread body constant.
Update #3875.
|
|
Move the idle thread stack size configuration constant out of the
configuration table.
Add THREAD_IDLE_STACK_SIZE_DEFAULT and use it to provide a default
definition of the idle thread stack size constant.
Update #3875.
|
|
Move the ticks per timeslice configuration constant out of the
configuration table.
Add WATCHDOG_TICKS_PER_TIMESLICE_DEFAULT and use it to provide a default
definition of the watchdog ticks per timeslice constant.
Update #3875.
|
|
Move the microseconds per tick configuration constant out of the
configuration table.
Add WATCHDOG_MICROSECONDS_PER_TICK_DEFAULT and use it to provide a
default definition of the watchdog ticks constants.
Update #3875.
|
|
|
|
Without this change, rtems-libbsd does not compile. A macro turns
free into bsd_free.
Also the use of a standard library element as a program identifier
is a violation of a MISRA rule. Turns out that was a good rule. :)
|
|
Allocate new thread queue heads during objects information extend. This
removes an error case and the last dependency on the workspace in
_Thread_Initialize().
Update #3835.
|
|
Update #3835.
|
|
Update #3835.
|
|
Update #3835.
|
|
Update #3835.
|
|
Update #3835.
|
|
Return block index in _Objects_Extend_information(). This allows to
customize the objects information extend.
Update #3835.
|
|
This function is simple enough to be inlined.
Update #3835.
|
|
Split up the different objects free methods into separate functions.
This helps to avoid a dependency on the workspace in case no objects or
a static set of objects is configured.
Update #3835.
|
|
Split up the different objects allocation methods into separate
functions. This helps to avoid a dependency on the workspace in case no
objects or a static set of objects is configured.
Change license to BSD-2-Clause according to file histories.
Update #3053.
Update #3835.
|