Commit Graph
141 Commits
Author SHA1 Message Date
Sebastian Huber 1d07dfad83 validation: Improve IRQ handler dispatch test
Clarify wording.  Use a function wrapper for the SMP spurious interrupt setup.

Update #3716.
2023-02-06 09:46:45 +01:00
Sebastian Huber 10ee41a8a3 tm27: Avoid function pointer casts
Add TM27_USE_VECTOR_HANDLER to select the interrupt handler type used by
the <tm27.h> implementation.

Close #4820.
2023-01-24 09:56:53 +01:00
Sebastian Huber 71d1acd41d bsps/irq: Rename handler in dispatch table
The name handler table was a bit misleading after the last rework.
Rename it to distach table.  Update the documentation accordingly.

Update #4769.
2022-12-02 10:25:39 +01:00
Sebastian Huber 68e1dc87a6 validation: Fix unused variable warning 2022-11-11 16:48:12 +01:00
Sebastian Huber 55318d17b4 validation: Improve spurious interrupt test case
Use the tm27 support to test a spurious interrupt.  This helps to run the
validation test case on targets which have no software interrupt available for
tests (for example riscv/PLIC/CLINT in the SMP configuration).
2022-11-11 16:38:25 +01:00
Sebastian Huber f151e6f680 validation: Properly teardown test cases
Make sure that the state of the testable interrupt vector is restored to the
state at the test case begin.
2022-11-09 16:55:15 +01:00
Sebastian Huber a7706515c7 validation: Use correct number of idle tasks
Update #3716.
2022-10-14 10:48:23 +02:00
Sebastian Huber 64fbeaa0d1 score: INTERNAL_ERROR_IDLE_THREAD_STACK_TOO_SMALL
Ensure that the IDLE storage allocator did allocate a suffiently large area.

Update #3835.
Update #4524.
2022-10-14 10:48:23 +02:00
Sebastian Huber 45ee958552 config: Add CONFIGURE_IDLE_TASK_STORAGE_SIZE
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.
2022-10-14 10:48:23 +02:00
Sebastian Huber 1ab93ba480 score: INTERNAL_ERROR_IDLE_THREAD_CREATE_FAILED
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.
2022-10-14 10:48:22 +02:00
Sebastian Huber 2846b17d7e config: Changeable size for IDLE stack allocator
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.
2022-10-14 07:29:41 +02:00
Sebastian Huber 3bad6b8ff9 validation: Fix wording 2022-10-06 09:03:06 +02:00
Sebastian Huber a3717de01c validation: Remove unused test suite
Update #3716.
2022-09-28 13:49:31 +02:00
Sebastian Huber acf1e5b266 rtems: Add rtems_clock_get_ticks_since_boot() function
This function was declared, however, a definition was missing.  Add a
validation test for it.
2022-09-23 11:14:58 +02:00
Sebastian Huber 3803757b2c validation: Test deadlock detection special case
Update #3716.
2022-09-12 09:39:04 +02:00
Sebastian Huber 8d32b9884c validation: Fix integer type warning
Update #4662.
2022-09-09 08:09:11 +02:00
Sebastian Huber 4e227f460c validation: CONFIGURE_SCHEDULER_TABLE_ENTRIES
Test this option in a configuration with only one processor.

Update #3716.
2022-09-05 15:46:32 +02:00
Sebastian Huber 98353136dd validation: Refine basedefs specification
Update #3716.
2022-09-05 15:46:32 +02:00
Sebastian Huber 9e9ce43dcb validation: Regenerate
Update #4702.
2022-09-05 08:57:42 +02:00
Sebastian Huber b1072f5ae2 validation: Ignore array bounds warnings
Update #4702.
2022-08-31 13:21:02 +02:00
Sebastian Huber c4472cef3e validation: Move flush filter stop validation
This gets rid of a cyclic dependency in the specification graph.

Update #3716.
2022-08-31 11:29:56 +02:00
Sebastian Huber 1dca588f63 validation: Support a partial thread queue flush
Update #3716.
2022-08-31 11:29:37 +02:00
Sebastian Huber 44b3bc65af validation: Fix use of uninitialized variables
Update #4662.
2022-08-30 07:30:42 +02:00
Sebastian Huber f6a38fb254 validation: Use T_report_hash_sha256_update()
Add the direct BSP character ouput to the report hash.

Update #3716.
2022-08-10 07:51:19 +02:00
Sebastian Huber c64c638f6d posix: Fix relative CLOCK_REALTIME sleep
A relative CLOCK_REALTIME time out shall not be affected by CLOCK_REALTIME
changes through clock_settime().  Since our CLOCK_REALTIME is basically just
CLOCK_MONOTONIC plus an offset, we can simply use the CLOCK_MONOTONIC watchdog
for relative CLOCK_REALTIME time outs.

Update #4690.
2022-08-04 07:55:30 +02:00
Sebastian Huber 31036f1dc8 score: Use priority inheritance for thread join
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.
2022-07-28 07:52:59 +02:00
Sebastian Huber cdc1eb7dcc validation: SMP-specific spurious interrupt test
Update #3716.
2022-07-14 10:46:43 +02:00
Sebastian Huber e506df58ec validation: Test thread idle bodies
Update #3716.
2022-07-07 09:00:48 +02:00
Sebastian Huber 588a07e1a8 validation: Always test spurious interrupts
Update #3716.
2022-07-07 09:00:46 +02:00
Sebastian Huber c75e03367a validation: Test thread free of FPU owner
Update #3716.
2022-07-07 09:00:44 +02:00
Sebastian Huber af90f783f0 validation: Test scheduler detail
This particular state during a reconsider help request scheduler operation was
only covered by the existing test suites under some timing conditions.

Update #3716.
2022-07-07 09:00:29 +02:00
Sebastian Huber 5c13a96f36 build: Add RTEMS_GCOV_COVERAGE option
Update #4670.
2022-07-04 08:29:52 +02:00
Sebastian Huber 4f87edbb75 gcov: Add functions to dump the gcov information
Update #4670.
2022-07-04 08:29:52 +02:00
Sebastian Huber cd50bea678 score: Use right clock for threadq timeouts
Use CLOCK_REALTIME and CLOCK_MONOTONIC for relative thread queue timeouts
instead of CLOCK_REALTIME_COARSE and CLOCK_MONOTONIC_COARSE.  This fixes an
issue with clock_nanosleep() in combination with clock_gettime().

Close #4669.
2022-06-23 09:20:11 +02:00
Sebastian Huber 9a69e43083 validation: Fix CallWithinISR()
Some BSPs require that Clear_tm27_intr() is called in the interrupt
service routine.

Update #3269.
2022-06-08 09:33:20 +02:00
Sebastian Huber 873e7dab34 validation: Avoid double fatal error
In the SMP_FATAL_MULTITASKING_START_ON_NOT_ONLINE_PROCESSOR test case,
the boot processor ends up in the idle body.  Do not issue a fatal error
here and instead enter the idle loop.  The secondary processor will
terminate the system.
2022-04-12 08:37:54 +02:00
Sebastian Huber ba36e4a236 validation: Allow custom idle task body 2022-04-12 08:37:54 +02:00
Sebastian Huber 9f9f1408a1 rtems: Clarify scheduler of created task 2022-03-29 17:19:42 +02:00
Sebastian Huber c2d7376f06 validation: Use individual names for ident tests
Make the task configuration reusable.

Update #3716.
2022-03-29 17:19:42 +02:00
Sebastian Huber 10d1de250a validation: Clarify comment 2022-03-24 11:20:26 +01:00
Sebastian Huber 36615183d6 smp: Add fatal error
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.
2022-03-24 11:10:49 +01:00
Sebastian Huber 14de245d05 validation: Test support functions
The test source code is generated from specification items
by the "./spec2modules.py" script contained in the
git://git.rtems.org/rtems-central.git Git repository.

Please read the "How-To" section in the "Software Requirements Engineering"
chapter of the RTEMS Software Engineering manual to get more information about
the process.

Update #3716.
2022-03-24 11:10:49 +01:00
Sebastian Huber ab2c04a86f validation: Test thread implementation
The test source code is generated from specification items
by the "./spec2modules.py" script contained in the
git://git.rtems.org/rtems-central.git Git repository.

Please read the "How-To" section in the "Software Requirements Engineering"
chapter of the RTEMS Software Engineering manual to get more information about
the process.

Update #3716.
2022-03-24 11:10:49 +01:00
Sebastian Huber 4a8f4b7202 validation: Test SMP-specific aspects
The test source code is generated from specification items
by the "./spec2modules.py" script contained in the
git://git.rtems.org/rtems-central.git Git repository.

Please read the "How-To" section in the "Software Requirements Engineering"
chapter of the RTEMS Software Engineering manual to get more information about
the process.

Update #3716.
2022-03-24 11:10:49 +01:00
Sebastian Huber ff50664c5c validation: Test scheduler operations
The test source code is generated from specification items
by the "./spec2modules.py" script contained in the
git://git.rtems.org/rtems-central.git Git repository.

Please read the "How-To" section in the "Software Requirements Engineering"
chapter of the RTEMS Software Engineering manual to get more information about
the process.

Update #3716.
2022-03-24 11:10:49 +01:00
Sebastian Huber 9f283e79f2 validation: Test C libary functions
The test source code is generated from specification items
by the "./spec2modules.py" script contained in the
git://git.rtems.org/rtems-central.git Git repository.

Please read the "How-To" section in the "Software Requirements Engineering"
chapter of the RTEMS Software Engineering manual to get more information about
the process.

Update #3716.
2022-03-24 11:10:49 +01:00
Sebastian Huber c24747a69b validation: Test <sys/lock.h> mutex operations
The test source code is generated from specification items
by the "./spec2modules.py" script contained in the
git://git.rtems.org/rtems-central.git Git repository.

Please read the "How-To" section in the "Software Requirements Engineering"
chapter of the RTEMS Software Engineering manual to get more information about
the process.

Update #3716.
2022-03-24 11:10:49 +01:00
Sebastian Huber 5fb7ce8835 validation: Test futex support
The test source code is generated from specification items
by the "./spec2modules.py" script contained in the
git://git.rtems.org/rtems-central.git Git repository.

Please read the "How-To" section in the "Software Requirements Engineering"
chapter of the RTEMS Software Engineering manual to get more information about
the process.

Update #3716.
2022-03-24 11:10:49 +01:00
Sebastian Huber fa660c4d5b validation: Test status code directives
The test source code is generated from specification items
by the "./spec2modules.py" script contained in the
git://git.rtems.org/rtems-central.git Git repository.

Please read the "How-To" section in the "Software Requirements Engineering"
chapter of the RTEMS Software Engineering manual to get more information about
the process.

Update #3716.
2022-03-24 11:10:49 +01:00
Sebastian Huber 7eb4fc8d43 validation: Test timecounter
The test source code is generated from specification items
by the "./spec2modules.py" script contained in the
git://git.rtems.org/rtems-central.git Git repository.

Please read the "How-To" section in the "Software Requirements Engineering"
chapter of the RTEMS Software Engineering manual to get more information about
the process.

Update #3716.
2022-03-24 11:10:49 +01:00