Commit Graph

276 Commits

Author SHA1 Message Date
Sebastian Huber
2d75d5db4f bsps/arm: Add missing Cache Manager source file 2021-12-13 07:32:58 +01:00
Kinsey Moore
0f5fa026ec spec: Update location of cadence I2C
When the cadence I2C code was moved to a shared directory, the
references were updated but the install locations weren't. This updates
the install locations to match what out-of-tree applications expect.
2021-12-09 08:35:49 -06:00
Sebastian Huber
4c20360d72 build: Move test header to right library item 2021-12-09 13:32:30 +01:00
Sebastian Huber
0d83bed2e5 rtems: Move scheduler directives to own header
Move all rtems_scheduler_* directives to the new header file
<rtems/rtems/scheduler.h>.  Add a Scheduler Manager API and
implementation group.
2021-12-02 14:09:51 +01:00
Sebastian Huber
d7205f0083 libc: Optimize malloc() initialization
The BSPs provide memory for the separate C Program Heap initialization
via _Memory_Get().  Most BSPs provide exactly one memory area.  Only two
BSPs provide more than one memory area (arm/altera-cyclone-v and
bsps/powerpc/mpc55xxevb).  Only if more than one memory area is
provided, there is a need to use _Heap_Extend().  Provide two
implementations to initialize the separate C Program Heap and let the
BSP select one of the implementations based on the number of provided
memory areas.  This gets rid of a dependency on _Heap_Extend().  It
also avoids dead code sections for most BSPs.

Change licence to BSD-2-Clause according to file history.

Update #3053.
2021-11-30 08:33:12 +01:00
Sebastian Huber
3d0620b607 score: Optimize Workspace Handler initialization
The BSPs provide memory for the workspace initialization via
_Memory_Get().  Most BSPs provide exactly one memory area.  Only two
BSPs provide more than one memory area (arm/altera-cyclone-v and
bsps/powerpc/mpc55xxevb).  Only if more than one memory area is
provided, there is a need to use _Heap_Extend().  Provide two
implementations to initialize the workspace handler and let the BSP
select one of the implementations based on the number of provided memory
areas.  This gets rid of a dependency on _Heap_Extend().  It also avoids
dead code sections for most BSPs.
2021-11-30 08:31:59 +01:00
Sebastian Huber
2de3a6e82c build: Use common objects item for get memory 2021-11-30 08:17:29 +01:00
Sebastian Huber
0bd28daef6 score: Split wkspace.c
Splitting the file avoids unnecessary link-time dependencies.
2021-11-30 08:17:29 +01:00
Joel Sherrill
dd70c81699 bsp_specs: Delete last remnants of these.
Updates #3937.
2021-11-29 08:50:03 -06:00
Sebastian Huber
61d0df45db build: Remove trailing white space 2021-11-29 08:58:22 +01:00
Sebastian Huber
2e56aabdb1 score: Move _Thread_queue_Extract()
Move _Thread_queue_Extract() since this function is not used by the core
services (threads, semaphores, mutexes, message queues).

Update #4546.
2021-11-23 11:00:28 +01:00
Sebastian Huber
50aef135a4 score: Add _Thread_MP_Extract_proxy()
Remove _Thread_queue_Extract_with_proxy() and move the proxy extraction
to _Thread_MP_Extract_proxy().  Move similar code blocks of the previous
caller of _Thread_queue_Extract_with_proxy() to helper functions.

Update #4546.
2021-11-23 11:00:28 +01:00
Sebastian Huber
3d6ebde1ac score: Add SMP scheduler make/clean sticky
This patch fixes the following broken behaviour:

  While a thread is scheduled on a helping scheduler, while it does not
  own a MrsP semaphore, if it obtains a MrsP semaphore, then no
  scheduler node using an idle thread and the ceiling priority of the
  semaphore is unblocked for the home scheduler.

This could lead to priority inversion issues and is not in line
with the MrsP protocol.

Introduce two new scheduler operations which are only enabled if
RTEMS_SMP is defined.  The operations are used to make the scheduler
node of the home scheduler sticky and to clean the sticky property.
This helps to keep the sticky handing out of the frequently used
priority update operation.

Close #4532.
2021-11-23 11:00:28 +01:00
Sebastian Huber
577262a737 score: Add red-black tree append/prepend
These functions are a faster alternative to _RBTree_Insert_inline() if
it is known that the new node is the maximum/minimum node.

Update #4531.
2021-11-23 11:00:28 +01:00
Sebastian Huber
18484f02ad rtems: Add external functions
These external functions rtems_scheduler_get_processor() and
rtems_scheduler_get_processor_maximum() which may be used by bindings
for languages other than C/C++.
2021-11-18 20:06:17 +01:00
Sebastian Huber
f06dd3e176 build: Optional __RTEMS_MAJOR__ via command line
Update #4548.
2021-11-16 07:46:45 +01:00
Sebastian Huber
9551f340d0 Revert "optvermaj.yml: Allow __RTEMS_MAJOR__ to be overridden so RTEMS 7 tools can be tested"
This reverts commit d1bbfbea5f.
2021-11-15 11:14:12 +01:00
Sebastian Huber
240a1f79b1 score: Introduce CPU budget operations
This patch set replaces the CPU budget algorithm enumeration with a set of CPU
budget operations which implement a particular CPU budget algorithm.  This
helps to hide the CPU budget algorithm implementation details from the general
thread handling.  The CPU budget callouts are turned into CPU budget
operations.  This slightly reduces the size of the thread control block.

All schedulers used the default scheduler tick implementation.  The tick
scheduler operation is removed and the CPU budget operations are directly used
in _Watchdog_Tick() if the executing thread uses a CPU budget algorithm.  This
is performance improvement for all threads which do not use a CPU budget
algorithm (default behaviour).
2021-11-15 08:56:53 +01:00
Joel Sherrill
d1bbfbea5f optvermaj.yml: Allow __RTEMS_MAJOR__ to be overridden so RTEMS 7 tools can be tested 2021-11-12 10:02:51 -06:00
Kinsey Moore
a857a225d0 cpukit/aarch64: Add libdebugger support
This adds support for libdebugger under AArch64 using software
breakpoints and the single-step execution mode present in all AArch64
CPUs.
2021-11-01 08:39:00 -05:00
Kinsey Moore
2055e42362 aarch64: Break out MMU definitions
This moves the AArch64 MMU memory type definitions into cpukit for use
by libdebugger since remapping of memory is required to insert software
breakpoints.
2021-11-01 08:39:00 -05:00
Kinsey Moore
c5986a5520 testsuite: Add machine exception signal map test
Add a test to verify that mapping of machine exceptions to POSIX signals
operates properly when the application requests it.
2021-10-29 12:40:56 -05:00
Kinsey Moore
4812a8b572 cpukit: Add signal mapping support
This adds a confdef option allowing an application to request mapping
machine exceptions to POSIX signals. This is required for some languages
such as Ada.
2021-10-29 12:40:56 -05:00
Kinsey Moore
3fc641abca testsuite: Add machine exception resume test
Add a test to verify that intercepted exceptions can be resolved and
execution can be resumed.
2021-10-29 12:40:56 -05:00
Kinsey Moore
02377c8b8f cpukit/aarch64: Add exception extensions support
This adds the function implementations necessary to add exception
extensions support to AArch64.
2021-10-29 12:40:56 -05:00
Kinsey Moore
db9e88510d cpukit: Add exception extensions
This adds the set of functions necessary to allow more generic handling
of machine exceptions. This initial patch offers the ability to
manipulate a CPU_Exception_frame and resume execution using that
exception information with or without thread dispatch. These functions
are gated behind the RTEMS_EXCEPTION_EXTENSIONS configuration option.
2021-10-29 12:40:56 -05:00
Sebastian Huber
0221da5f56 rtems: Fix rate monotonic statistics
The rate monotonic period statistics were affected by
rtems_cpu_usage_reset().  The logic to detect and work around a CPU
usage reset was broken.

The Thread_Contol::cpu_time_used is changed to contain the processor
time used throughout the entire lifetime of the thread.  The new member
Thread_Contol::cpu_time_used_at_last_reset is added to contain the
processor time used at the time of the last reset through
rtems_cpu_usage_reset().  This decouples the resets of the CPU usage and
the rate monotonic period statistics.

Update #4528.
2021-10-25 08:01:02 +02:00
Chris Johns
3f0ad2b3b7 spec/libdebugger: Only enable for supported architectures
Closes #4533
2021-10-22 10:34:24 +11:00
Kinsey Moore
087e4ec973 spec/aarch64: Enable previously unbuildable tests
The spconfig01 and spmisc01 tests were disabled for all AArch64 BSPs due
to a toolchain issue preventing them from compiling correctly. The
binutils version that contains the fix has been released and integrated
into RSB such that these two tests now build and operate correctly.
2021-10-20 09:32:12 -05:00
Alex White
d03776e804 microblaze: Rework for RTEMS 6
This reworks the existing MicroBlaze architecture port and BSP to
achieve basic functionality using the latest RTEMS APIs.
2021-10-13 14:45:37 -05:00
Joel Sherrill
822ebb4cae Add support for IDLE Thread stack allocator
Add a stack allocator hook specifically for allocation of IDLE thread stacks.
This allows the user to decide if IDLE thread stacks are statically allocated
or handled by the same custom allocator mechanism as other thread stacks.

Closes #4524.
2021-10-11 08:42:25 -05:00
Kinsey Moore
5f652cb27e cpukit: Add AArch64 SMP Support
This adds SMP support for AArch64 in cpukit and for the ZynqMP BSPs.
2021-09-21 08:58:32 -05:00
Kinsey Moore
670a5089e2 bsps/gicv2: Allow BSPs to define IRQ attributes
ARM's GICv2 is configurable and its attributes vary between
implementations including omission of specific interrupts. This allows
BSPs to accomodate those varying implementations with customized
attribute sets.
2021-09-21 08:58:32 -05:00
Sebastian Huber
04998451b9 arm/lpc24xx: Use common test definition file 2021-09-21 07:39:09 +02:00
Sebastian Huber
cd198a5511 score: Remove unused default scheduler ops
If SMP support is enabled and the system has exactly one processor, then
it may use an uniprocessor scheduler.  The ask for help, reconsider help
request, and withdraw node operations can be NULL in this case, since
they are only used if a thread has at least one helping scheduler node.
At least two schedulers are required to get a helping node and each
scheduler involved must own at least one processor.  This is not
possible on a system with exactly one processor.
2021-09-21 07:39:09 +02:00
Sebastian Huber
0036ddf1f6 score: Provide two thread pin/unpin defaults
The uniprocessor schedulers do not support systems with more than more
processors.  So they rivially support thread pinning and thus the
SMP_FATAL_SCHEDULER_PIN_OR_UNPIN_NOT_SUPPORTED cannot happen.

Add a second default implementation for SMP schedulers which do not
support thread pinning.

Change license to BSD-2-Clause according to file history and re-licensing
agreement.

Update #3053.
2021-09-21 07:39:09 +02:00
Alex White
0490be70ee testsuites: Wrap putchar
The linker flag to wrap putchar was lost in translation from make to waf.
2021-09-16 11:11:13 +10:00
Sebastian Huber
c274009d2e build: Remove invalid attributes 2021-09-14 14:39:20 +02:00
Sebastian Huber
af722b76d2 bsps/arm: Fix ABI flags for Cortex-M4
Close #4504.
2021-09-14 07:31:28 +02:00
Stephen Clark
7792ab88ca bsps/zynqmp: Added I2C support for ZynqMP
Added I2C drivers for ZynqMP and updated build system accordingly.
2021-09-09 14:19:57 -05:00
Stephen Clark
73c182a5ed bsps/zynq: Moved general i2c files to shared directories
Certain files related to the Zynq BSP's I2C driver are useable by the ZynqMP BSP as well.
Moved these files to shared directory in anticipation of I2C support for ZynqMP.
2021-09-09 14:19:57 -05:00
Sebastian Huber
f958d58a6a score: Split up rbtreenext.c
Split up rbtreenext.c since only _RBTree_Minimum() is used by the operating
system core services (thread queues and the EDF scheduler).

Change license to BSD-2-Clause according to file history and re-licensing
agreement.

Update #3053.
2021-09-06 12:24:06 +02:00
Sebastian Huber
54b4b1f85a score: Add _TOD_Is_valid_new_time_of_day()
Move the TOD validation to the callers of _TOD_Set().  This avoids dead code in
case only rtems_clock_set() is used in an application because rtems_clock_set()
always calls _TOD_Set() with a valid time of day.
2021-09-06 12:22:44 +02:00
Sebastian Huber
c8e4de991d score: Remove TOD_TICKS_PER_SECOND_method()
Use _Watchdog_Ticks_per_second instead.
2021-09-06 12:22:44 +02:00
Sebastian Huber
fbd0a3cec3 score: Move _Thread_Dispatch()
The _Thread_Dispatch() function was customized over time and now the
work is done by _Thread_Do_dispatch() and specialized wrappers.  The
plain _Thread_Dispatch() is now only used in some CPU ports.  Move it to
a separate file to avoid dead code in the general.

Change license to BSD-2-Clause according to file history and
re-licensing agreement.

Update #3053.
2021-09-03 17:14:19 +02:00
Eshan dhawan
574cd83b5d confstr() support for RTEMS
Closes #3373

confstr() style update

Signed-off-by: Eshan Dhawan <eshandhawan51@gmail.com>
2021-08-18 09:18:56 -05:00
Sebastian Huber
ebdfa24bff build: Merge default-by-family into by-variant
Prefix the BSP family name with "bsps/" to make it distinct to the BSP
variant names.

Update #4468.
2021-08-18 11:25:35 +02:00
pranav
c71e34bee0 bsps: Move optfdt* files to shared parent directory 2021-08-09 12:14:18 -05:00
Sebastian Huber
59168e2ae3 score: Split SMP multicast action module
Split up the SMP multicast action module since the use of the SMP multicast
action variants depend on the architecture and BSP.
2021-07-29 08:05:26 +02:00
Sebastian Huber
f799b4522f score: Move per-CPU jobs support
Add percpujobs.c to contain the per-CPU jobs implementation.
2021-07-28 19:32:24 +02:00