Commit Graph

353 Commits

Author SHA1 Message Date
Sebastian Huber
d0b704b09c libtest: Change expected pass state string
Use separator character '_' for all test states.
2019-12-05 07:10:59 +01:00
Sebastian Huber
9f3c558bbc tests: Remove superfluous SMPTESTS define
Update #3818.
2019-11-12 09:36:19 +01:00
Sebastian Huber
5fa893ea20 score: Add _SMP_Unicast_action() 2019-05-20 09:31:25 +02:00
Sebastian Huber
577293f0a9 score: Add _SMP_Synchronize() 2019-05-20 09:01:15 +02:00
Sebastian Huber
fe24820e95 smpipi01: Use per-CPU jobs for IPI flood test 2019-05-20 08:54:31 +02:00
Sebastian Huber
21e691b7d7 smpipi01: Ensure IPI works on all processors 2019-05-20 08:54:31 +02:00
Sebastian Huber
7cb881f5b1 smpipi01: Use per-CPU jobs for pending IPI test 2019-05-20 08:54:31 +02:00
Sebastian Huber
c63e8bbeb9 score: Modify _Per_CPU_Perform_jobs()
Process only the jobs initially registered on the processing list.  This
makes it possible to add jobs for the current processor in a job
handler.  These jobs are processed with the next
SMP_MESSAGE_PERFORM_JOBS message.  The lock is only acquired and
released once.
2019-05-20 08:54:27 +02:00
Sebastian Huber
85d6e845d2 score: Add _Per_CPU_Add_job() 2019-05-20 08:52:39 +02:00
Sebastian Huber
3b2481f9a7 score: Simplify _SMP_Multicast_action()
Move resposibility to disable thread dispatching to the caller of
_SMP_Multicast_action().  Using an interrupt disable for this purpose is
questionable.
2019-05-20 08:49:39 +02:00
Sebastian Huber
658700449d score: Add _SMP_Broadcast_action() 2019-05-20 08:49:39 +02:00
Sebastian Huber
9f52acb5e5 smptests: Move SMP broadcast action test case 2019-05-20 08:49:39 +02:00
Sebastian Huber
317997fd1b smpmulticast01: Use T_TEST_CASE() 2019-05-20 08:49:39 +02:00
Sebastian Huber
ef9d20f691 score: More robust _SMP_Multicast_action()
If the caller already disabled interrupts, then do not disable thread
dispatching.  Calling _SMP_Multicast_action() with interrupts disabled
is a questionable use case.
2019-04-12 11:15:40 +02:00
Sebastian Huber
f410b31be4 score: Improve _SMP_Multicast_action()
Let it work during system initialization.
2019-04-12 09:44:48 +02:00
Sebastian Huber
e90486ab41 score: Rework SMP multicast action
Use a FIFO list of jobs per processor to carry out the SMP multicast
action.  Use a done indicator per job to reduce the bus traffic a bit.
2019-04-12 09:44:48 +02:00
Sebastian Huber
df8d7bd76f score: Use processor mask in _SMP_Multicast_action
Processor_mask is the internal data type to deal with processor sets.
2019-04-12 09:44:48 +02:00
Sebastian Huber
f9219db2a9 rtems: Add rtems_scheduler_get_processor_maximum()
Add rtems_scheduler_get_processor_maximum() as a replacement for
rtems_get_processor_count(). The rtems_get_processor_count() is a bit
orphaned. Adopt it by the Scheduler Manager. The count is also
misleading, since the processor set may have gaps and the actual count
of online processors may be less than the value returned by
rtems_get_processor_count().

Update #3732.
2019-04-09 08:06:46 +02:00
Sebastian Huber
03c9f24061 rtems: Add rtems_scheduler_get_processor()
Add rtems_scheduler_get_processor() as a replacement for
rtems_get_current_processor(). The rtems_get_current_processor() is a
bit orphaned. Adopt it by the Scheduler Manager. This is in line with
the glibc sched_getcpu() function.

Deprecate rtems_get_current_processor().

Update #3731.
2019-04-09 08:06:46 +02:00
Sebastian Huber
fbd08066af score: Fix plain priority thread queues (SMP)
We must add/remove the priority queue to the FIFO of priority queues.
2019-02-07 08:48:18 +01:00
Sebastian Huber
b015c01443 build: Do not install test programs 2019-01-30 09:46:35 +01:00
Sebastian Huber
1f28518675 rtems: Allow to set ISR level 0 in SMP config
Update #3000.
2019-01-09 10:35:31 +01:00
Sebastian Huber
7c19e50bdd score: Fix per-CPU data allocation
Allocate the per-CPU data for secondary processors directly from the
heap areas before heap initialization and not via
_Workspace_Allocate_aligned().  This avoids dependency on the workspace
allocator.  It fixes also a problem on some platforms (e.g. QorIQ) where
at this early point in the system initialization the top of the RAM is
used by low-level startup code on secondary processors (boot pages).

Update #3507.
2018-12-18 08:50:08 +01:00
Marçal Comajoan Cara
0446f68056 Spelling and grammar fixes in source code comments (GCI 2018) 2018-12-04 15:12:53 -06:00
Sebastian Huber
0a75a4aa65 Remove rtems_cache_*_processor_set() functions
The following rtems_cache_*_processor_set() cache manager API functions
are exotic, complex, very hard to use correctly, not used in the RTEMS
code base, and apparently unused by applications.

Close #3622.
2018-11-26 14:09:43 +01:00
Sebastian Huber
24f3e8fd5b posix: Enable more smptests tests by default
Update #2514.
2018-10-29 10:52:48 +01:00
Sebastian Huber
477bca2d61 build: Remove local.am 2018-10-10 07:57:47 +02:00
Sebastian Huber
51b3cbca11 tests: Use rtems_task_exit()
Update #3533.
2018-10-05 13:41:07 +02:00
Sebastian Huber
8776bb9419 score: Remove CPU_PROVIDES_IDLE_THREAD_BODY
Remove the CPU_PROVIDES_IDLE_THREAD_BODY option to avoid unnecessary
conditional compilation.

Close #3539.
2018-10-05 13:41:06 +02:00
Daniel Hellstrom
431661de35 smp03: make printout match actual task name 2018-09-20 12:48:32 +02:00
Sebastian Huber
709796209c score: Add thread pin/unpin support
Add support to temporarily pin a thread to its current processor.  This
may be used to access per-processor data structures in critical sections
with enabled thread dispatching, e.g. a pinned thread is allowed to
block.

Update #3508.
2018-09-10 10:38:45 +02:00
Sebastian Huber
e0a9336bf9 score: Fix EDF SMP scheduler
Fix a special case: block a one-to-one scheduled thread while having a
non-empty affine ready queue on the same processor.
2018-09-03 09:37:35 +02:00
Sebastian Huber
4678d1a8b0 bsps: bsp_start_on_secondary_processor()
Pass current processor control as first parameter in
bsp_start_on_secondary_processor() and qoriq_start_thread() to make
dependency more explicit.
2018-07-25 10:07:42 +02:00
Sebastian Huber
91f39a5587 smptests: Fix format warnings 2018-07-24 13:00:56 +02:00
Sebastian Huber
ffd46178c7 score: Fix _Scheduler_EDF_SMP_Set_affinity()
Commit 8744498752 broke the
_Scheduler_EDF_SMP_Set_affinity() implementation.  We must test the
overall affinity against the online processors.
2018-07-18 07:16:27 +02:00
Sebastian Huber
2086948a7b riscv: Add dummy SMP support
Update #3433.
2018-06-28 15:02:12 +02:00
Sebastian Huber
b422aa3f4a tests: Remove configure feature checks
Update #3409.
2018-05-02 07:11:03 +02:00
Sebastian Huber
8b5a801e85 smptests/smpschededf02: Add test case 2018-04-27 07:22:38 +02:00
Sebastian Huber
5e8a24ca3e smptests/smpschedaffinity02: Fix configuration 2018-04-23 10:35:35 +02:00
Chris Johns
aa567bc1cc configure: Add subdir-objects to all automake flags.
This option silences warning with automake-1.16.1 allowing us to
upgrade to that version.

This change has been tested with automake-1.12.6 and automake-1.16.1.
It seems version 1.16.1 configures slower than 1.12.6 for the same
source and BSP. The newer versions is 6 second slower.

Close #3387.
2018-04-11 11:52:29 +10:00
Chris Johns
8074fa0b83 testsuite/smptests: Merged nested Makefile.am files into one Makefile.am
This change is part of the testsuite Makefile.am reorganization.

Update #3382
2018-04-10 08:24:54 +10:00
Sebastian Huber
6fadb7af09 config: Use new scheduler configuration defines
Update #3325.
2018-03-12 07:01:30 +01:00
Sebastian Huber
ff281a6fa6 smptests: Fix obsolete FIXME comments/code 2018-03-07 10:33:03 +01:00
Sebastian Huber
0c5d22f509 smptests/smpopenmp01: New test 2018-02-02 15:01:19 +01:00
Sebastian Huber
cf56b18af1 smpschededf01: Use rtems_test_busy_cpu_usage()
The rtems_test_busy() is not accurate enough and may lead to sporadic
test failures.
2018-02-02 07:50:19 +01:00
Sebastian Huber
63fab5aaf9 smpschedaffinity04: Fix configuration 2018-02-02 07:48:49 +01:00
Sebastian Huber
c9aba80bad smpcapture01: Fix configuration 2018-02-02 07:48:48 +01:00
Chris Johns
2afb22b7e1 Remove make preinstall
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.
2018-01-25 08:45:26 +01:00
Sebastian Huber
6bc5e47c84 smptests: Fix configuration
Update #2843.
2018-01-22 07:21:21 +01:00
Sebastian Huber
cf2024bc8a smp03: Use floating-point tasks
This test uses sprintf().
2018-01-19 13:08:46 +01:00