Commit Graph

34601 Commits

Author SHA1 Message Date
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
82a61afd8c rtems: Initialize count of postponed jobs
The rtems_rate_monotonic_get_status() directive returns an arbitrary
number for the count of postponed jobs if it is called for a newly
created period object.  Set the count of postponed jobs to zero during
object creation.

Close #4511.
2021-09-09 15:05:51 +02:00
Sebastian Huber
c0435b5eb2 rtems: Document time of day constraints
Update #4338.
2021-09-06 12:41:02 +02: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
ad41c17933 score: Change TOD_LATEST_YEAR to 2099
This simplifies the implementation a bit.  Declare _TOD_Days_to_date[] in
<rtems/score/todimpl.h>.  Make _TOD_Days_per_month[] and
_TOD_Days_since_last_leap_year[] static.

Update #4338.
2021-09-06 12:24:04 +02:00
Sebastian Huber
ff3df9f32f score: Simplify _TOD_Validate()
Split up the multi line if statement into smaller parts.
2021-09-06 12:22:44 +02:00
Sebastian Huber
6d2becb78d score: Limit the CLOCK_REALTIME setting
Limit the CLOCK_REALTIME setting to ensure that the CLOCK_REALTIME is defined
for a system uptime of at least 114 years.
2021-09-06 12:22:44 +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
8abd175669 score: Return status in _TOD_Adjust() 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
Sebastian Huber
2647e76e8f score: Document thread queue operations 2021-09-03 08:21:14 +02:00
Sebastian Huber
01d22f7f79 bsps/leon3: Rename fatal error code
Rename LEON3_FATAL_INVALID_CACHE_CONFIG_MAIN_PROCESSOR in
LEON3_FATAL_INVALID_CACHE_CONFIG_BOOT_PROCESSOR since the term
"boot processor" is used elsewhere in the code base.
2021-09-02 09:22:38 +02:00
Sebastian Huber
b2c626f016 Improve test of rtems_interrupt_get_affinity()
Use a CPU set which is larger than the internal processor set
representation.
2021-09-02 08:54:58 +02:00
Sebastian Huber
a93d0ce2f5 validation: Improve generated test code
Move the transition map members of the test context to a dedicated
structure.  Move the transition variant pre-condition prepare, action,
and post-condition checks to a separate function to reduce the
indentation level and allow skipping of transition variants.
2021-09-02 08:54:58 +02:00
Sebastian Huber
34099baa9c libtest: Return fixture context in T_case_begin()
This makes it similar to T_push_fixture().
2021-09-02 08:54:58 +02:00
Christian Mauderer
e495633887 bsps/imxrt: Improve SPI driver
It wasn't possible to keep the CS line low between multiple message
descriptors in one transfer. This patch reworks the driver so that it is
possible.

Update #4180
2021-09-02 08:38:54 +02:00
Sebastian Huber
25b0fddad9 score: Update priority only if necessary
In _Thread_queue_Flush_critical(), update the priority of the thread
queue owner only if necessary.  The scheduler update priority operation
could be expensive.
2021-09-01 21:23:16 +02:00
Sebastian Huber
ac9f115bdb score: Remove _Thread_queue_Unblock_critical()
This function was only used in one place.  Replace it with a call to
_Thread_queue_Resume().
2021-09-01 21:23:16 +02:00
Sebastian Huber
317774c99a score: Remove _Thread_queue_First_locked()
The _Thread_queue_First_locked() was only used in one place.  Move the code of
this inline function to this place.
2021-09-01 21:23:16 +02:00
Sebastian Huber
d9249c9bff score: Fix blocking message queue receive
In order to ensure FIFO fairness across schedulers, the thread queue
surrender operation must be used to dequeue a thread from the thread
queue.  The thread queue extract operation is intended for timeouts.

Add _Thread_queue_Resume() which may be used to make extracted or
surrendered threads ready again.

Remove the now unused _Thread_queue_Extract_critical() function.

Close #4509.
2021-09-01 20:24:57 +02:00
Sebastian Huber
9c0591f12d score: Fix priority discipline handling
The priority queues in clustered scheduling configurations use a per
scheduler priority queue rotation to ensure FIFO fairness across
schedulers.  This mechanism is implemented in the thread queue surrender
operation.  Unfortunately some semaphore and message queue directives
used wrongly the thread queue extract operation.  Fix this through the
use of _Thread_queue_Surrender().

Update #4358.
2021-09-01 20:24:57 +02:00
Sebastian Huber
ce8f31ced5 score: Document Futex Handler
The behaviour of the futex operations is defined by Linux:

https://man7.org/linux/man-pages/man2/futex.2.html

Use EAGIN instead of EWOULDBLOCK to be in line with the Linux man page.
These error numbers have the same value in Newlib.  Using the same error
numbers helps to avoid confusion.

When you look at the history of the Linux man page you see that they
replaced EWOULDBLOCK with EAGAIN over time.  At the time of the RTEMS
futex implementation they used EWOULDBLOCK.
2021-09-01 14:14:32 +02:00
Sebastian Huber
a8235fe728 rtems: Fix partitions with RTEMS_MULIPROCESSING
Replace call to removed _Partition_Free() with a call to _Objects_Free().
2021-08-31 13:13:15 +02:00
Sebastian Huber
b0f13f3778 psxtests/psxconfstr: Fix test case
Update #3373.
2021-08-30 19:32:18 +02:00
Sebastian Huber
30570b49c5 smpfatal01: Fix test time out on sparc/leon3
End the test on the processor which triggers the test condition.  This avoids
endless power down loops in the sparc/leon3 BSP.
2021-08-30 18:27:48 +02:00
Chris Johns
8f3973fe8d libmisc/shell: Check the shell command pointers when adding a command 2021-08-21 12:49:36 +10:00
Chris Johns
4dc81f65c7 libmisc/fdt: fix node initialise error with RTEMS_DEBUG 2021-08-21 12:46:32 +10:00
Chris Johns
522db76a96 cpukit/mghttpd: Support all descriptors in select
- Support all possible descriptors in a select call. Borrowed
  from Christain and his mDNS change in LibBSD

- If select (or poll) fails pause for a bit rather than
  locking up in a hard loop
2021-08-19 08:51:39 +10:00
Chris Johns
de14073960 aarch64/versal: Enable TX and RX FIFOs
- Wait for the tx holding register to empty in a tx flush
2021-08-19 08:47:30 +10:00
pranav
1c06068196 bsps/raspberrypi: Add SEV Instruction for RPi SMP firmware changes.
The Pi firmware added a wfe(wait for event), the cores 1-3 wait
for the start address being written to the mailbox register, followed
by a SEV poke to the mailbox that acts as a wfe wake-up event.
2021-08-18 13:50:34 -05: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
1dff0a382d score: Delete unused rtems_ada_self 2021-08-18 13:36:02 +02:00
Sebastian Huber
d433690591 score: Make zombie registry observable
This helps to write tests for _Thread_Wait_for_execution_stop().

Rename Thread_Zombie_control in Thread_Zombie_registry.
2021-08-18 13:36:02 +02:00
Sebastian Huber
923a922e01 score: Simplify _Thread_Kill_zombies() 2021-08-18 13:36:02 +02:00
Sebastian Huber
2f45324bb8 score: Simplify _Per_CPU_Wait_for_job()
The _SMP_Fatal() is a no-return function, so the "break" statement is
superfluous.
2021-08-18 13:36:02 +02:00
Sebastian Huber
7e85f4d6ca score: Simplify _Thread_Create_idle_for_CPU()
Online processors have a scheduler assigned.
2021-08-18 13:36:02 +02: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
Sebastian Huber
75af5be6a8 bsp/leon3: Fix rtems_interrupt_is_pending()
Take the interrupt force register into account in all configurations.

Update #3269.
2021-08-12 21:06:39 +02:00
Sebastian Huber
0a69ce0fb4 score: Simplify _Scheduler_Tick()
The NULL pointer check for the executing thread was introduced by
commit:

commit be3c257286
Author: Sebastian Huber <sebastian.huber@embedded-brains.de>
Date:   Thu Jun 5 11:17:26 2014 +0200

    score: Avoid NULL pointer access

    Check that the executing thread is not NULL in _Scheduler_Tick().  It
    may be NULL in case the processor has an optional scheduler assigned and
    the system was not able to start the processor.

However, it is no longer necessary since now the clock interrupt is
distributed to the online processors.
2021-08-12 21:00:05 +02:00
Sebastian Huber
a0ec14ca22 score: Replace the single use of a sequence lock
In SMP configurations, on 64-bit architectures use plain atomic
operations to set/get the priority value of a scheduler node.  On 32-bit
architectures use an ISR lock.  Using a sequence lock has no real
benefit since it uses atomic read-modify-write operations for both the
read and the write lock.  Simply use a ticket lock instead so that only
one SMP synchronization primitive is used for everything.
2021-08-12 21:00:05 +02:00
Sebastian Huber
a5aaf20a2d score: Replace priority prepend it with an enum
Use the new Priority_Group_order enum instead of a boolean to indicated if a
priority should be inserted as the first or last node into its priority group.
This makes the code more expressive.  It is also a bit more efficient since a
branch in _Scheduler_Node_set_priority() is avoided and a simple bitwise or
operation can be used.
2021-08-12 20:58:26 +02:00
Sebastian Huber
9399e12c21 rtems: Fix rtems_partition_return_buffer()
The rtems_partition_return_buffer() wrongly accepted which were exactly
at the buffer area end.  Use the buffer area limit address for the range
checking.

Close #4490.
2021-08-12 10:09:04 +02:00
Sebastian Huber
59472042ec bsps/arm: More robust SMP start
Do not continue execution on processors which are not configured to prevent the
use of arbitrary memory for the initialization stack.
2021-08-12 10:04:11 +02:00
Zacchaeus Leung
8df57649b0 Test needed for timer_create with CLOCK_MONOTONC
the timer_create() method can use CLOCK_MONOTONIC
but there was  no test for this.
Also it implements the functionality to
create a CLOCK_MONOTONIC timer and gettime() .
Closes #3888
2021-08-11 11:47:11 -05:00
pranav
c71e34bee0 bsps: Move optfdt* files to shared parent directory 2021-08-09 12:14:18 -05:00
Joel Sherrill
6199de889d Turn off executable permissions for a number of source files
Cloning under Cygwin turned off executable permission on these
files. This shows them as modified even though they have not
explicitly been touched. Executable permission should not have
been on for these files so this is just a minor clean up.
2021-08-09 10:08:17 -05:00