| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Use architecture-specific integer type for an address difference.
Update #3486.
|
|
|
|
|
|
|
|
|
|
| |
Use uintptr_t to specify the length of the partition buffer area instead
of uint32_t. This is in line with rtems_region_create(). On 64-bit
targets, the length may exceed 4GiB. Use size_t for the buffer size,
since on some targets the single object size is less than the overall
address range, e.g. m32c sizeof(uintptr_t) > sizeof(size_t).
Update #3486.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The partition buffer area alignment required by rtems_partition_create()
was too strict since it was checked via _Addresses_Is_aligned() which
uses CPU_ALIGNMENT. The CPU_ALIGNMENT must take long double and vector
data type alignment requirements into account. For the partition
maintenance only pointer alignment is required (Chain_Node, which
consists of two pointers). The user should ensure that its partition
buffer area is suitable for the items it wants to manage. The user
should not be burdened to provide buffers with the maximum architecture
alignment, e.g. why need a 16 byte aligned buffer if you want to manage
items with 4 byte integers only?
Update #3482.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use the CPU_SIZEOF_POINTER alignment instead. The internal alignment
requirement is defined by the use of Chain_Node (consisting of two
pointers) to manage the free chain of partitions.
It seems that previously the condition
CPU_PARTITION_ALIGNMENT >= sizeof(Chain_Node)
was true on all CPU ports. Now, we need an additional check.
Update #3482.
|
|
|
|
|
|
| |
Move _Status_Object_name_errors_to_status to a separate file to avoid a
dependency on errno. Dependencies to errno are hard to be removed by
the linker garbage collection.
|
|
|
|
|
|
|
| |
Use _Thread_Dispatch_direct() for operations that block the executing
thread. This ensures that we get a fatal error
(INTERNAL_ERROR_BAD_THREAD_DISPATCH_DISABLE_LEVEL) if we try to block in
an invalid context, e.g. during system start or an interrupt handler.
|
| |
|
|
|
|
|
|
|
|
| |
Rename PER_CPU_WATCHDOG_MONOTONIC to PER_CPU_WATCHDOG_TICKS. Add new
PER_CPU_WATCHDOG_MONOTONIC which is based on the system uptime (measured
by timecounter).
Close #3264.
|
|
|
|
|
|
| |
Rename _Watchdog_Realtime_from_*() to _Watchdog_Ticks_from_*().
Update #3264.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A speciality of the RTEMS build system was the make preinstall step. It
copied header files from arbitrary locations into the build tree. The
header files were included via the -Bsome/build/tree/path GCC command
line option.
This has at least seven problems:
* The make preinstall step itself needs time and disk space.
* Errors in header files show up in the build tree copy. This makes it
hard for editors to open the right file to fix the error.
* There is no clear relationship between source and build tree header
files. This makes an audit of the build process difficult.
* The visibility of all header files in the build tree makes it
difficult to enforce API barriers. For example it is discouraged to
use BSP-specifics in the cpukit.
* An introduction of a new build system is difficult.
* Include paths specified by the -B option are system headers. This
may suppress warnings.
* The parallel build had sporadic failures on some hosts.
This patch removes the make preinstall step. All installed header
files are moved to dedicated include directories in the source tree.
Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc,
etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g.
erc32, imx, qoriq, etc.
The new cpukit include directories are:
* cpukit/include
* cpukit/score/cpu/@RTEMS_CPU@/include
* cpukit/libnetworking
The new BSP include directories are:
* bsps/include
* bsps/@RTEMS_CPU@/include
* bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include
There are build tree include directories for generated files.
The include directory order favours the most general header file, e.g.
it is not possible to override general header files via the include path
order.
The "bootstrap -p" option was removed. The new "bootstrap -H" option
should be used to regenerate the "headers.am" files.
Update #3254.
|
|
|
|
|
|
|
|
|
|
|
| |
A rtems_configuration_is_smp_enabled() inside a !defined( RTEMS_SMP)
block makes no sense.
Remove !defined( RTEMS_SMP ) conditions.
Test tm04 works now again.
Update #3000.
|
|
|
|
|
|
|
| |
Also use single conditional expressions to simplify error checking.
Combined, this all resulted in a block of SMP enabled error checking.
Updates #3000.
|
|
|
|
|
|
|
|
|
|
| |
Use a self-contained recursive mutex for API_Mutex_Control. The API
mutexes are protected against asynchronous thread cancellation.
Add dedicated mutexes for libatomic and TOD.
Close #2629.
Close #2630.
|
|
|
|
| |
Update #3243.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Based on correlation with the enum for object lookup errors in
cpukit/score/include/rtems/score/objectimpl.h:
typedef enum {
OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL,
OBJECTS_INVALID_NAME,
OBJECTS_INVALID_ADDRESS,
OBJECTS_INVALID_ID,
OBJECTS_INVALID_NODE
} Objects_Name_or_id_lookup_errors;
update the comments regarding the object lookup error to status map to
match.
Signed-off-by: Martin Erik Werner <martin.werner@aacmicrotec.com>
|
|
|
|
|
|
|
|
|
| |
The _Semaphore_Get_operations() must return the proper operations for
priority inheritance semaphores.
Add a test case for rtems_semaphore_flush() with priority inheritance.
Close #3235.
|
|
|
|
|
|
|
| |
The watchdog routines invoked by the timer server may use mutexes for
synchronization. Ensure that the resource count of the timer server is
zero after each watchdog routine invocation. This helps to detect
broken watchdog routines.
|
|
|
|
|
|
|
| |
Add macro implementation for rtems_clock_get_ticks_per_second() for
C/C++ to avoid the function call overhead. A
rtems_clock_get_ticks_per_second() is still provided for language
bindings (e.g. Ada).
|
|
|
|
|
| |
Update #3117.
Update #3182.
|
|
|
|
|
|
|
|
|
|
| |
Rename _Watchdog_Ticks_from_*() to _Watchdog_Realtime_from_*().
This highlights that these routines are used for the CLOCK_REALTIME
watchdogs (in contrast to CLOCK_MONOTONIC).
Update #3117.
Update #3182.
|
|
|
|
|
|
|
| |
Remove the cast so that it can be used in C pre-processor directives.
Update #3117.
Update #3182.
|
|
|
|
|
|
|
|
| |
This value is frequently used. Avoid the function call overhead and the
integer division at run-time.
Update #3117.
Update #3182.
|
|
|
|
|
|
|
|
| |
Replace _Thread_Timer_insert_monotonic() with
_Thread_Add_timeout_ticks().
Update #3117.
Update #3182.
|
|
|
|
|
|
|
|
| |
Rename _Watchdog_Per_CPU_insert_monotonic() in
_Watchdog_Per_CPU_insert_ticks().
Update #3117.
Update #3182.
|
|
|
|
|
|
|
|
|
|
|
| |
Rename PER_CPU_WATCHDOG_RELATIVE in PER_CPU_WATCHDOG_MONOTONIC to
highlight the corresponding POSIX CLOCK_MONOTONIC.
Rename PER_CPU_WATCHDOG_ABSOLUTE in PER_CPU_WATCHDOG_REALTIME to
highlight the corresponding POSIX CLOCK_REALTIME.
Update #3117.
Update #3182.
|
|
|
|
|
|
| |
Use Processor_mask instead.
Update #2514.
|
| |
|
|
|
|
|
|
|
| |
Use the timestamps only for uptime based values. Use struct timespec
for the absolute time values (TOD).
Update #2740.
|
|
|
|
| |
Update #3111.
|
|
|
|
|
|
|
|
| |
POSIX mutexes are now available in all configurations and no longer
depend on --enable-posix.
Update #2514.
Update #3112.
|
|
|
|
|
|
|
|
| |
POSIX condition variables are now available in all configurations and no
longer depend on --enable-posix.
Update #2514.
Update #3113.
|
|
|
|
|
|
|
|
| |
POSIX rwlocks are now available in all configurations and no longer
depend on --enable-posix.
Update #2514.
Update #3115.
|
|
|
|
|
|
|
|
| |
POSIX barriers are now available in all configurations and no longer
depend on --enable-posix.
Update #2514.
Update #3114.
|
|
|
|
|
|
|
| |
This mechanism can be used to safely move the interrupt server from one
scheduler instance to another for example.
Update #3071.
|
|
|
|
| |
Update #3070.
|
|
|
|
| |
Update #3069.
|
|
|
|
| |
Update #3059.
|
|
|
|
|
|
|
|
| |
Account for the thread processor affinity and make sure that it is
possible to allocate a processor to each thread dedicated to a scheduler
instance.
Update #3059.
|
|
|
|
|
|
|
| |
Replace the simple processor count with the processor set owned by the
scheduler instance.
Update #3059.
|
|
|
|
| |
architectures
|
| |
|
|
|
|
|
| |
Cast the internal WATCHDOG_NO_TIMEOUT to the right type for a Classic
API interval to avoid implict type conversion warnings.
|
|
|
|
|
| |
Cast the internal PRIORITY_MAXIMUM to the right type for a Classic API
task priority to avoid integer conversion warnings.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add the special thread queue name _Thread_queue_Object_name to mark
thread queues embedded in an object with identifier. Using the special
thread state STATES_THREAD_QUEUE_WITH_IDENTIFIER is not reliable for
this purpose since the thread wait information and thread state are
protected by different SMP locks in separate critical sections. Remove
STATES_THREAD_QUEUE_WITH_IDENTIFIER.
Add and use _Thread_queue_Object_initialize().
Update #2858.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Prepare a precondition to prevent the potential integer overflow.
Remove one redundant parameter in _Rate_monotonic_Renew_deadline().
sptests/sprmsched02: Create
A test case for checking the overflow condition of postponed_jobs
in rtems_rate_monotonic_period_status.
Update #2885.
|
|
|
|
|
|
|
|
|
|
|
| |
Add a variable named "count" in rtems_rate_monotonic_period_status
structure. Revise rtems_rate_monotonic_get_status() for the postponed
job count.
sptests/sp69: Add in the verification of the postponed job count for
rtems_rate_monotonic_get_status().
Update #2795.
|
|
|
|
|
|
| |
Use proper locking in SMP configurations.
Update #2795.
|
|
|
|
|
|
| |
Use proper locking in SMP configurations.
Update #2795.
|
|
|
|
|
|
|
| |
Make _Rate_monotonic_Renew_deadline() static and use proper locking in SMP
configurations.
Update #2795.
|
|
|
|
| |
closes #2795
|