summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* score: Simplify thread queue timeout handlingSebastian Huber2021-05-1810-44/+88
| | | | | | | Add Thread_queue_Context::timeout_absolute to specify an absolute or relative timeout. This avoid having to get the current time twice for timeouts relative to the current time. It moves also functionality to common code.
* posix: Fix use of clock for relative timesSebastian Huber2021-05-181-13/+18
| | | | Close #4426.
* score: Add _CPU_Context_switch_no_return()Sebastian Huber2021-05-1810-5/+58
| | | | | | | | | | | The __builtin_unreachable() cannot be used with current GCC versions to tell the compiler that a function does not return to the caller, see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99151 Add a no return variant of _CPU_Context_switch() to avoid generation of dead code in _Thread_Start_multitasking() if RTEMS was built with SMP support enabled.
* score: Move _Thread_queue_Queue_get_name_and_id()Sebastian Huber2021-05-174-36/+78
| | | | | | | | | | Move this diagnostic function to a separate file since it does not provide a core function of the system. Change license to BSD-2-Clause according to file history and re-licensing agreement. Update #3053.
* posix: Use RTEMS_POSIX_API in clock_nanosleep()Sebastian Huber2021-05-171-0/+5
| | | | | It is only possible to get interrupted by a POSIX signal if RTEMS_POSIX_API is defined.
* posix: Move clock_nanosleep()Sebastian Huber2021-05-174-91/+118
| | | | | | | Move clock_nanosleep() to a separate file to avoid a dependency on errno which pulls in the Newlib reentrancy support. This is an issue since most parts which are pulled in cannot be garbage collected by the linker due to the system initialization linker set.
* bsps/imxrt: Enable DMA clockChristian Mauderer2021-05-171-0/+3
| | | | | | The EDMA is intialized so make sure the the clock is initialized too. Update #4180
* bsps/imxrt: Fix OCRAM, ITCM and DTCM sizesChristian Mauderer2021-05-1710-4/+119
| | | | | | | | | | | | The sizes are configurable via fuses or per software via some registers. At the moment the registers are not changed. Changing the registers destroys data stored in the RAM areas (like application code or data). So either the fuses or some bootloader should be used to set them before the application starts. This also adds an OCRAM only linker command file. Update #4180
* bsps/imxrt: Add addresses and interrupts to dtsChristian Mauderer2021-05-172-521/+1651
| | | | | | | | Add addresses and interrupts for most internal peripherals to the dts. The additional aliases make it possible for an application to easily access these informations. Update #4180
* bsps/imxrt: Reduce devicetree sizeChristian Mauderer2021-05-172-765/+472
| | | | | | | Remove symbols that would be necessary for overlays and decrease padding that would be necessary for adding stuff during run-time. Update #4180
* bsps/imxrt: Fix documentation errorChristian Mauderer2021-05-171-1/+1
| | | | Update #4180
* score: Add and use _Per_CPU_Is_ISR_in_progress()Sebastian Huber2021-05-174-13/+22
| | | | | Add _Per_CPU_Is_ISR_in_progress() as an optimized version of _ISR_Is_in_progress().
* score: Improve parameters in _Thread_Change_life()Sebastian Huber2021-05-172-22/+29
|
* arm/altera-cyclone-v: Fix compile errorSebastian Huber2021-05-171-2/+2
| | | | Update #4406.
* rtems: Fix task restart within interrupt contextSebastian Huber2021-05-143-74/+17
| | | | | | | | | | | rtems_task_restart() may be called from within interrupt context. So checking only that the thread to restart is equal to the executing thread is insufficient to determine a self restart. We have to also check that no ISR is in progress. Merge _Thread_Restart_other() and _Thread_Restart_self() into one _Thread_Restart() since they share a lot of common code. Close #4412.
* rtems: Always set the real priority during restartSebastian Huber2021-05-141-26/+32
| | | | | | | Unconditionally set the real priority of the task to its initial priority during a task restart. Close #4411.
* score: Return status in _Thread_Restart_other()Sebastian Huber2021-05-143-12/+16
| | | | This simplifies rtems_task_restart().
* rtems: Check entry point in rtems_task_start()Sebastian Huber2021-05-142-0/+13
| | | | Close #4410.
* validation: Add INVALID_ID to tx-support.hSebastian Huber2021-05-143-4/+7
|
* validation: Add support librarySebastian Huber2021-05-1412-14/+32
| | | | | | Add a library for support functions used by validation tests. Rename tc-support.* to tx-support.* since this file does not contain test cases.
* rtems: Add TOD_Ticks_validationSebastian Huber2021-05-142-15/+24
| | | | | | Replace defines with an enum. Update #4406.
* rtems: Constify rtems_task_wake_when()Sebastian Huber2021-05-129-20/+32
| | | | | | | | | | | | | | | | Add a parameter to _TOD_Validate() to disable the validation of the ticks member. There are two reasons for this change. Firstly, in rtems_task_wake_when() was a double check for time_buffer == NULL (one in rtems_task_wake_when() and one in _TOD_Validate()). Secondly, the ticks member is ignored by rtems_task_wake_when(). This was done with a write of zero to the ticks member and thus a modification of the user-provided structure. Now the structure is no longer modified. Using a mask parameter is quite efficient. You just have to load an immediate value and there are no additional branches in _TOD_Validate(). Close #4406.
* rtems: Document rtems_task_set_scheduler() errorsSebastian Huber2021-05-121-3/+20
|
* rtems: Clarify rtems_task_get_priority() docSebastian Huber2021-05-121-2/+2
|
* rtems: Use rtems_clock_get_ticks_per_second()Sebastian Huber2021-05-121-2/+2
| | | | This avoids an integer division at runtime.
* _TOD_Validate(): Fix incorrect return codeFrank K├╝hndel2021-05-128-50/+59
| | | | | | | | | | | | | | | This patch fixes bug #4403. Directives * rtems_timer_fire_when() * rtems_timer_server_fire_when() * rtems_task_wake_when() are documented to return RTEMS_INVALID_ADDRESS when their time-of-day argument is NULL. But actually they return RTEMS_INVALID_CLOCK. To fix the issue this patch changes _TOD_Validate() to return a status code instead of just true/false. Close #4403
* rtems: Use _Objects_Free_nothing() for msg queuesSebastian Huber2021-05-112-6/+9
| | | | | | | | Use _Objects_Free_nothing() for rtems_message_queue_construct() to avoid unreachable code in _CORE_message_queue_Close() in case only user-provided message buffers are used. Update #4007.
* score: Rename _Stack_Free_nothing()Sebastian Huber2021-05-118-17/+17
| | | | | | | Rename _Stack_Free_nothing() in _Objects_Free_nothing() to make it reusable for the message queue buffers. Update #4007.
* rtems: rtems_scheduler_get_processor_set() docsSebastian Huber2021-05-071-1/+1
| | | | | | Document changed error status. Update #4401.
* rtems_scheduler_ident_by_processor_set() docsSebastian Huber2021-05-071-0/+2
| | | | Document new error status.
* validation: Fix handling of N/A pre-conditionsSebastian Huber2021-05-079-492/+43
| | | | | | | In the action requirements, some pre-conditions are not applicable depending on the state of other pre-conditions. There is no particular order in the pre-conditions, so we have to check the N/A status individually.
* Check the alignment in posix_memalign() earlierSebastian Huber2021-05-071-4/+4
| | | | | | | Make sure all conditions to do a proper memory allocation are satisfied before a zero size memory allocation is performed. Update #4390.
* bsps/shared/ofw: Fix coverity defectsG S Niteesh Babu2021-05-061-1/+11
| | | | | | | | | | This patch adds asserts to fix coverity defects 1) CID 1474437 (Out-of-bounds access) 2) CID 1474436 (Out-of-bounds access) From manual inspection, out of bounds access cannot occur due to bounds checking but coverity fails to detect the checks. We are adding asserts as a secondary check.
* Return NULL for zero size allocationsSebastian Huber2021-05-068-63/+56
| | | | | | | | | | | | | | | In POSIX, zero size memory allocations are implementation-defined behaviour. The implementation has two options: https://pubs.opengroup.org/onlinepubs/9699919799/functions/malloc.html https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_memalign.html Linux and FreeBSD return a unique pointer for zero size memory allocations. Return NULL on RTEMS to more likely catch the use of a zero size memory area by erroneous applications. Update #4390.
* libc: Reimplement posix_memlign()Sebastian Huber2021-05-061-7/+22
| | | | | | | | Move all error checks into posix_memalign() so that the returned memory pointer is set to NULL under all error conditions except memptr == NULL. Use parameter names of POSIX documentation.
* rtems: rtems_scheduler_get_processor_set() statusSebastian Huber2021-05-062-2/+2
| | | | | | | | | In case the processor set is not large enough to contain the processor set owned by the scheduler return RTEMS_INVALID_SIZE instead of RTEMS_INVALID_NUMBER. This is more in line with other directives since the issue is related to the size of an object. Close #4401.
* rtems: rtems_scheduler_ident_by_processor_set()Sebastian Huber2021-05-061-0/+4
| | | | Check for a NULL processor set pointer.
* psxtests: Fix math function build warningsStephen Clark2021-05-0560-0/+231
| | | | | Added conditionals to ensure that long double function tests were only built when newlib has long double math functions.
* stackchk: Fixed 32bit pointersStephen Clark2021-05-051-1/+2
| | | | | | Using 32bit types like uint32_t for pointers creates issues on 64 bit architectures like AArch64. Replaced occurrences of these with uintptr_t, which will work for both 32 and 64 bit architectures.
* rtems-fdt: Fixed 32bit pointersStephen Clark2021-05-051-2/+2
| | | | | | Using 32bit types like uint32_t for pointers creates issues on 64 bit architectures like AArch64. Replaced occurrences of these with uintptr_t, which will work for both 32 and 64 bit architectures.
* score: Make _Once_Lock() and _Once_Unlock() staticSebastian Huber2021-05-042-32/+16
| | | | These two functions are no longer used outside of _Once().
* rtems: Use allocator mutex for timer serverSebastian Huber2021-05-041-4/+2
| | | | | | | The allocator mutex is recursive and already used for the task creation in rtems_timer_initiate_server(). Just use this mutex instead of the once mutex to serialize the initialization. This avoids a dependency on condition variables which are not used here.
* Make zero size allocation result consistentSebastian Huber2021-05-044-24/+100
| | | | | | | | | | | | | | | | | | The zero size allocations had no consistent behaviour in RTEMS. For example, malloc( 0 ) returned NULL and posix_memalign( &p, align, 0 ) returned in p a unique pointer (or NULL if no memory is available). In POSIX, zero size memory allocations are implementation-defined behaviour. The implementation has two options: https://pubs.opengroup.org/onlinepubs/9699919799/functions/malloc.html https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_memalign.html Linux and FreeBSD return a unique pointer for zero size memory allocations. Use this approach for RTEMS as well throughout the memory allocation directives Close #4390.
* bsps/riscv: Support RTEMS_NOINIT in linkcmdsSebastian Huber2021-05-031-0/+7
| | | | Update #3866.
* libtest: Fix use of flexible array memberSebastian Huber2021-05-033-35/+37
| | | | Flexible array members must not appear in the middle of a structure.
* score: Add _Thread_Dispatch_direct_no_return()Sebastian Huber2021-05-025-4/+18
| | | | | | | | | | The __builtin_unreachable() cannot be used with current GCC versions to tell the compiler that a function does not return to the caller, see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99151 Add a no return variant of _Thread_Dispatch_direct() to avoid generation of dead code.
* spmisc01: Test RTEMS_NOINITSebastian Huber2021-05-021-0/+5
| | | | Close #3866.
* bsps: Support RTEMS_NOINIT in linkcmdsSebastian Huber2021-05-0262-1/+256
| | | | Update #3866.
* basedefs: Add RTEMS_NOINITSebastian Huber2021-04-301-16/+26
| | | | Update #3866.
* Use alias for rtems_task_self() and pthread_self()Sebastian Huber2021-04-306-64/+62
| | | | This may reduce the code size a bit.