| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Ensure that the IDLE storage allocator did allocate a suffiently large area.
Update #3835.
Update #4524.
|
|
|
|
|
|
|
|
|
|
|
|
| |
By default, allocate the IDLE task storage areas from the RTEMS Workspace.
This avoids having to estimate the thread-local storage size in the default
configuration.
Add the application configuration option CONFIGURE_IDLE_TASK_STORAGE_SIZE to
request a static allocation of the task storage area for IDLE tasks.
Update #3835.
Update #4524.
|
|
|
|
|
|
| |
Add the INTERNAL_ERROR_IDLE_THREAD_CREATE_FAILED fatal error in case the
creation of an idle thread fails. This may happen due to a failing create
extension provided by the application.
|
| |
|
|
|
|
| |
Update #3835.
|
|
|
|
|
|
|
|
|
| |
Place this member placed directly after the end of the common block so that
the structure offsets are as small as possible. This helps on instruction
set architectures with a very limited range for intermediate values. For
example, see the __aeabi_read_tp() implementation for ARM Thumb-1.
Update #3835.
|
|
|
|
|
|
|
|
| |
Allow the IDLE stack allocator to change the stack size. This can be
used by applications with a very dynamic thread-local storage size to
adjust the thread storage area of the IDLE tasks dynamically.
Update #4524.
|
|
|
|
| |
Fix documentation.
|
|
|
|
|
|
|
| |
Directly use "static inline" which is available in C99 and later. This brings
the RTEMS implementation closer to standard C.
Close #3935.
|
|
|
|
|
|
|
| |
All CPU ports used the same _CPU_Counter_difference() implementation. Remove
this CPU port interface and mandate a monotonically increasing CPU counter.
Close #3456.
|
| |
|
|
|
|
| |
Two interface specification items moved.
|
| |
|
|
|
|
|
|
| |
Use RTEMS_ZERO_LENGTH_ARRAY for flexible array member.
Update #4662.
|
|
|
|
|
|
|
|
| |
The <rtems.h> header file should not unnecessarily include standard C
header files. The <string.h> and <limits.h> header includes were
removed in 2017.
Update #4662.
|
|
|
|
| |
Update #4706.
|
|
|
|
| |
Update #4706.
|
|
|
|
| |
UPdates #4706
|
|
|
|
| |
Updates #4706
|
|
|
|
|
|
| |
Changed the size of the array to 1 to get rid of the warning.
Updates #4662
|
|
|
|
| |
Updates #4662
|
|
|
|
|
|
|
| |
The warning that this fixes states that "ISO C restricts enumerator values to
range of 'int'."
Updates #4662
|
|
|
|
|
|
|
| |
Place the object control blocks in dedicated sections to allow a linker garbage
collection.
Update #4678.
|
|
|
|
|
|
|
|
|
|
| |
The rtems_task_delete() directive is basically just a combined pthread_cancel()
and pthread_join(). In addition, it removes the PTHREAD_DETACHED state. The
exit value returned by pthread_join() of threads cancelled by
rtems_task_delete() should reflect this by getting a PTHREAD_CANCELED value
instead of NULL which could be a normal exit value.
Close #4680.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Threads may join the thread termination of another thread using the
pthread_join() or rtems_task_delete() directives. The thread cancel operation
used a special case priority boosting mechanism implemented by
_Thread_Raise_real_priority(). The problem was that this approach
* is not transitive,
* does not account for priority adjustments of the calling task
while waiting for the join,
* does not support clustered scheduling, and
* does not detect deadlocks.
All these problems are fixed by using a priority inheritance thread queue for
the join operation.
Close #4679.
|
|
|
|
|
|
|
|
| |
The objects local table must be statically zero-initialized so that
_Objects_Get() and _Objects_Get_no_protection() return NULL if no object is
associated with the identifier.
Update #4678.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The uniprocessor schedulers had some special case logic for the
PRIORITY_PSEUDO_ISR priority. Tasks with a priority of PRIORITY_PSEUDO_ISR
were allowed to preempt a not preemptible task. If other higher priority task
are made ready while a PRIORITY_PSEUDO_ISR task preempts a not preemptible
task, then the other tasks run before the not preemptible task. This made the
RTEMS_NO_PREEMPT mode ineffective.
Remove the PRIORITY_PSEUDO_ISR special case logic. This simplifies the
uniprocessor schedulers. Move the uniprocessor-specific scheduler support to
the new header file <rtems/score/scheduleruniimpl.h>.
Close #2365.
|
|
|
|
|
|
|
|
|
| |
In case the Newlib _REENT_THREAD_LOCAL configuration option is enabled, the
struct _reent is not defined (there is only a forward declaration in
<sys/reent.h>). Instead, the usual members of struct _reent are available as
dedicatd thread-local storage objects.
Update #4560.
|
|
|
|
|
|
|
|
| |
Commit 21275b58a5a69c3c838082ffc8a7a3641f32ea9a ("score: Static
Objects_Information initialization") introduced an off-by-one error in the
maintenance of inactive objects.
Close #4677.
|
|
|
|
|
|
| |
Dirty or zero also the part of the .noinit section used by RTEMS.
Close #4678.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Place the statically allocated object control blocks, local tables, and thread
queue heads into the dedicated .noinit intput sections. The output section is
not zero initialized. Placing these elements into the .noinit section reduces
the system initialization time by decreasing the .bss section size.
It may improve the cache efficiency since the mostly read local tables are
placed in a contiguous memory area.
Update #4678.
|
|
|
|
| |
This function is only used in SMP configurations.
|
|
|
|
| |
Update #4670.
|
|
|
|
| |
Update #4667.
|
|
|
|
| |
Update #4667.
|
|
|
|
|
|
|
| |
Conditional expressions with inline functions are not optimized away if
optimization is disabled. Avoid such expressions to prevent dead
branches. It helps also during code review to immediately see if a loop
is used or not.
|
|
|
|
| |
Update #2349.
|
|
|
|
|
|
| |
Rename tc_getfrequency() to _Timecounter_Get_frequency().
Update #2349.
|
| |
|
|
|
|
| |
Close #4644.
|
|
|
|
|
|
|
| |
Add SMP-specifc SMP_FATAL_MULTITASKING_START_ON_NOT_ONLINE_PROCESSOR
fatal error. This fatal error helps to diagnose a broken SMP startup
sequence. Without this error a context switch using the NULL pointer
for the thread control block happens which may be difficult to debug.
|
|
|
|
|
|
|
| |
This function may be used to burn a couple of processor cycles with
minimum impact on the system bus. It may be used in busy wait loops.
Since it is a global function, it is possible to wrap it in device
driver test code.
|
|
|
|
| |
Updates #4625.
|
|
|
|
| |
Updates #3053.
|
|
|
|
| |
Updates #3053.
|
|
|
|
|
|
| |
Remove previous adjtime() implementation.
Update #2348.
|
|
|
|
|
|
|
|
|
|
|
| |
GCC versions prior to 6.1 used a RTEMS thread model based on
rtems_gxx_*() functions. GCC version 6.1 or later uses the
self-contained synchronization objects of Newlib <sys/lock.h> for the
RTEMS thread model.
Remove the obsolete implementation.
Close #3143.
|
|
|
|
|
| |
If RTEMS_SMP is not defined, then Doxygen adds the comments intended for
conditional the lock member to the next member.
|
|
|
|
|
|
|
| |
In _Workspace_Initialize_for_one_area(), properly check if there is enough
free memory available for the configured workspace size.
The bug was introduced by commit 3d0620b607ff6459fec9d30efc1e0589bbd010f9.
|
|
|
|
| |
Close #4566.
|